Foros del Web » Programando para Internet » PHP »

Select problematica

Estas en el tema de Select problematica en el foro de PHP en Foros del Web. Estoy teniendo un problema con una select que aparentemente me parece MUY sencilla. Debo de estar ciego o no se... . La select es la ...
  #1 (permalink)  
Antiguo 04/07/2006, 02:21
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
Select problematica

Estoy teniendo un problema con una select que aparentemente me parece MUY sencilla. Debo de estar ciego o no se... . La select es la siguiente:


<?
$login1=$_POST["login"];
$pass1=$_POST["pass"];

$db_name = "test";

$table_name = "usuarios1";

$sql = "SELECT * FROM $table_name
WHERE login = \"$login1\" AND password = password(\"$pass1\")";

La base de datos contiene los campos login y pass en la tabla usuarios1.

Lo de password(\"$pass1\") lo he puesto porque la contraseña se añade a la tabla encriptada, también con la opción password.


$num = mysql_numrows($result);

if ($num != 0) {



$msg = "<P>Felicidades. El acceso ha sido autorizado</p>";

El error que da: No se puede ejecutar el query.
  #2 (permalink)  
Antiguo 04/07/2006, 03:00
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
Hola!
a ver... primero de todo asegurate q las varibales mandadas x post te llegan a la pagina. Haz un echo para imprimirlas...
y lo segundo la consulta pruebala asi:
Código PHP:
//aqui pones tu funcion de encriptacion...
$pass=password($pass1);
$sql "SELECT * FROM $table_name
WHERE login = '"
.$login1."' AND password = '".$pass."'"
Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #3 (permalink)  
Antiguo 04/07/2006, 03:09
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
Los datos se guardan bien. Ya lo he probado con el echo. He puesto la consulta que me has dicho y me sale lo siguiente:

Fatal error: Call to undefined function: password() in /srv/www/htdocs/comprobar.php on line 20

Lo he puesto tal cual, como tu me has dicho.

Saludos
  #4 (permalink)  
Antiguo 04/07/2006, 03:22
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 11 años, 5 meses
Puntos: 0
Prueba a poner algo asi:
$sql = "SELECT * FROM $table_name
WHERE login = ".$login1." AND usuarios1.password = bd.password(".$pass1.")";

donde bd es el nombre de la base de datos
  #5 (permalink)  
Antiguo 04/07/2006, 03:40
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
Lo mismo, no se puede ejecutar el query...

  #6 (permalink)  
Antiguo 04/07/2006, 03:56
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 11 años, 5 meses
Puntos: 0
La funcion password esta definida en la Base de datos o la tienes definida en PhP?
  #7 (permalink)  
Antiguo 04/07/2006, 04:03
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
La funcion password la he definido en php. En la base de datos unicamente tengo 2 campos varchar que son login y pass.
  #8 (permalink)  
Antiguo 04/07/2006, 05:29
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
si te salta este error: Fatal error: Call to undefined function: password().
es porque no encuentra esa funcion... esta en la misma pagina? si esta en otra la incluyes en la pagina q vas a usar?
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #9 (permalink)  
Antiguo 04/07/2006, 05:30
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 11 años, 5 meses
Puntos: 0
$sql = "SELECT * FROM $table_name
WHERE login = ".$login1." AND password = ".password($pass1);
  #10 (permalink)  
Antiguo 04/07/2006, 05:47
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
NO, no tengo definida ninguna función. Lo unico que tengo es lo que he comentado aquí. Como sería la función de password?


Muchas gracias!
  #11 (permalink)  
Antiguo 04/07/2006, 05:55
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
para q quieres una funcion de password? para encriptarlo?
con esto te bastaria.. si no tienes ninguna encriptacion
Código PHP:
$sql "SELECT * FROM $table_name 
WHERE login = '"
.$login1."' AND password = '".$pass."'"
en caso de q quisieras encriptar un password para insertarlo en tu BD, usa md5
y para recuperarlo igual!

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #12 (permalink)  
Antiguo 05/07/2006, 04:19
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
He usado md5 y he consegido que se añada a la base de datos correctamente. En cambio, php no me imprime igual la contraseña que en mysql. Mi código es el siguiente:

?
$nombre=$_POST['nombre'];
$password = stripslashes($_POST["pass"]);
$password = strip_tags($password);
$caracteres_password = strlen($password); // quitamos caracteres maliciosos
$password_encriptado = MD5($password); //codificación del password
$db_name = "txustyweb";

$table_name = "usuarios";

$connection = @mysql_connect('localhost','prueba','pass')

or die("Couldn't connect.");

$db = mysql_select_db($db_name, $connection)

or die("Couldn't select database.");

$sql=mysql_query("SELECT * FROM usuarios WHERE Nombre='$_POST[nombre]'and Password='$password_encriptado'");
$num = mysql_numrows($sql);
$password = md5($password);

if ($num != 0) {



$msg = "<P>Felicidades. El acceso ha sido autorizado</p>";



} else {



echo "no";

}


?>

El pass en mysql se añade así --> fe01ce2a7fbac8fafaed

y si hago un echo de la pass en php veo esto -->fe01ce2a7fbac8fafaed7c982a04e229no

Podemos ver que son iguales pero la de abajo es más larga. Por que puede pasar?

saludos
  #13 (permalink)  
Antiguo 05/07/2006, 04:23
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años, 1 mes
Puntos: 1
para que vuelves a hacer el md5 que te pongo en negrita?

$nombre=$_POST['nombre'];
$password = stripslashes($_POST["pass"]);
$password = strip_tags($password);
$caracteres_password = strlen($password); // quitamos caracteres maliciosos
$password_encriptado = MD5($password); //codificación del password
$db_name = "txustyweb";

$table_name = "usuarios";

$connection = @mysql_connect('localhost','prueba','pass')

or die("Couldn't connect.");

$db = mysql_select_db($db_name, $connection)

or die("Couldn't select database.");

$sql=mysql_query("SELECT * FROM usuarios WHERE Nombre='$_POST[nombre]'and Password='$password_encriptado'");
$num = mysql_numrows($sql);
$password = md5($password);
__________________
ALOZORRO v5.0 (ahora en .es)
  #14 (permalink)  
Antiguo 05/07/2006, 04:27
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Cita:
Iniciado por txusta77
El pass en mysql se añade así --> fe01ce2a7fbac8fafaed

y si hago un echo de la pass en php veo esto -->fe01ce2a7fbac8fafaed7c982a04e229no

Podemos ver que son iguales pero la de abajo es más larga. Por que puede pasar?

saludos
Probablemente porque el limite de caracteres en el campo de MySQL es inferior al que insertas y se trunca?
  #15 (permalink)  
Antiguo 05/07/2006, 05:10
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
He quitado la linea de negrita y sigue igual. Tambien le he dado varchar=50 a la contraseña, que antes tenia varchar=20. He reiniciado el mysql pero la contraseña sigue siendo de 20 digitos. En cambio en php es más larga. Que raro..
  #16 (permalink)  
Antiguo 05/07/2006, 05:15
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Al insertarla nuevamente? O esperabas que el string truncado se alargara?
  #17 (permalink)  
Antiguo 05/07/2006, 05:27
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
Al insertarlo nuevamente, después de alargar el varchar.
  #18 (permalink)  
Antiguo 05/07/2006, 05:34
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Por lo que comentas parece que aun sigue truncandote la contraseña... Ya eso es raro. Una vez alargado el varchar ya debería insertarlo bien porque no veo que tu mismo lo trunques en ningun lado. Has mirado en el codigo que inserta la contraseña?

A ver si al haber puesto el varchar a 20 antes por código tú mismo truncas la clave antes de insertarla y x eso sigue truncada.
  #19 (permalink)  
Antiguo 05/07/2006, 05:41
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
Por código no le he dado ningún valor al varchar. Lo único que tengo es el código que he puesto antes. Lo que quiero es que cuando un usuario inserte nombre y contraseña, compruebe en la base de datos y si esta, que deje acceder a otra página. Eso ya lo he consegido, pero a la hora de intentar que la contraseña este encriptada...es cuando he cambiado todo y me he perdido.
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 15:30.