Regresar a la página www.ComoCrearTuWeb.com
Resultados 1 al 10 de 10

Tema: Error en login de usuarios

  1. #1
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    17

    Error en login de usuarios

    Buenas!

    En el sistema de usuarios que tengo, las contraseñas se guardan en md5.
    Hasta ahí todo correcto.

    El problema me llega a la hora de hacer login de usuarios, me da el siguiente error:
    Could not match data because You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #9' at line 1
    Los códigos son estos:

    login.html (Donde pone el formulario de login)
    Código:
    <form name="loginform" id="loginform" action="login.php" method="post"> 
    	<p> 
    		<label>Nombre de usuario<br /> 
    		<input type="text" name="nick" id="user_login" class="input" value="" size="20" tabindex="10" /></label> 
    	</p> 
    	<p> 
    		<label>Contraseña<br /> 
    		<input type="password" name="password" id="user_pass" class="input" value="" size="20" tabindex="20" /></label> 
    	</p>  
    	<p class="submit"> 
    		<input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="Acceder" tabindex="100" />  
    	</p> 
    </form>
    login.php (Lo que procesa el formulario para hacer el login)
    Código:
    <?php
    ob_start();
    
    $nick = $_POST[nick];
    $password = $_POST[password];
    $password = md5($password);
    
    include("config2.php");
    
    // Conexión con la base de datos 
    $link = mysql_connect($server, $db_user, $db_pass) 
    or die ("Could not connect to mysql because ".mysql_error()); 
    
    // Selección de la base de datos
    mysql_select_db($database) 
    or die ("Could not select database because ".mysql_error()); 
    
    $match = mysql_query("SELECT * FROM usuarios WHERE nick = '$nick' AND password='$password'"); 
    
    $qry = mysql_query($match) or die ("Could not match data because ".mysql_error()); 
    $num_rows = mysql_num_rows($qry); 
    
    if ($num_rows <= 0) { 
    echo "Error: Usuario o contraseña incorrecto/s.<br />"; 
    echo "<a href=http://minics.comze.com/login.html>Intentar conectarse de nuevo</a>"; 
    exit;
    
    } else { 
    
    setcookie("loggedin", "$nick", time()+(3600 * 24));
    header ("location: http://minics.comze.com/"); 
    }
    ob_end_flush();
    ?>

  2. #2
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    28 jun, 08
    Mensajes
    499
    Poder de Reputación
    16
    Es probable que el nombre de la tabla no sea el correcto, o quizas los espacios entre nick = '$nick' quizas deberias colocarlos sin espacios.

  3. #3
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    17
    Gracias por la respuesta amigo server, pero el nombre de la tabla es el correcto y he probado quitando el espacio de ahí, pero sigue dando el mismo error.

    Por si sirve, adjunto una captura de los campos de la base de datos


  4. #4
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,045
    Poder de Reputación
    21
    Hola, lo que ocurre es que estas mal utilizando la función mysql_query. Fíjate bien: la primera consulta que realizas devuelve un arreglo con todas las columnas que pides ("todas las columnas de la tabla usuarios donde nick = ...."), entonces, en caso de que encuentre algo, $match contendrá una tabla como esta:

    $match = {id => número, nick => "Cadena de texto", password => "Contraseña", mics => "No sé lo que es XD", email => "correoelectrónico@dominio", avatar => "Url de la imágen"}

    Ahora, cuando ejecutas la consulta nuevamente, estas diciendo esto: mysql_query("Resource ID#tanto"); donde resource id#tanto siempre significa "un resultado devuelto por una consulta SQL".

    Lo que deberías hacer es simplemente esto: $match = mysql_query("SELECT * FROM usuarios WHERE nick = '$nick' AND password='$password'")

    if(!is_empty($match) || $match != null)
    // quiere decir que el usuario existe y la contraseña coincide
    else
    // el usuario no existe o la contraseña no coincide.

    Saludos.

  5. #5
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    17
    A ver si lo entendí, tendría que dejarlo así?
    Código:
    <?php
    ob_start();
    
    $nick = $_POST[nick];
    $password = $_POST[password];
    $password = md5($password);
    
    include("config2.php");
    
    // Conexión con la base de datos 
    $link = mysql_connect($server, $db_user, $db_pass) 
    or die ("Could not connect to mysql because ".mysql_error()); 
    
    // Selección de la base de datos
    mysql_select_db($database) 
    or die ("Could not select database because ".mysql_error());
    
    $match = mysql_query("SELECT * FROM usuarios WHERE nick = '$nick' AND password='$password'")
    
    if(!is_empty($match) || $match != null){
    // quiere decir que el usuario existe y la contraseña coincide
    setcookie("loggedin", "$nick", time()+(3600 * 24));
    header ("location: http://minics.comze.com/");
    }
    else {
    // el usuario no existe o la contraseña no coincide.
    echo "ERROR: Usuario o contraseña incorrecto/s.";
    }
    ob_end_flush();
    ?>
    PD: El campo mics son monedas virtuales con las que más adelante podrán comprar cosas para decorar su perfil ^^ (Eso lo postearé en otra duda, descuida jajajaja)

  6. #6
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    17
    He probado así:
    Código:
    <?php
    ob_start();
    
    $nick = $_POST[nick];
    $password = $_POST[password];
    $password = md5($password);
    
    include("config2.php");
    
    // Conexión con la base de datos 
    $link = mysql_connect($server, $db_user, $db_pass) 
    or die ("Could not connect to mysql because ".mysql_error()); 
    
    // Selección de la base de datos
    mysql_select_db($database) 
    or die ("Could not select database because ".mysql_error());
    
    $match = mysql_query("SELECT * FROM usuarios WHERE nick = '$nick' AND password='$password'");
    
    if(!is_empty($match) || $match != null){
    setcookie("loggedin", "$nick", time()+(3600 * 24));
    header ("location: http://minics.comze.com/");
    
    } else {
    echo "ERROR: Usuario o contraseña incorrecto/s.";
    }
    ob_end_flush();
    ?>
    Pero da error...
    Fatal error: Call to undefined function is_empty() in /home/a6136284/public_html/login.php on line 20

  7. #7
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,045
    Poder de Reputación
    21
    Wuajajajjaaja, es que me equivoque; la función is_empty no existe, sino que es empty($match)... cosas que pasan.

  8. #8
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    17
    Código:
    <?php
    ob_start();
    
    $nick = $_POST[nick];
    $password = $_POST[password];
    $password = md5($password);
    
    include("config2.php");
    
    // Conexión con la base de datos 
    $link = mysql_connect($server, $db_user, $db_pass) 
    or die ("Could not connect to mysql because ".mysql_error()); 
    
    // Selección de la base de datos
    mysql_select_db($database) 
    or die ("Could not select database because ".mysql_error());
    
    $match = mysql_query("SELECT * FROM usuarios WHERE nick = '$nick' AND password='$password'");
    
    if(!empty($match) || $match != null){
    setcookie("loggedin", "$nick", time()+(3600 * 24));
    header ("location: http://minics.comze.com/");
    } else {
    echo "ERROR: Usuario o contraseña incorrecto/s.";
    }
    ob_end_flush();
    ?>
    Con ese código, si en login.html, aunque no pongas ninguna contraseña (o pongas una errónea) te loguea igual en el usuario :-S

    Saludos y gracias por la ayuda!

  9. #9
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    28 jun, 08
    Mensajes
    499
    Poder de Reputación
    16
    Prueba con este codigo, basicamente solo cambie la comparacion que haces, por una que si y solo si existe un solo registro en la base de datos con la condicion procesara el inicio de session.

    Código PHP:
    <?php
    ob_start
    ();

    $nick $_POST[nick];
    $password md5($_POST['password']);

    include(
    "config2.php");

    // Conexión con la base de datos
    $link mysql_connect($server$db_user$db_pass)
    or die (
    "Could not connect to mysql because ".mysql_error());

    // Selección de la base de datos
    mysql_select_db($database)
    or die (
    "Could not select database because ".mysql_error());

    $match mysql_query("SELECT * FROM usuarios WHERE nick = '$nick' AND password='$password'");

    if(
    mysql_num_rows($match)==1){
    setcookie("loggedin""$nick"time()+(3600 24));
    header ("location: http://minics.comze.com/");
    } else {
    echo 
    "ERROR: Usuario o contraseña incorrecto/s.";
    }
    ob_end_flush();
    ?>

  10. #10
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    17
    Genial, gracias server!!

    Al final el código quedó así:
    Código:
    <?php
    ob_start();
    
    $nick = $_POST[nick];
    $nick = htmlspecialchars($nick);
    $nick = strip_tags($nick);
    $nick = htmlentities($nick);
    $password = htmlspecialchars($_POST['password']);
    $password = htmlentities($password);
    $password = strip_tags($password);
    $password = md5($password);
    
    include("config2.php");
    
    // Conexión con la base de datos
    $link = mysql_connect($server, $db_user, $db_pass)
    or die ("Could not connect to mysql because ".mysql_error());
    
    // Selección de la base de datos
    mysql_select_db($database)
    or die ("Could not select database because ".mysql_error());
    
    $match = mysql_query("SELECT * FROM usuarios WHERE nick = '$nick' AND password='$password'");
    
    if(mysql_num_rows($match)==1){
    setcookie("loggedin", "$nick", time()+(3600 * 24));
    header ("location: http://minics.comze.com/");
    } else {
    echo "ERROR: Usuario o contraseña incorrecto/s.";
    }
    ob_end_flush();
    ?>
    Le agregué lunas líneas para evitar que inserten código HTML en el usuario/contraseña, porque leí que pueden entrar en cuentas por ejemplo poniendo ' OR '"=' o algo así en el campo de contraseña

Temas Similares

  1. Problema con sistema de login de usuarios
    Por Doodleo en el foro Sistema de Registro de Usuarios
    Respuestas: 50
    Último Mensaje: 15/07/2011, 14:10
  2. Usuarios, login , contraseñas y eso
    Por descargasdetodotipo en el foro Sistema de Registro de Usuarios
    Respuestas: 4
    Último Mensaje: 05/10/2010, 14:48
  3. Login...y error!
    Por Ijner en el foro Foros
    Respuestas: 14
    Último Mensaje: 05/06/2008, 16:14

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •