Buenas, llevo poco tiempo programando en php... pero me interesa bastante el tema y obviamente quiero seguir avanzando es por eso que quiero hacer un aporte con el foro por que aquí vi mis primeros detalles.
El script que coloco a continuación es para validar formularios, para prohibir el uso de ciertos caracteres por ejemplo #,$,&,%,etc...
<form>
<input type="text" name="user"/>
<input type="submit" value="Enviar"/>
</form>
<?php
$no_valido=array('>','<','%','/','#','?','*','+','¡','"','=','¿',')','(','{','}', '$','[',']','!');
//Aquí coloco los caracteres que no quiero que se escriban en el input="text".
$var=$_POST["user"];
for($i=0;$i<20;$i++){
//ocupamos el bucle "for" para hacer que el arreglo $no_valido[] cambie su valor.
$result=str_replace($no_valido[$i],"incorrecto",$var);
//Definimos la variable $result en la cual se remplazara algún valor igual $no_valido[] por la palabra "incorrecto" en la variable $var que seria el campo de texto que escribio el usuario en nuestro formulario.
$num=strlen($var);
//contamos la cantidad de caracteres que tiene nuestra variable inicial $var
$num2=strlen($result);
//y la comparamos con la variable $result que es la misma variable $var pero el remplazo "incorrecto" en caso de que se haya encontrado un valor igual a los que contiene el arreglo $no_valido
if($num!=$num2){
$adver=TRUE;
}
//Ahora comparamos los la longitud de la variable inicial($var) con la final($result) y si obviamente son distintas las longitudes el usuario escribio algún carácter puesto en el arreglo.
}
if($adver){
echo "Se ingresaron caracteres no permitidos, intente usar letras y/o numeros.";
}
//se imprime el mensaje de arriba.
elseif(!$adver){
echo "Todo ok.";
//si no detecto ningún carácter del arreglo el mensaje esta limpio.
}
?>
Ejemplo final: Si el usuario en el campo de texto escribió de nombre de usuario: "NewUser"
el script compara $var="NewUser" y $result("NewUser") en logintudes.
Si el usuario hubiera puesto "New>User"
el programa remplazaria el caracter ">" por incorrecto
y compararia NewUser=NewincorrectoUser
por lo tanto como no tiene la misma longitud el programa entiende que se uso un caracter prohibido.
eso seria todo xD
Aqui este el script limpio:
<?php
$no_valido=array('>','<','%','/','#','?','*','+','¡','"','=','¿',')','(','{','}', '$','[',']','!');
$var=$_POST["user"];
for($i=0;$i<20;$i++){
$result=str_replace($no_valido[$i],"incorrecto",$var);
$num=strlen($var);
$num2=strlen($result);
if($num!=$num2){
$adver=TRUE;
}
}
if($adver){
echo "Se ingresaron caracteres no permitidos, intente usar letras y/o numeros.";
}
elseif(!$adver){
echo "Todo ok.";
}
?>
Saludos!
El script que coloco a continuación es para validar formularios, para prohibir el uso de ciertos caracteres por ejemplo #,$,&,%,etc...
<form>
<input type="text" name="user"/>
<input type="submit" value="Enviar"/>
</form>
<?php
$no_valido=array('>','<','%','/','#','?','*','+','¡','"','=','¿',')','(','{','}', '$','[',']','!');
//Aquí coloco los caracteres que no quiero que se escriban en el input="text".
$var=$_POST["user"];
for($i=0;$i<20;$i++){
//ocupamos el bucle "for" para hacer que el arreglo $no_valido[] cambie su valor.
$result=str_replace($no_valido[$i],"incorrecto",$var);
//Definimos la variable $result en la cual se remplazara algún valor igual $no_valido[] por la palabra "incorrecto" en la variable $var que seria el campo de texto que escribio el usuario en nuestro formulario.
$num=strlen($var);
//contamos la cantidad de caracteres que tiene nuestra variable inicial $var
$num2=strlen($result);
//y la comparamos con la variable $result que es la misma variable $var pero el remplazo "incorrecto" en caso de que se haya encontrado un valor igual a los que contiene el arreglo $no_valido
if($num!=$num2){
$adver=TRUE;
}
//Ahora comparamos los la longitud de la variable inicial($var) con la final($result) y si obviamente son distintas las longitudes el usuario escribio algún carácter puesto en el arreglo.
}
if($adver){
echo "Se ingresaron caracteres no permitidos, intente usar letras y/o numeros.";
}
//se imprime el mensaje de arriba.
elseif(!$adver){
echo "Todo ok.";
//si no detecto ningún carácter del arreglo el mensaje esta limpio.
}
?>
Ejemplo final: Si el usuario en el campo de texto escribió de nombre de usuario: "NewUser"
el script compara $var="NewUser" y $result("NewUser") en logintudes.
Si el usuario hubiera puesto "New>User"
el programa remplazaria el caracter ">" por incorrecto
y compararia NewUser=NewincorrectoUser
por lo tanto como no tiene la misma longitud el programa entiende que se uso un caracter prohibido.
eso seria todo xD
Aqui este el script limpio:
<?php
$no_valido=array('>','<','%','/','#','?','*','+','¡','"','=','¿',')','(','{','}', '$','[',']','!');
$var=$_POST["user"];
for($i=0;$i<20;$i++){
$result=str_replace($no_valido[$i],"incorrecto",$var);
$num=strlen($var);
$num2=strlen($result);
if($num!=$num2){
$adver=TRUE;
}
}
if($adver){
echo "Se ingresaron caracteres no permitidos, intente usar letras y/o numeros.";
}
elseif(!$adver){
echo "Todo ok.";
}
?>
Saludos!