Programación Web y Scripting > PHP

 Crear Login Y Registro

(1/5) > >>

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=='&#036;_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 ---&#34;select nombre,clave usuarios from usuarios WHERE nombre='&#036;_REQUEST[nombre]'&#34; 

Ejemplo:


--- Código: Text ---&#60;html&#62;&#60;body&#62;&#60;?php&#036;con=mysql_connect(&#34;HOST&#34;,&#34;USER&#34;,&#34;PASS&#34;);mysql_select_db(&#34;prueba&#34;,&#036;con);&#036;reg= mysql_query(&#34;select nombre,clave usuarios from usuarios WHERE nombre='&#036;_REQUEST[nombre]&#34;,&#036;con); if (&#036;reg){    &#036;el_usuario=mysql_fetch_array(&#036;reg);     if (&#036;el_usuario[1]==&#036;_REQUEST['clave'])    {         echo &#34;Sus datos son correctos&#34;;         echo &#34;&#60;br /&#62;&#34;;         echo &#34;En breve sera redirigido al guestbook&#34;;      }   else      {           echo &#34;sus datos son incorrectos&#34;;      }}else  {      //echo mysql_error(); #solo para debug   }?&#62;&#60;/body&#62;&#60;/html&#62;  
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 --- &#036;el_usuario=mysql_fetch_array(&#036;reg);  if (&#036;el_usuario[1]==&#036;_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='&#036;_REQUEST[nombre]'&#34; 
Y estas consultanod por el nombre, o me equivoco?

Te comento que recien hize el codigo asi y lo probe:


--- Código: Text ---&#60;html&#62;&#60;body&#62;&#60;?php&#036;con=mysql_connect(&#34;localhost&#34;,&#34;user&#34;,&#34;pass&#34;);mysql_select_db(&#34;prueba&#34;,&#036;con);&#036;reg= mysql_query(&#34;select nombre,clave from usuarios where nombre='&#036;_REQUEST[nombre]' and clave='&#036;_REQUEST[clave]'&#34;,&#036;con);if(&#036;reg){&#036;usuario=mysql_fetch_array(&#036;reg);if (&#036;usuario[1]==&#036;_REQUEST['clave'] && &#036;usuario[1]==&#036;_REQUEST['nombre']){echo &#34;Sus datos son correctos&#34;;        echo &#34;&#60;br /&#62;&#34;;        echo &#34;En breve sera redirigido al guestbook&#34;;} else{echo &#34;sus datos son incorrectos&#34;;}}else {     //echo mysql_error(); #solo para debug  }?&#62;&#60;/body&#62;&#60;/html&#62; 
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 --- &#036;el_usuario=mysql_fetch_array(&#036;reg);  if (&#036;el_usuario[1]==&#036;_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='&#036;_REQUEST[nombre]'&#34; 
Y estas consultanod por el nombre, o me equivoco?

Te comento que recien hize el codigo asi y lo probe:


--- Código: Text ---&#60;html&#62;&#60;body&#62;&#60;?php&#036;con=mysql_connect(&#34;localhost&#34;,&#34;user&#34;,&#34;pass&#34;);mysql_select_db(&#34;prueba&#34;,&#036;con);&#036;reg= mysql_query(&#34;select nombre,clave from usuarios where nombre='&#036;_REQUEST[nombre]' and clave='&#036;_REQUEST[clave]'&#34;,&#036;con);if(&#036;reg){&#036;usuario=mysql_fetch_array(&#036;reg);if (&#036;usuario[1]==&#036;_REQUEST['clave'] && &#036;usuario[1]==&#036;_REQUEST['nombre']){echo &#34;Sus datos son correctos&#34;;        echo &#34;&#60;br /&#62;&#34;;        echo &#34;En breve sera redirigido al guestbook&#34;;} else{echo &#34;sus datos son incorrectos&#34;;}}else {     //echo mysql_error(); #solo para debug  }?&#62;&#60;/body&#62;&#60;/html&#62; 
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 (&#036;el_usuario[1]==&#036;_REQUEST['clave']) 
tambien puedes usar (si usas mysql_fetch_array)


--- Código: Text ---if (&#036;el_usuario['clave']==&#036;_REQUEST['clave']) 
una opcion seria usar mysql_num_rows


--- Código: Text ---if(&#036;reg){     if (@mysql_num_rows(&#036;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 ---&#036;usuario=mysql_fetch_array(&#036;reg);if (&#036;usuario[0]==&#036;_REQUEST['nombre'] && &#036;usuario[1]==&#036;_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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa