Programación Web y Scripting > PHP
Crear Login Y Registro
Krosty:
Buen aca va mi duda.
Lo que pasa es que estoy aprendiendo php y mysql, y se me ocurrio hacer un login de esta manera pero no va, aver si ustedes saben que esta mal.
--- Código: Text ---<html><body><?php$con=mysql_connect("HOST","USER","PASS");mysql_select_db("prueba",$con);$reg= mysql_query("select from usuarios (nombre,clave usuarios) where nombre='$_REQUEST[nombre]' and clave=='$_REQUEST[clave]'",$con);if($reg==mysql_fetch_array){echo "Sus datos son correctos";echo "<br>";echo "En breve sera redirigido al guestbook";} else{sus datos son incorrectos}?></body></html>
Espero respuestas
gracias
Salu2
F_Tanori:
la consulta esta incorrecta
--- Citar ---$reg= mysql_query("select from usuarios (nombre,clave usuarios) where nombre='$_REQUEST[nombre]' and clave=='$_REQUEST[clave]'",$con);
--- Fin de la cita ---
Ejemplo:
La sintaxis del Select es la siguiente
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]SELECT[/color] [* | LISTACAMPOS] FROM [TABLA | TABLAS] [WHERE Condicion] <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
tu tienes los campos despues de la tabla
--- Citar ---select from usuarios (nombre,clave usuarios)
--- Fin de la cita ---
1 - Seria asi... ( no hay necesidad de usar parentesis en este caso)
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]select[/color] nombre,clave usuarios from usuarios <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
2 - en SQL no se utiliza el operador == (identico) simplemente se usa el = (igual)
--- Código: Text ---....and clave=='$_REQUEST[clave]'
yo te recomendaria no comparar el password a traves de SQL seria mejor extraer el usuario por SQL y luego comparar el password en PHP
--- Código: Text ---"select nombre,clave usuarios from usuarios WHERE nombre='$_REQUEST[nombre]'"
Ejemplo:
--- Código: Text ---<html><body><?php$con=mysql_connect("HOST","USER","PASS");mysql_select_db("prueba",$con);$reg= mysql_query("select nombre,clave usuarios from usuarios WHERE nombre='$_REQUEST[nombre]",$con); if ($reg){ $el_usuario=mysql_fetch_array($reg); if ($el_usuario[1]==$_REQUEST['clave']) { echo "Sus datos son correctos"; echo "<br />"; echo "En breve sera redirigido al guestbook"; } else { echo "sus datos son incorrectos"; }}else { //echo mysql_error(); #solo para debug }?></body></html>
Se habia repetido el mensaje :P listo...
Saludos
Krosty:
Gracias por tu respuesta.
Ahora si no quisiera compararlo en php y directamente seria por mysql como lo compararia, luego del "mysql_query (select" quee otra cosa haria para comparar?
Y sobre comprar en php, un par de dudas:
--- Código: Text --- $el_usuario=mysql_fetch_array($reg); if ($el_usuario[1]==$_REQUEST['clave'])
Aca me estarias comparando el "nombre" con la "clave" ya que aca pusistes:
--- Código: Text ---select nombre,clave usuarios from usuarios WHERE nombre='$_REQUEST[nombre]'"
Y estas consultanod por el nombre, o me equivoco?
Te comento que recien hize el codigo asi y lo probe:
--- Código: Text ---<html><body><?php$con=mysql_connect("localhost","user","pass");mysql_select_db("prueba",$con);$reg= mysql_query("select nombre,clave from usuarios where nombre='$_REQUEST[nombre]' and clave='$_REQUEST[clave]'",$con);if($reg){$usuario=mysql_fetch_array($reg);if ($usuario[1]==$_REQUEST['clave'] && $usuario[1]==$_REQUEST['nombre']){echo "Sus datos son correctos"; echo "<br />"; echo "En breve sera redirigido al guestbook";} else{echo "sus datos son incorrectos";}}else { //echo mysql_error(); #solo para debug }?></body></html>
Y va perfecto ESEPTO que si dejas en blanco los 2 campos es decir nombre y clave, entra perfectamente, en cambio deberia de decir que no existe xD
Porque entra si se deja en blanco :S ?
Salu2 y nuevamente gracias por su ayuda.
F_Tanori:
--- Cita de: "Krosty" ---Gracias por tu respuesta.
Ahora si no quisiera compararlo en php y directamente seria por mysql como lo compararia, luego del "mysql_query (select" quee otra cosa haria para comparar?
Y sobre comprar en php, un par de dudas:
--- Código: Text --- $el_usuario=mysql_fetch_array($reg); if ($el_usuario[1]==$_REQUEST['clave'])
Aca me estarias comparando el "nombre" con la "clave" ya que aca pusistes:
--- Código: Text ---select nombre,clave usuarios from usuarios WHERE nombre='$_REQUEST[nombre]'"
Y estas consultanod por el nombre, o me equivoco?
Te comento que recien hize el codigo asi y lo probe:
--- Código: Text ---<html><body><?php$con=mysql_connect("localhost","user","pass");mysql_select_db("prueba",$con);$reg= mysql_query("select nombre,clave from usuarios where nombre='$_REQUEST[nombre]' and clave='$_REQUEST[clave]'",$con);if($reg){$usuario=mysql_fetch_array($reg);if ($usuario[1]==$_REQUEST['clave'] && $usuario[1]==$_REQUEST['nombre']){echo "Sus datos son correctos"; echo "<br />"; echo "En breve sera redirigido al guestbook";} else{echo "sus datos son incorrectos";}}else { //echo mysql_error(); #solo para debug }?></body></html>
Y va perfecto ESEPTO que si dejas en blanco los 2 campos es decir nombre y clave, entra perfectamente, en cambio deberia de decir que no existe xD
Porque entra si se deja en blanco :S ?
Salu2 y nuevamente gracias por su ayuda.
--- Fin de la cita ---
mysql_fetch_array en este caso devuelve un arreglo que representa el registro
y la posicion inicial es 0
entonces
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]select[/color] nombre,clave usuarios from usuarios WHERE nombre='$_REQUEST[nombre]'" <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
nombre es 0
clave es 1
--- Código: Text ---if ($el_usuario[1]==$_REQUEST['clave'])
tambien puedes usar (si usas mysql_fetch_array)
--- Código: Text ---if ($el_usuario['clave']==$_REQUEST['clave'])
una opcion seria usar mysql_num_rows
--- Código: Text ---if($reg){ if (@mysql_num_rows($reg)==1) { # el usuario existe } }
Corresponde a ti adaptarlo :P
Saludos
Krosty:
Gracias por tu respuesta.
Lo que hize fue editar el codigo anterior y puse asi:
--- Código: Text ---$usuario=mysql_fetch_array($reg);if ($usuario[0]==$_REQUEST['nombre'] && $usuario[1]==$_REQUEST['clave']){
Pero sigue igual va todo bien, pero si dejo los 2 espacios en blanco logea :S
Es como que existiera en la DB un usuario en blanco.
Nose :S
Salu2
Navegación
[#] Página Siguiente
Ir a la versión completa