que opinas de este método para PHP?
consiste en comprobar si los caracteres que introducimos en los campos de formularios se encuentran todos en una lista (a-zA-Z0-9), y en caso de que algun caracter no aparezca en esa lista lanzamos el error y no ejecutamos la consulta/inserción ...
Qué opinas ??? crees que esto mantendrá a salvo ?
function comprobar_nombre_usuario($nombre_usuario){
//compruebo que el tamaño del string sea válido.
if (strlen($nombre_usuario)<3 || strlen($nombre_usuario)>20){
echo $nombre_usuario . " no es válido<br>";
return false;
}
//compruebo que los caracteres sean los permitidos
$permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for ($i=0; $i<strlen($nombre_usuario); $i++){
if (strpos($permitidos, substr($nombre_usuario,$i,1))===false){
echo $nombre_usuario . " no es válido<br>";
return false;
}
}
echo $nombre_usuario . " es válido<br>";
return true;
}
No, lo mejor es que uses preg_match:
El nick<?
$nick = '´s.-dasdPOAeru0203842u3482947thwef';
if(!preg_match('/^([a-z0-9_\-]{3,20})$/i', $nick)){
echo ' no ';
}else{
echo ' si ';
}
?>es válido.
Es el mejor modo para filtrar un nick.
Ahora, si quieres evitar el SQLi, lo mejor es filtrar CADA dato que te da el usuario con mysql_real_escape_string:
<?
mysql_query("SELECT * FROM usuarios WHERE nick = '".mysql_real_escape_string($_GET['nick'])."'");
?>
Con eso estás protegido. =)
que fallos le ves a mi método ?
up