• Sábado 20 de Abril de 2024, 00:11

Autor Tema:  Crear Login Y Registro  (Leído 4936 veces)

Krosty

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Crear Login Y Registro
« en: Sábado 20 de Octubre de 2007, 03:53 »
0
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
  1. <html>
  2. <body>
  3. <?php
  4. $con=mysql_connect("HOST","USER","PASS");
  5. mysql_select_db("prueba",$con);
  6. $reg= mysql_query("select from usuarios (nombre,clave usuarios) where nombre='$_REQUEST[nombre]' and clave=='$_REQUEST[clave]'",$con);
  7. if($reg==mysql_fetch_array)
  8. {
  9. echo "Sus datos son correctos";
  10. echo "<br>";
  11. echo "En breve sera redirigido al guestbook";
  12. }
  13.  
  14. else
  15. {
  16. sus datos son incorrectos
  17. }
  18. ?>
  19. </body>
  20. </html>
  21.  

Espero respuestas
gracias
Salu2

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #1 en: Sábado 20 de Octubre de 2007, 06:05 »
0
la consulta esta incorrecta

Citar
$reg= mysql_query("select from usuarios (nombre,clave usuarios) where nombre='$_REQUEST[nombre]' and clave=='$_REQUEST[clave]'",$con);

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)

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
  1. ....and clave=='&#036;_REQUEST[clave]'
  2.  


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


Ejemplo:

Código: Text
  1. &#60;html&#62;
  2. &#60;body&#62;
  3. &#60;?php
  4. &#036;con=mysql_connect(&#34;HOST&#34;,&#34;USER&#34;,&#34;PASS&#34;);
  5. mysql_select_db(&#34;prueba&#34;,&#036;con);
  6. &#036;reg= mysql_query(&#34;select nombre,clave usuarios from usuarios WHERE nombre='&#036;_REQUEST[nombre]&#34;,&#036;con);
  7.  
  8. if (&#036;reg)
  9. {
  10.     &#036;el_usuario=mysql_fetch_array(&#036;reg);
  11.    
  12.   if (&#036;el_usuario[1]==&#036;_REQUEST['clave'])
  13.     {
  14.          echo &#34;Sus datos son correctos&#34;;
  15.          echo &#34;&#60;br /&#62;&#34;;
  16.          echo &#34;En breve sera redirigido al guestbook&#34;;
  17.       }
  18.    else
  19.       {
  20.            echo &#34;sus datos son incorrectos&#34;;
  21.       }
  22. }
  23. else
  24.   {
  25.       //echo mysql_error(); #solo para debug
  26.    }
  27. ?&#62;
  28. &#60;/body&#62;
  29. &#60;/html&#62;
  30.  
  31.  

Se habia repetido el mensaje :P  listo...

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Krosty

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #2 en: Sábado 20 de Octubre de 2007, 07:22 »
0
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
  1.  &#036;el_usuario=mysql_fetch_array(&#036;reg);
  2.  
  3.  if (&#036;el_usuario[1]==&#036;_REQUEST['clave'])
  4.  

Aca me estarias comparando el "nombre" con la "clave" ya que aca pusistes:

Código: Text
  1. select nombre,clave usuarios from usuarios WHERE nombre='&#036;_REQUEST[nombre]'&#34;
  2.  

Y estas consultanod por el nombre, o me equivoco?

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

Código: Text
  1. &#60;html&#62;
  2. &#60;body&#62;
  3. &#60;?php
  4. &#036;con=mysql_connect(&#34;localhost&#34;,&#34;user&#34;,&#34;pass&#34;);
  5. mysql_select_db(&#34;prueba&#34;,&#036;con);
  6. &#036;reg= mysql_query(&#34;select nombre,clave from usuarios where nombre='&#036;_REQUEST[nombre]' and clave='&#036;_REQUEST[clave]'&#34;,&#036;con);
  7. if(&#036;reg)
  8. {
  9. &#036;usuario=mysql_fetch_array(&#036;reg);
  10. if (&#036;usuario[1]==&#036;_REQUEST['clave'] && &#036;usuario[1]==&#036;_REQUEST['nombre'])
  11. {
  12. echo &#34;Sus datos son correctos&#34;;
  13.         echo &#34;&#60;br /&#62;&#34;;
  14.         echo &#34;En breve sera redirigido al guestbook&#34;;
  15. }
  16.  
  17. else
  18. {
  19. echo &#34;sus datos son incorrectos&#34;;
  20. }
  21. }
  22. else
  23.  {
  24.      //echo mysql_error(); #solo para debug
  25.   }
  26. ?&#62;
  27. &#60;/body&#62;
  28. &#60;/html&#62;
  29.  

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

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #3 en: Sábado 20 de Octubre de 2007, 10:46 »
0
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
  1.  &#036;el_usuario=mysql_fetch_array(&#036;reg);
  2.  
  3.  if (&#036;el_usuario[1]==&#036;_REQUEST['clave'])
  4.  

Aca me estarias comparando el "nombre" con la "clave" ya que aca pusistes:

Código: Text
  1. select nombre,clave usuarios from usuarios WHERE nombre='&#036;_REQUEST[nombre]'&#34;
  2.  

Y estas consultanod por el nombre, o me equivoco?

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

Código: Text
  1. &#60;html&#62;
  2. &#60;body&#62;
  3. &#60;?php
  4. &#036;con=mysql_connect(&#34;localhost&#34;,&#34;user&#34;,&#34;pass&#34;);
  5. mysql_select_db(&#34;prueba&#34;,&#036;con);
  6. &#036;reg= mysql_query(&#34;select nombre,clave from usuarios where nombre='&#036;_REQUEST[nombre]' and clave='&#036;_REQUEST[clave]'&#34;,&#036;con);
  7. if(&#036;reg)
  8. {
  9. &#036;usuario=mysql_fetch_array(&#036;reg);
  10. if (&#036;usuario[1]==&#036;_REQUEST['clave'] && &#036;usuario[1]==&#036;_REQUEST['nombre'])
  11. {
  12. echo &#34;Sus datos son correctos&#34;;
  13.         echo &#34;&#60;br /&#62;&#34;;
  14.         echo &#34;En breve sera redirigido al guestbook&#34;;
  15. }
  16.  
  17. else
  18. {
  19. echo &#34;sus datos son incorrectos&#34;;
  20. }
  21. }
  22. else
  23.  {
  24.      //echo mysql_error(); #solo para debug
  25.   }
  26. ?&#62;
  27. &#60;/body&#62;
  28. &#60;/html&#62;
  29.  

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.
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
  1. if (&#036;el_usuario[1]==&#036;_REQUEST['clave'])
  2.  

tambien puedes usar (si usas mysql_fetch_array)

Código: Text
  1. if (&#036;el_usuario['clave']==&#036;_REQUEST['clave'])
  2.  

una opcion seria usar mysql_num_rows

Código: Text
  1. if(&#036;reg)
  2. {
  3.      if (@mysql_num_rows(&#036;reg)==1)
  4.      {
  5.         # el usuario existe
  6.      }
  7.  }
  8.  

Corresponde a ti adaptarlo :P

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Krosty

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #4 en: Sábado 20 de Octubre de 2007, 17:29 »
0
Gracias por tu respuesta.

Lo que hize fue editar el codigo anterior y puse asi:

Código: Text
  1. &#036;usuario=mysql_fetch_array(&#036;reg);
  2. if (&#036;usuario[0]==&#036;_REQUEST['nombre'] && &#036;usuario[1]==&#036;_REQUEST['clave'])
  3. {
  4.  

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

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #5 en: Domingo 21 de Octubre de 2007, 11:22 »
0
comprueba que no esten vacios

Puedes hacerlo con la funcion empty de php, o comparar si es Null o si esta inicializada isset

Código: Text
  1. if (!empty (&#036;_REQUEST['nombre']) && !empty (&#036;_REQUEST['clave']) )
  2. {
  3.        &#036;usuario=mysql_fetch_array(&#036;reg);
  4.        if (&#036;usuario[0]==&#036;_REQUEST['nombre'] && &#036;usuario[1]==&#036;_REQUEST['clave'])
  5.            {
  6.            }
  7.  
  8.  
  9. }
  10.  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Krosty

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #6 en: Domingo 21 de Octubre de 2007, 20:51 »
0
Yeah quedo ;)
Muchas gracias mira:

Código: Text
  1. &#60;html&#62;
  2. &#60;body&#62;
  3. &#60;?php
  4. &#036;con=mysql_connect(&#34;localhost&#34;,&#34;USER&#34;,&#34;PASS&#34;);
  5. mysql_select_db(&#34;prueba&#34;,&#036;con);
  6. &#036;reg= mysql_query(&#34;select nombre,clave from usuarios where nombre='&#036;_REQUEST[nombre]' and clave='&#036;_REQUEST[clave]'&#34;,&#036;con);
  7. if (!empty (&#036;_REQUEST['nombre']) && !empty (&#036;_REQUEST['clave']) )
  8. {
  9. &#036;usuario=mysql_fetch_array(&#036;reg);
  10. if (&#036;usuario[0]==&#036;_REQUEST['nombre'] && &#036;usuario[1]==&#036;_REQUEST['clave'])
  11. {
  12. echo &#34;Sus datos son correctos&#34;;
  13.         echo &#34;&#60;br /&#62;&#34;;
  14.         echo &#34;En breve sera redirigido al guestbook&#34;;
  15. }
  16.  else
  17. {
  18. echo &#34;sus datos son incorrectos&#34;;
  19. }
  20. }
  21. else
  22. {
  23. echo &#34;Sus campos estan vacios&#34;;
  24. }
  25. ?&#62;
  26. &#60;/body&#62;
  27. &#60;/html&#62;
  28.  

Me quedo una duda sobre la funcion "empty" si el empty va con un "!" adelante quiere decir que SI NO esta vacio, haga tal cosa?
En cambio si pondria "empty" solo diria que si esta vacio haga tal cosa ?

Salu2 gracias

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #7 en: Domingo 21 de Octubre de 2007, 22:55 »
0
Cita de: "Krosty"
Me quedo una duda sobre la funcion "empty" si el empty va con un "!" adelante quiere decir que SI NO esta vacio, haga tal cosa?
En cambio si pondria "empty" solo diria que si esta vacio haga tal cosa ?

Salu2 gracias
Efectivamente ! es el operador de negacion  (NOT)

Código: Text
  1. if (!empty (&#036;_REQUEST['nombre'])) {
  2.                 echo &#34;Contiene algo&#34;;          
  3.  
  4.        }
  5.  
  6.  

para se niega la condicion para evitar hacer lo que hacen algunos progrmadores que es "mala practica", el dejar un if "vacio" para utilizar la parte falsa


Código: Text
  1. if (empty (&#036;_REQUEST['nombre']))
  2.       {
  3.             //no hacer nada
  4.       }
  5.       else
  6.         {
  7.             echo &#34;Contiene algo&#34;;
  8.         }
  9.  
  10.  


(vease "Tabla de verdad del NOT" )

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

venedan

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #8 en: Lunes 22 de Octubre de 2007, 04:41 »
0
bueno entre a ver este comentario tarde y me alegro que el creador del post haya corregido su duda solo que quiero acotar algunas correpciones

1) para que hacer esto

if ($usuario[1]==$_REQUEST['clave'] && $usuario[1]==$_REQUEST['nombre'])
{
echo "Sus datos son correctos";
       echo "<br />";
       echo "En breve sera redirigido al guestbook";
}


es decir para que hacer eso si con esta funcion (("   if($reg) {   "))  se esta diciendo si la consulta que se hizo ("  where nombre='$_REQUEST[nombre]' and clave='$_REQUEST[clave]'  ") genera un registro es porque los datos de usuario y contraseña  son correctos y hacer el if ($usuario[1]==$_REQUEST['clave'].....
seria como hacer una rebundancia que no tiene sentido ya que si genera registro obviamente los datos introducidos son correctos

2) para el pana que decia que si no se colocaba ningun dato igualmente entraba pues obvio el ultimo else de tu codigo estas diciendo si el usuario o contraseña no estan en la base de datos lo que agregastes es un comentario  es decir como no hay ninguna condicion si no solo un comentario no va a imprimir nada si no una pagina en blanco
 
if ($reg) {
}
else
{
    //echo mysql_error(); #solo para debug
 }


y que mas bueno no se porque el pana F_tanori recomienda no comparar el password a traves de SQL ?? es algo que todavia no entiendo porque dice eso

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #9 en: Lunes 22 de Octubre de 2007, 07:47 »
0
Bueno mira

Cita de: "venedan"
1) para que hacer esto

if ($usuario[1]==$_REQUEST['clave'] && $usuario[1]==$_REQUEST['nombre'])
{
echo "Sus datos son correctos";
echo "<br />";
echo "En breve sera redirigido al guestbook";
}

es para saber si el usuario es el indicado yo sugeri usar mysql_num_rows pero esa opcion es valida


Luego "if ($reg) { " no es una funcion solo es una condicion para comprobar que se ejecuto la consulta


y estas equivocado:

Esto

Código: Text
  1. if (&#036;reg)
  2.  

no es lo mismo que esto

Código: Text
  1. if (&#036;usuario[1]==&#036;_REQUEST['clave'] && &#036;usuario[1]==&#036;_REQUEST['nombre'])
  2.  

asi que no es ni "rebundancia" :P ni redundancia  pues no son intrucciones iguales

Te explico un poco mas

si  Krosty hace esto

Código: Text
  1.  
  2. &#036;reg= mysql_query(&#34;select nombre,clave from usuarios where nombre='Ftanori' and clave='1000'&#34;,&#036;con);
  3.  

si la instruccion se procesa correctamente aun cuando el usuario no exista $reg devuelve un 'objeto' lo cual no significa que haya encontrado al usuario indicado me explico?


Cita de: "http://www.php.net/manual/es/function.mysql-query.php"
Valores retornados

Para las sentencias SELECT, SHOW, DESCRIBE o EXPLAIN, mysql_query() regresa un resource en caso exitoso, y FALSE en error.


la razon de validar if ($reg) es saber que es un resource valido para poder usado con otras funciones como por ejemplo mysql_fetch_array($reg); pues espera es un resource como parametro


en caso de que sea falso puedes ver el error por el cual no se proceso la consulta ( la linea comentada, esta comentada porque tampoco es recomendable mostrar los errores directos como los devuelve mysql (pues indica nombres de campos, tablas, tipos de datos,bd etc informacion que puede ser usada por intrusos)

Código: Text
  1.  
  2. if (&#036;reg) {
  3. }
  4. else
  5. {
  6. //echo mysql_error(); #solo para debug
  7. }
  8.  
  9.  

conclucion que devuelva un resource no significa que haya encontrado el usuario :P


Cita de: "venedan"
y que mas bueno no se porque el pana F_tanori recomienda no comparar el password a traves de SQL ?? es algo que todavia no entiendo porque dice eso

los password regularmente distingen entre mayusculas y minusculas (es un atributo digamos implicito ) SQL no y ese puede ser un atributo de seguridad

Seria mas facil adivinar

Código: Text
  1. nombre=FTanori
  2. clave=TANORI
  3.  

que algo como

Código: Text
  1. nombre=FTanori
  2. clave=TaNoRi
  3.  

en un ataque diccionario o por fuerza bruta incluso por ingenieria social....

y bueno ya que estamos en esto solo como comentario utilizar $_REQUEST puede resultar inseguro (segun el caso) pues no tiene distincion con los metods de envio POST ($_POST) y GET ($_GET)

entonces te pueden enviar datos por GETy alterarte variables que tal vez a traves de un formulario este restringido





Quizás quiso decir:
correcciones   :P

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

venedan

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #10 en: Lunes 22 de Octubre de 2007, 15:12 »
0
editado por duplicado

venedan

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #11 en: Lunes 22 de Octubre de 2007, 15:18 »
0
Cita de: "F_Tanori"

es para saber si el usuario es el indicado yo sugeri usar mysql_num_rows pero esa opcion es valida


Luego "if ($reg) { " no es una funcion solo es una condicion para comprobar que se ejecuto la consulta


y estas equivocado:

Esto

Código: Text
  1. if (&#036;reg)
  2.  

no es lo mismo que esto

Código: Text
  1. if (&#036;usuario[1]==&#036;_REQUEST['clave'] && &#036;usuario[1]==&#036;_REQUEST['nombre'])
  2.  

asi que no es ni "rebundancia" :P ni redundancia  pues no son intrucciones iguales

No estoy diciendo que sean lo mismo lo que estoy diciendo es que en el query se esta haciendo una consulta que va a generar un resource en caso de que el usuario y contraseña sean iguales es decir si "pepito" y "123456" estan en la base de datos  genera un resource exitoso en caso de que sea diferente o la contraseña  o el usuario retorna falso es decir si "if (reg) {"  se ejecuta es porque se encontro un resource en la consulta y vuelvo y lo repito la otra condicion $usuario[1]==$_REQUEST['clave'].......  es algo que nunca va a dar diferente ya que siempre sera igual  o muestrame un ejemplo donde de lo contrario

Cita de: "F_Tanori"
en caso de que sea falso puedes ver el error por el cual no se proceso la consulta ( la linea comentada, esta comentada porque tampoco es recomendable mostrar los errores directos como los devuelve mysql (pues indica nombres de campos, tablas, tipos de datos,bd etc informacion que puede ser usada por intrusos)

es que si no quieres que muestre informacion que puede ser usada por intrusos puede colocar otro tipo de mensaje que no sea mysql_error()

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #12 en: Lunes 22 de Octubre de 2007, 19:24 »
0
Cita de: "venedan"
No estoy diciendo que sean lo mismo lo que estoy diciendo es que en el query se esta haciendo una consulta que va a generar un resource en caso de que el usuario y contraseña sean iguales es decir si "pepito" y "123456" estan en la base de datos genera un resource exitoso en caso de que sea diferente o la contraseña o el usuario retorna falso es decir si "if (reg) {" se ejecuta es porque se encontro un resource en la consulta y vuelvo y lo repito la otra condicion $usuario[1]==$_REQUEST['clave']....... es algo que nunca va a dar diferente ya que siempre sera igual o muestrame un ejemplo donde de lo contrario

al decir "Rebundancia" yo supuse que quisiste decir Redundacia


que se define con algo como:

Cita de: "http://www.wordreference.com/definicion/redundancia"
redundancia

   1. f. Repetición inútil de un concepto:
      la expresión "subir arriba" constituye una redundancia.

y ahora me dices que  :rolleyes:

Cita de: "venedan"
"No estoy diciendo que sean lo mismo"


te repito...

Código: Text
  1. if (&#036;usuario[1]==&#036;_REQUEST['clave'] && &#036;usuario[1]==&#036;_REQUEST['nombre'])
  2.  

es como alternativa a mysql_num_rows para ver si se regreso un registro

Ejemplo:

Tabla (BD):  usuarios
--------------------
[doHtml]
<table border='1'>
<tr><th>nombre</th><th>clave</th></tr>
<tr><td>pepito</td><td>123456</td></tr>
<tr><td>juanito</td><td>555</td></tr>
<tr><td>dianita</td><td>diana</td></tr>
</table>[/doHtml]

login.php

usuario: [doHtml]<input value='pepito'>[/doHtml]
clave: [doHtml]<input value='123'>[/doHtml]


procesar.php
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
<?php
$con=mysql_connect("localhost","USER","PASS");

mysql_select_db("prueba",$con);

$reg= mysql_query("select nombre,clave from usuarios where nombre='pepito' and clave='123'",$con);

if ($reg )
    {
       echo "Sus datos son correctos";
       echo "<br />";
       echo "En breve sera redirigido al guestbook";
     }
   else
      {
          echo "sus datos son incorrectos";
       }
?>

</body>
</html>
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->


La consulta se proceso con exito, pues no existe error de sintaxis o cosas por el estilo por lo tanto $reg devuelve resource que en el if se 'traduce' como true (o sea no devolvio falso :P)


Por lo tanto le mostrara

Sus datos son correctos

sin embargo no lo son pues la clave de pepito es 123456 no 123

Te invito que hagas pruebas y sigamos comentando  :smartass:

espero que le en cuentres sentido del porque no basarse en if ($reg ) como condicion de que encontro al usuario


Citar
es que si no quieres que muestre informacion que puede ser usada por intrusos puede colocar otro tipo de mensaje que no sea mysql_error()

claro, por eso el comentario "solo para Debug" para que el desarrollador pueda ver el mensaje del servidor de la base de datos se utiliza mysql_error() para encontrar el error, y por supuesto una vez que este corregido se comenta la linea (para ocasiones posteriores) y se coloca un mensaje para el usuario :)






Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

venedan

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #13 en: Lunes 22 de Octubre de 2007, 21:00 »
0
1) si dije que era redundante pero lo dije con respecto a la consulta hecha en sql y a la condicion  $usuario[1]==$_REQUEST['clave'].......  y no con el if ($reg) {

2) pana vamos a matar esta culebra por la cabeza hace tiempo cuando recien comenzaba con esto de php realize una pagina de registro de usuario y de consulta la pagina para registrarse es registro.n95.uni.cc y la pagina para el login es www.n95.uni.cc la consulta la hice tal cual como te explique es decir solo con el if ($reg) { y con la misma consulta en sql ahora quiero que te registres y luego trates de entrar con otra clave diferente a la de registro para ver si puedes acceder al contenido porque yo lo hice y no me daba acceso si quieres has el intento y me digas si con otra clave diferente con la que te registrastes te da acceso

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Crear Login Y Registro
« Respuesta #14 en: Martes 23 de Octubre de 2007, 00:41 »
0
Cita de: "venedan"
1) si dije que era redundante pero lo dije con respecto a la consulta hecha en sql y a la condicion  $usuario[1]==$_REQUEST['clave'].......  y no con el if ($reg) {

2) pana vamos a matar esta culebra por la cabeza hace tiempo cuando recien comenzaba con esto de php realize una pagina de registro de usuario y de consulta la pagina para registrarse es registro.n95.uni.cc y la pagina para el login es www.n95.uni.cc la consulta la hice tal cual como te explique es decir solo con el if ($reg) { y con la misma consulta en sql ahora quiero que te registres y luego trates de entrar con otra clave diferente a la de registro para ver si puedes acceder al contenido porque yo lo hice y no me daba acceso si quieres has el intento y me digas si con otra clave diferente con la que te registrastes te da acceso
venedan:
F_Tanori tiene razón.
No hay forma de que nosotros sepamos cual es el código que vos usaste en tu página, pero es muy fácil que copies y pegues el trozo de código que te ha dado para que corrobores lo que te está diciendo.

Un saludo
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

venedan

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #15 en: Martes 23 de Octubre de 2007, 00:55 »
0
eso fue lo que hice mollense, el codigo que use para crear la pagina es el mismo que esta aqui

Código: Text
  1. &#60;html&#62;
  2. &#60;head&#62;
  3. &#60;/head&#62;
  4. &#60;body&#62;
  5. &#60;?php
  6. &#036;conexion = mysql_connect(&#34;localhost&#34;,&#34;root&#34;,&#34;123456789&#34;) or
  7.          die (&#34;Error de Conexion&#34;);
  8. mysql_select_db(&#34;ejemplo&#34;,&#036;conexion) or
  9.       die (&#34;Error en la base de datos&#34;);
  10. &#036;registro = mysql_query(&#34;select * from ejemplo where nombre = '&#036;_REQUEST[usuario]' and pass = '&#036;_REQUEST[pass]'&#34;,&#036;conexion) or
  11.             die (&#34;ERROR&#34;.mysql_error());
  12.       
  13. if (&#036;registro) {
  14. echo &#34;bienvenido&#34;;
  15. }
  16. else {
  17. echo &#34;clave o usuario invalidas&#34;;
  18. }
  19. ?&#62;
  20. &#60;/body&#62;
  21. &#60;/html&#62;
  22.  

es por eso que le digo que me muestre cual es el error que tiene al hacerlo sin el codigo que el dice $usuario[1]==$_REQUEST['clave']....... si de igual forma puede revisar que funciona y no como el dice que si el usuario pepito se registra con la contraseña 123456789 y el usuario pepito coloca de contraseña 123 igual va a entrar cosa que es falsa por eso digo que me lo demuestre porque es el mismo codigo que el dice que tiene ese error

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Crear Login Y Registro
« Respuesta #16 en: Martes 23 de Octubre de 2007, 02:17 »
0
Cita de: "venedan"
eso fue lo que hice mollense, el codigo que use para crear la pagina es el mismo que esta aqui

Código: Text
  1. &#60;html&#62;
  2. &#60;head&#62;
  3. &#60;/head&#62;
  4. &#60;body&#62;
  5. &#60;?php
  6. &#036;conexion = mysql_connect(&#34;localhost&#34;,&#34;root&#34;,&#34;123456789&#34;) or
  7.          die (&#34;Error de Conexion&#34;);
  8. mysql_select_db(&#34;ejemplo&#34;,&#036;conexion) or
  9.       die (&#34;Error en la base de datos&#34;);
  10. &#036;registro = mysql_query(&#34;select * from ejemplo where nombre = '&#036;_REQUEST[usuario]' and pass = '&#036;_REQUEST[pass]'&#34;,&#036;conexion) or
  11.             die (&#34;ERROR&#34;.mysql_error());
  12.      
  13. if (&#036;reg) {
  14. echo &#34;bienvenido&#34;;
  15. }
  16. else {
  17. echo &#34;clave o usuario invalidas&#34;;
  18. }
  19. ?&#62;
  20. &#60;/body&#62;
  21. &#60;/html&#62;
  22.  

es por eso que le digo que me muestre cual es el error que tiene al hacerlo sin el codigo que el dice $usuario[1]==$_REQUEST['clave']....... si de igual forma puede revisar que funciona y no como el dice que si el usuario pepito se registra con la contraseña 123456789 y el usuario pepito coloca de contraseña 123 igual va a entrar cosa que es falsa por eso digo que me lo demuestre porque es el mismo codigo que el dice que tiene ese error
Bueno, para empezar, estás usando la variable "$registro" para guardar el resultado de la consulta
Citar
$registro = mysql_query("select * from ejemplo where nombre = '$_REQUEST[usuario]' and pass = '$_REQUEST[pass]'",$conexion)
pero después consultás utilizando la variable "$reg"
Citar
if ($reg) {

De todas formas, si corregís eso, en todos los casos en que la consulta no devuelva un error, vas a ver en la pantalla el texto "bienvenido" por lo que anteriormente te ha explicado F_Tanori

Un saludo
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

venedan

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #17 en: Martes 23 de Octubre de 2007, 02:29 »
0
se me paso ese error cuando lo escribi aqui pero es que de igual el codigo modificado sigue sin error alguno haz la prueba tu mismo en la pagina

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Crear Login Y Registro
« Respuesta #18 en: Martes 23 de Octubre de 2007, 02:43 »
0
Cita de: "venedan"
es por eso que le digo que me muestre cual es el error que tiene al hacerlo sin el codigo que el dice $usuario[1]==$_REQUEST['clave']....... si de igual forma puede revisar que funciona y no como el dice que si el usuario pepito se registra con la contraseña 123456789 y el usuario pepito coloca de contraseña 123 igual va a entrar cosa que es falsa por eso digo que me lo demuestre porque es el mismo codigo que el dice que tiene ese error
Eso mismo es lo que te respondió anteriormente
Cita de: "F_Tanori"
si  Krosty hace esto

Código: Text
  1.  
  2. &#036;reg= mysql_query(&#34;select nombre,clave from usuarios where nombre='Ftanori' and clave='1000'&#34;,&#036;con);
  3.  

si la instruccion se procesa correctamente aun cuando el usuario no exista $reg devuelve un 'objeto' lo cual no significa que haya encontrado al usuario indicado me explico?


Cita de: "http://www.php.net/manual/es/function.mysql-query.php"
Valores retornados

Para las sentencias SELECT, SHOW, DESCRIBE o EXPLAIN, mysql_query() regresa un resource en caso exitoso, y FALSE en error.


la razon de validar if ($reg) es saber que es un resource valido para poder usado con otras funciones como por ejemplo mysql_fetch_array($reg); pues espera es un resource como parametro


en caso de que sea falso puedes ver el error por el cual no se proceso la consulta ( la linea comentada, esta comentada porque tampoco es recomendable mostrar los errores directos como los devuelve mysql (pues indica nombres de campos, tablas, tipos de datos,bd etc informacion que puede ser usada por intrusos)

Código: Text
  1.  
  2. if (&#036;reg) {
  3. }
  4. else
  5. {
  6. //echo mysql_error(); #solo para debug
  7. }
  8.  
  9.  

conclucion que devuelva un resource no significa que haya encontrado el usuario :P
Leelo mas detenidamente

...además, no te cuesta nada, te repito, hacé la prueba a ver que pasa.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Crear Login Y Registro
« Respuesta #19 en: Martes 23 de Octubre de 2007, 02:47 »
0
Cita de: "venedan"
se me paso ese error cuando lo escribi aqui pero es que de igual el codigo modificado sigue sin error alguno haz la prueba tu mismo en la pagina
Te repito, por mas que nosotros hagamos la prueba en tu página (No tengo ganas de registrarme y hacer tanto lío) y esta funcione correctamente, no tenemos acceso al código por mas que nos digas que es tal o cual.

En cambio, vos sí podés hacer la simple prueba que se te ha propuesto y ver que estás equivocado. Yo ya lo hice (2 minutos y no hay mas dudas).

Un saludo
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #20 en: Martes 23 de Octubre de 2007, 06:33 »
0
Cita de: "Mollense"
venedan:
F_Tanori tiene razón.
No hay forma de que nosotros sepamos cual es el código que vos usaste en tu página, pero es muy fácil que copies y pegues el trozo de código que te ha dado para que corrobores lo que te está diciendo.

Un saludo
:beer:


compañero venedan solo tomate un tiempo de probarlo, quizas no he logrado explicarme bien, pero prueba no cuesta nada.

o muestra el codigo de la pagina que indicas, con gusto mas de uno hariamos la prueba :)



Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Crear Login Y Registro
« Respuesta #21 en: Martes 23 de Octubre de 2007, 09:33 »
0
Cita de: "venedan"
eso fue lo que hice mollense, el codigo que use para crear la pagina es el mismo que esta aqui

Código: Text
  1. &#60;html&#62;
  2. &#60;head&#62;
  3. &#60;/head&#62;
  4. &#60;body&#62;
  5. &#60;?php
  6. &#036;conexion = mysql_connect(&#34;localhost&#34;,&#34;root&#34;,&#34;123456789&#34;) or
  7.          die (&#34;Error de Conexion&#34;);
  8. mysql_select_db(&#34;ejemplo&#34;,&#036;conexion) or
  9.       die (&#34;Error en la base de datos&#34;);
  10. &#036;registro = mysql_query(&#34;select * from ejemplo where nombre = '&#036;_REQUEST[usuario]' and pass = '&#036;_REQUEST[pass]'&#34;,&#036;conexion) or
  11.             die (&#34;ERROR&#34;.mysql_error());
  12.      
  13. if (&#036;registro) {
  14. echo &#34;bienvenido&#34;;
  15. }
  16. else {
  17. echo &#34;clave o usuario invalidas&#34;;
  18. }
  19. ?&#62;
  20. &#60;/body&#62;
  21. &#60;/html&#62;
  22.  

es por eso que le digo que me muestre cual es el error que tiene al hacerlo sin el codigo que el dice $usuario[1]==$_REQUEST['clave']....... si de igual forma puede revisar que funciona y no como el dice que si el usuario pepito se registra con la contraseña 123456789 y el usuario pepito coloca de contraseña 123 igual va a entrar cosa que es falsa por eso digo que me lo demuestre porque es el mismo codigo que el dice que tiene ese error
Bueno la realidad es que no estas usando el mismo codigo estas usando uno parecido

en el codigo que se ha expuesto no se utiliza die

y tu si lo estas utilizando


Código: Text
  1. mysql_query(&#34;select * from ejemplo where nombre = '&#036;_REQUEST[usuario]' and pass = '&#036;_REQUEST[pass]'&#34;,&#036;conexion) or
  2.             die (&#34;ERROR&#34;.mysql_error());
  3.  

lo que hace die es como hacer esto


Código: Text
  1. echo &#34;ERROR&#34;.mysql_error();
  2. exit;
  3.  

imprime el mensaje y termina el script

por lo tanto tu codigo esta "alterado" y no es el publicado aqui.... :P

aunque no afecta lo comentado antes... que se procese con éxito "el query" no significa que encontro el usuario

como a alternativa a die puede ser esto...

la parte false...

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->if ($reg) {
     #Procesar....
     #......
}
else
{
//echo mysql_error(); #solo para debug
}

<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->





Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================