¿Validar la longitud de las URL, las letras mayúsculas y ciertas palabras completas?
Frecuentes
Visto 113 veces
1
Tengo un poco de código que toma la URL que alguien elige al registrarse en mi aplicación y la verifica. Pero me gustaría agregarle las siguientes restricciones.
- Debe tener al menos 3 letras
- Sin letras mayúsculas
- No hay ciertas palabras "administrador, soporte, etc..."
Esto es lo que tengo hasta ahora, pero ahora solo está buscando letras especiales:
elseif($action == "validate"){
$option = $_GET["option"];
$value = $_GET["value"];
switch($option){
case "URL":
$sql = mysql_select_db($value,$connect);
if(preg_match ( "@[^A-Za-z0-9]+@i", $value ) > 0) { $valid = "FALSE"; continue; }
$sql == 1 ? $valid = "FALSE" : $valid = "TRUE";
}
2 Respuestas
1
if(preg_match("@^[a-z0-9]{3,25}$@", $value ) && (!preg_match("@admin|support|anything else@",$value))) {
//Restrict the word length to 25 characters at max, 3 at least.
//Do some stuff. The $value meets the requirements as set forth
...
}
contestado el 22 de mayo de 12 a las 19:05
Gracias, por alguna razón usaste && en lugar de || ? ¿Sólo me preguntaba? - William H
@WilliamH, porque debe cumplir con todas las condiciones para ser válido: Soy papá
@WilliamH Si usas el ||
(o) operador, entonces el comportamiento esperado no ocurrirá (restringir el $value
a la longitud y los caracteres, Y DE asegúrese de que no sea una palabra reservada o denegada) - PenguinCoder
No funcionará del todo, ya que el primer preg_match coincidirá con caracteres no alfanuméricos. deberías hacerlo preg_match("@[a-z0-9]{3,25}$@", $value)
para hacer coincidir solo az minúsculas y números 0-9 (como se menciona en los comentarios sobre la pregunta) de 3 a 25 letras. - saludar
@saluce Arregló mi clase de personaje. - PenguinCoder
0
elseif($action == "validate"){
$option = $_GET["option"];
$value = $_GET["value"];
switch($option){
case "URL":
$sql = mysql_select_db($value,$connect);
if(preg_match ( "@[^A-Za-z0-9]+@i", $value ) > 0) { $valid = "FALSE"; continue; }
if(strlen($value) <= 3) { $valid = "FALSE"; continue; } //less than 3 char
if(strstr($value, 'admin')) { $valid = "FALSE"; continue; }
//.. the same for your other words
$sql == 1 ? $valid = "FALSE" : $valid = "TRUE";
}
contestado el 22 de mayo de 12 a las 18:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php javascript regex or haz tu propia pregunta.
¿Por qué está utilizando literales de cadena para su
true
yfalse
? - NaftaliEs parte de la validación del formulario si es un valor FALSO, el formulario del usuario lo recoge y le da al usuario la oportunidad de cambiarlo. Por qué ? :) - William H
@saluce sí, los números están bien - William H
La "i" después del delimitador de patrón indica una búsqueda que no distingue entre mayúsculas y minúsculas, por lo tanto, no es necesario hacer tanto AZ como az en su clase de caracteres regex, que yo sepa. - dqhendricks