Foros del Web » Programando para Internet » PHP »

Query failed, me debe faltar algo

Estas en el tema de Query failed, me debe faltar algo en el foro de PHP en Foros del Web. Hola a todos, he estado intentando crear un sistema se login, para que los usuarios de mi base de datos en mysql puedan acceder a ...
  #1 (permalink)  
Antiguo 12/07/2012, 10:57
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 19
Antigüedad: 11 años, 9 meses
Puntos: 0
Query failed, me debe faltar algo

Hola a todos,

he estado intentando crear un sistema se login, para que los usuarios de mi base de datos en mysql puedan acceder a un contenido, tengo este codigo que es el Start session:

Código PHP:
<?php
    
//Start session
    
session_start();
    
    
//Include database connection details
    
require_once('config.php');
    
    
//Array to store validation errors
    
$errmsg_arr = array();
    
    
//Validation error flag
    
$errflag false;
    
    
//Connect to mysql server
    
$link mysql_connect(DB_HOSTDB_USERDB_PASSWORD);
    if(!
$link) {
        die(
'Failed to connect to server: ' mysql_error());
    }
    
    
//Select database
    
$db mysql_select_db(DB_DATABASE);
    if(!
$db) {
        die(
"Unable to select database");
    }
    
    
//Function to sanitize values received from the form. Prevents SQL injection
    
function clean($str) {
        
$str = @trim($str);
        if(
get_magic_quotes_gpc()) {
            
$str stripslashes($str);
        }
        return 
mysql_real_escape_string($str);
    }
    
    
//Sanitize the POST values
    
$login clean($_POST['login']);
    
$password clean($_POST['password']);
    
    
//Input Validations
    
if($login == '') {
        
$errmsg_arr[] = 'Login ID missing';
        
$errflag true;
    }
    if(
$password == '') {
        
$errmsg_arr[] = 'Password missing';
        
$errflag true;
    }
    
    
//If there are input validations, redirect back to the login form
    
if($errflag) {
        
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        
session_write_close();
        
header("location: login-form.php");
        exit();
    }
    
    
//Create query
    
$qry="SELECT * FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
    
$result=mysql_query($qry);
    
    
//Check whether the query was successful or not
    
if($result) {
        if(
mysql_num_rows($result) == 1) {
            
//Login Successful
            
session_regenerate_id();
            
$member mysql_fetch_assoc($result);
            
$_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
            
$_SESSION['SESS_FIRST_NAME'] = $member['firstname'];
            
$_SESSION['SESS_LAST_NAME'] = $member['lastname'];
            
session_write_close();
            
header("location: member-index.php");
            exit();
        }else {
            
//Login failed
            
header("location: login-failed.php");
            exit();
        }
    }else {
        die(
"Query failed");
    }
?>

en el archivo config.php ya ingrese los datos de mi base de datos,

pero cuando intento ingresar con algún usuario y su respectiva contraseña, me sale este mensaje:

"Query failed"

entonces se me vienen unas dudas:

- en el codigo de arriba, tengo que llenar estos datos:

Código PHP:
//Connect to mysql server
    
$link mysql_connect(DB_HOSTDB_USERDB_PASSWORD);
    if(!
$link) {
        die(
'Failed to connect to server: ' mysql_error());
    }
    
    
//Select database
    
$db mysql_select_db(DB_DATABASE);
    if(!
$db) {
        die(
"Unable to select database");
    } 
porque si asi es... ya lo hize y tampoco cambia el resultado.


- que es esto, tengo que ingresar algun dato en este escaio:

Código PHP:
//Create query
    
$qry="SELECT * FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
    
$result=mysql_query($qry); 
si es así, que dato ingreso...



espero haberme hecho entender... y que me puedan colaborar.

Gracias.
  #2 (permalink)  
Antiguo 12/07/2012, 11:02
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Query failed, me debe faltar algo

Código PHP:
Ver original
  1. $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
  2. $db = mysql_select_db(DB_DATABASE);

en que parte llenas esos datos?

trata de imprimir esto

Código PHP:
Ver original
  1. $qry="SELECT * FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";

despues de ese agrega

Código PHP:
Ver original
  1. echo $qry;

para ver si sale el resultado que quieres..
__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Lider de Proyecto/Desarrollador Banco Local
Espacio Geek - Comunidad Tecnologica
  #3 (permalink)  
Antiguo 12/07/2012, 11:16
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 19
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Query failed, me debe faltar algo

remplazo los datos que aparecen aqui, queda mas o menos asi:

Código PHP:
//Connect to mysql server
    
$link mysql_connect("localhost""db_user""123456");
    if(!
$link) {
        die(
'Failed to connect to server: ' mysql_error());
    }
    
    
//Select database
    
$db mysql_select_db(db_mydata);
    if(!
$db) {
        die(
"Unable to select database");
    } 

Cuando dices imprimir a que te refieres?....
  #4 (permalink)  
Antiguo 12/07/2012, 11:20
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Query failed, me debe faltar algo

colocale la comilla simple a esta parte

Código PHP:
Ver original
  1. $db = mysql_select_db('db_mydata');

imprimir me refiero a como te puse en el ejemplo..

Código PHP:
Ver original
  1. $qry="SELECT * FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
  2. echo $qry;
__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Lider de Proyecto/Desarrollador Banco Local
Espacio Geek - Comunidad Tecnologica
  #5 (permalink)  
Antiguo 12/07/2012, 11:27
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 19
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Query failed, me debe faltar algo

Ya puse las comillas a la otra parte del codigo
y ya inclui el

Código PHP:
echo $qry 
pero sale esto:


"SELECT * FROM members WHERE login='David' AND passwd='86b5b8efdbcfad6fbeec45607dfff395'Query failed"
  #6 (permalink)  
Antiguo 12/07/2012, 12:06
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Query failed, me debe faltar algo

has guardado la pass encriptada en la base de datos de los usuarios??? si no es asi no coincidiran
  #7 (permalink)  
Antiguo 12/07/2012, 12:59
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 19
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Query failed, me debe faltar algo

en la base de datos, en phpmyadmin cuando cree los usuarios los hize asi:

user: David
password: x0boL0zUfOs0

pero le puse encriptacion Md5

de tal forma que en la tabla de la base de datos aparece asi: 86b5b8efdbcfad6

entonces esta bien o mal hecho?...
  #8 (permalink)  
Antiguo 12/07/2012, 13:10
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Query failed, me debe faltar algo

esta bien supongo , intenta hacer la consulta solo con el login

Código PHP:
Ver original
  1. $qry="SELECT * FROM members WHERE login='$login' ";
  2. $row = mysql_fetch_array($qry);

y verificas la password y asi vemos donde esta el problema

Código PHP:
Ver original
  1. if($row['passwd'] != md5($_POST['password'])){
  2.    
  3.     echo 'el password no coincide';
  4.     die();
  5.    
  6.    
  7.     }
  #9 (permalink)  
Antiguo 12/07/2012, 13:54
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 19
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Query failed, me debe faltar algo

:/ aun continua sin entrar ahora dice : el password no coincide
  #10 (permalink)  
Antiguo 12/07/2012, 14:00
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Query failed, me debe faltar algo

ok ya sabes donde anda tu problema

vamos a probar con mysql_error() haber que nos dice

Código PHP:
Ver original
  1. $qry="SELECT * FROM members WHERE login='$login' AND  passwd='".md5($_POST['password'])."'";
  2. $con=mysql_query($qry,$tuconexion) or die (mysql_error());
  3. $row = mysql_fetch_array($con);
  4. if($row['passwd'] != md5($_POST['password'])){
  5.        
  6.         echo 'el password no coincide';
  7.         die();
  8.        
  9.        
  10.         }
  #11 (permalink)  
Antiguo 12/07/2012, 14:02
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Query failed, me debe faltar algo

como creaste el campo password en la base de datos ? creo que le limitaste el largo y no te guardo la contraseña completa.
  #12 (permalink)  
Antiguo 12/07/2012, 14:05
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Query failed, me debe faltar algo

si si es eso

yo creia que 86b5b8efdbcfad6 la pass que tienes en la bd la acortaste pero si solo te guarda eso debes darle mas caracteres en la bd antes de guardarla para que coincida con 86b5b8efdbcfad6fbeec45607dfff395

86b5b8efdbcfad6 ==86b5b8efdbcfad6fbeec45607dfff395

no coinciden obvio no puedes continuar , muy bien diste en el clavo Death_Empire
  #13 (permalink)  
Antiguo 12/07/2012, 14:20
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 19
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Query failed, me debe faltar algo

ok revise la base de datos y el valor era de 15, lo cambie a 36.

ingrese el código que me diste:

Código PHP:
$qry="SELECT * FROM members WHERE login='$login' AND *passwd='".md5($_POST['password'])."'";
$con=mysql_query($qry,$tuconexion) or die (mysql_error());
$row mysql_fetch_array($con);
if(
$row['passwd'] != md5($_POST['password'])){
* * * *
* * * * echo 
'el password no coincide';
* * * * die();
* * * *
* * * *
* * * * } 
y ya no sale ningún error... Pero se queda en blanco...
  #14 (permalink)  
Antiguo 17/07/2012, 12:47
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Query failed, me debe faltar algo

Cita:
Iniciado por ixus36900 Ver Mensaje

y ya no sale ningún error... Pero se queda en blanco...
claro por que esta todo correcto ya despues de , continua con tu codigo na mas o mas comprobaciones o lo que tu desees hacer

- una aclaracion , si ya cambiaste el valor a 36 haz nuevamenete el registro para que te guarde automaticamente la pass encriptada de 36 caracteres o hazlo tu a mano la copias y listo .

Código PHP:
Ver original
  1. $qry="SELECT * FROM members WHERE login='$login' AND *passwd='".md5($_POST['password'])."'";
  2. $con=mysql_query($qry,$tuconexion) or die (mysql_error());
  3. $row = mysql_fetch_array($con);
  4. if($row['passwd'] != md5($_POST['password'])){
  5.  echo 'el password no coincide';
  6. die();
  7. }  
  8.  
  9. // aqui continua con tu codigo . . .. . .

Etiquetas: login, query, sesión, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:04.