Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/10/2006, 21:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Cita:
$sql = "SELECT usuario,password FROM usuarios WHERE usuario='$_POST[user]'";
¡Jamás hagas algo así sin validar el contenido del campo!
Imaginate que en el campo "user" se me ocurra escribir algo como:
' OR 1=1

¿logras ver cómo quedaría la consulta?
"SELECT usuario,password FROM usuarios WHERE usuario='' OR 1=1"

Es decir, siempre devuelve resultados.

Por otro lado, creo que el problema del usuario vacío o de cualquiera es el siguiente:
Como no encuentra resultados, $row[password] no está definida. Se puede asumir entonces que está vacía. Y si $_POST[pass] está vacía, pues
vacía == vacía
y por eso entra en el if, en vez de saltar al else.

Soluciones:
1.- comprobá que haya un resultado (y solo 1)
2.- NO incluyas en la consulta SQL el valor que te pasan del formulario. Antes de eso revisalo con una expresión regular ( ereg() ), en las faq podés encontrar algo sobre eso. si no me equivoco lo que necesitás es algo como:

ereg("[^a-zA-Z0-9]", $_POST['user'])

que devuelve verdadero si encuentra un caracter que no sea número o letra.


Saludos.