Autor Tema: [Problema] PHP - Sistem logueo  (Leído 1460 veces)

Desconectado BobEsponja

  • PHPerit@
  • *
  • Mensajes: 21
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
[Problema] PHP - Sistem logueo
« en: 19 de Febrero de 2012, 23:51:52 pm »
Tengo un problema en PHP, Es el siguiente:

Estoy implementando un sistema de usuarios a mi sitio web y ya e logrado crear el registro de usuarios y que la pass en mysql se encrypte a MD5, pero en el logueo me sale que la contraseña es incorrecta, Siendo la pass correcta.

Código:
Código: [Seleccionar]
<?php
session_start
();
include(
"../inc/inc.config.php");
$username mysql_real_escape_string($_POST[&#39;username&#39;]);
$password md5(mysql_real_escape_string($_POST[&#39;password&#39;]));
$pass mysql_fetch_array(mysql_query("SELECT * FROM users WHERE username = &#39;$username&#39;"));
$user_exist mysql_num_rows(mysql_query("SELECT username FROM users WHERE username = &#39;$username&#39;"));
if(
$_POST[&#39;username&#39;] == ""){
echo "No has introducido tu nombre de usuario";
}elseif(
$user_exist == "0"){
echo 
"Este usuario no existe";
}elseif(
$_POST[&#39;password&#39;] == ""){
echo "Debes introducir tu contraseña";
}elseif(
$password != $pass[&#39;password&#39;]){
echo "La contraseña es incorrecta";
}else{
$_SESSION[&#39;username&#39;] = $pass[&#39;username&#39;];
header("location: ./");
}
?>
Cuando intento loguearme me sale que la pass es incorrecta.
Diganme si hay algo mal.
Perdonen es que soy medio-nuevo en PHP
« Última modificación: 19 de Febrero de 2012, 23:55:16 pm por BobEsponja »
Prograso PHP: 65%

Comunidad PHPeros

[Problema] PHP - Sistem logueo
« en: 19 de Febrero de 2012, 23:51:52 pm »

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Problema] PHP - Sistem logueo
« Respuesta #1 en: 20 de Febrero de 2012, 00:10:56 am »

Hola BobEsponja,

Antes que nada, darte la bienvenida al foro ;).
Respecto a tu duda es algo lógico. Si tu guardas la contraseña en la base de datos en MD5 al comparar la contraseña que has puesto con la encriptada pues claro que te dice que es incorrecta por que justamente en ese momento estás comparando, por ejemplo, 123456 con e10adc3949ba59abbe56e057f20f883e

Entonces, para poder comparar tienes que encriptar temporalmente la contraseña introducida en una variable.
Tan solo remplaza la línea:

$password 
mysql_real_escape_string($_POST[&#39;password&#39;]);

por:

$password 
md5(mysql_real_escape_string($_POST[&#39;password&#39;]));


Prueba y cuéntanos.

Un saludo,
Siquillote.

#Fdo. Physlet

Desconectado BobEsponja

  • PHPerit@
  • *
  • Mensajes: 21
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Problema] PHP - Sistem logueo
« Respuesta #2 en: 20 de Febrero de 2012, 00:19:00 am »
Hola BobEsponja,

Antes que nada, darte la bienvenida al foro ;).
Respecto a tu duda es algo lógico. Si tu guardas la contraseña en la base de datos en MD5 al comparar la contraseña que has puesto con la encriptada pues claro que te dice que es incorrecta por que justamente en ese momento estás comparando, por ejemplo, 123456 con e10adc3949ba59abbe56e057f20f883e

Entonces, para poder comparar tienes que encriptar temporalmente la contraseña introducida en una variable.
Tan solo remplaza la línea:

$password 
mysql_real_escape_string($_POST[&#39;password&#39;]);

por:

$password 
md5(mysql_real_escape_string($_POST[&#39;password&#39;]));


Prueba y cuéntanos.

Un saludo,
Siquillote.
Si, Ya arregle eso, Pero ahora me sale un error de sintaxis en esta linea:
$pass = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE username = ".$password."");
Prograso PHP: 65%

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Problema] PHP - Sistem logueo
« Respuesta #3 en: 20 de Febrero de 2012, 00:22:54 am »
Si, Ya arregle eso, Pero ahora me sale un error de sintaxis en esta linea:
$pass = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE username = ".$password."");

Claro; te falta agregar un ) al final de la cadena, antes del punto y coma.

Un saludo,
Siquillote

#Fdo. Physlet

Desconectado BobEsponja

  • PHPerit@
  • *
  • Mensajes: 21
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Problema] PHP - Sistem logueo
« Respuesta #4 en: 20 de Febrero de 2012, 00:37:10 am »
Me sigue diciendo que la pass es incorrecta ve.

logueo:
Código: [Seleccionar]
<?php
session_start
();
include(
"../inc/inc.config.php");
$username mysql_real_escape_string($_POST[&#39;username&#39;]);
$password md5(mysql_real_escape_string($_POST[&#39;password&#39;]));
$pass mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE password = &#39;".$password."&#39;" ));
$user_exist mysql_num_rows(mysql_query("SELECT * FROM `users` WHERE username = &#39;".$username."&#39;"));
if(
$_POST[&#39;username&#39;] == ""){
echo "No has introducido tu nombre de usuario";
}elseif(
$user_exist == "0"){
echo 
"Este usuario no existe";
}elseif(
$_POST[&#39;password&#39;] == ""){
echo "Debes introducir tu contraseña";
}elseif(
$password != $pass[&#39;password&#39;]){
echo "La contraseña es incorrecta";
}else{
$_SESSION[&#39;username&#39;] = $pass[&#39;username&#39;];
header("location: ./");
}
?>
Registro:
Código: [Seleccionar]
<?php
//Incluimos la conexión a la DB
include("../inc/inc.config.php");
//Comprobamos que ningún campo quede vacío
if(isset($_POST[&#39;registro&#39;])){
//Filtramos los POST con la función mysql_real_escape_string() para evitar inyección
$name mysql_real_escape_string($_POST[&#39;name&#39;]);
$username mysql_real_escape_string($_POST[&#39;username&#39;]);
$password mysql_real_escape_string($_POST[&#39;password&#39;]);
$email mysql_real_escape_string($_POST[&#39;email&#39;]);
$fecha mysql_real_escape_string($_POST[&#39;fecha&#39;]);
$sobre_mi mysql_real_escape_string($_POST[&#39;sobre_mi&#39;]);
//Comprobamos que no exista el usuario
$exist_username mysql_num_rows(mysql_query("SELECT * FROM `users` WHERE username = ".$username." "));
$exist_email mysql_num_rows(mysql_query("SELECT * FROM `users` WHERE email = ".$email." "));
if(
$name == ""){
echo 
"El campo &#39;Nombre&#39; no puede quedar vacío";
}elseif(
$exist_username>0){
echo 
"Este usuario ya existe";
}elseif(
$fecha == ""){
echo 
"Fecha invalida";
}elseif(
$password == ""){
echo 
"El campo &#39;Contraseña&#39; no puede quedar vacío";
}elseif(
$email == ""){
echo 
"El campo &#39;Email&#39; no puede quedar vacío";
}elseif(
$fecha == ""){
echo 
"Fecha invalida";
}elseif(
$sobre_mi ==""){
echo 
"Ingrese algo sobre usted";
}else{
//Si todo es correcto procedemos a insertar el usuario en la DB
//Encriptamos la contraseña
$pass md5($password);
mysql_query("INSERT INTO users (name,username,password,email,fecha,sobre_mi) VALUES (".$name.&#39;,&#39;.$username.&#39;,&#39;.$pass.&#39;,&#39;.$email.&#39;,&#39;.$fecha.&#39;,&#39;.$sobre_mi.")");
echo "Haz sido registrado con exito";
header("Location: ./");
}
}
?>
Prograso PHP: 65%

Desconectado DjAlan

  • PHPerit@
  • *
  • Mensajes: 5
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Problema] PHP - Sistem logueo
« Respuesta #5 en: 24 de Marzo de 2012, 23:34:24 pm »
Me sigue diciendo que la pass es incorrecta ve.

logueo:
Código: [Seleccionar]
<?php
session_start
();
include(
"../inc/inc.config.php");
$username mysql_real_escape_string($_POST[&#39;username&#39;]);
$password md5(mysql_real_escape_string($_POST[&#39;password&#39;]));
$pass mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE password = &#39;".$password."&#39;" ));
$user_exist mysql_num_rows(mysql_query("SELECT * FROM `users` WHERE username = &#39;".$username."&#39;"));
if(
$_POST[&#39;username&#39;] == ""){
echo "No has introducido tu nombre de usuario";
}elseif(
$user_exist == "0"){
echo 
"Este usuario no existe";
}elseif(
$_POST[&#39;password&#39;] == ""){
echo "Debes introducir tu contraseña";
}elseif(
$password != $pass[&#39;password&#39;]){
echo "La contraseña es incorrecta";
}else{
$_SESSION[&#39;username&#39;] = $pass[&#39;username&#39;];
header("location: ./");
}
?>
Registro:
Código: [Seleccionar]
<?php
//Incluimos la conexión a la DB
include("../inc/inc.config.php");
//Comprobamos que ningún campo quede vacío
if(isset($_POST[&#39;registro&#39;])){
//Filtramos los POST con la función mysql_real_escape_string() para evitar inyección
$name mysql_real_escape_string($_POST[&#39;name&#39;]);
$username mysql_real_escape_string($_POST[&#39;username&#39;]);
$password mysql_real_escape_string($_POST[&#39;password&#39;]);
$email mysql_real_escape_string($_POST[&#39;email&#39;]);
$fecha mysql_real_escape_string($_POST[&#39;fecha&#39;]);
$sobre_mi mysql_real_escape_string($_POST[&#39;sobre_mi&#39;]);
//Comprobamos que no exista el usuario
$exist_username mysql_num_rows(mysql_query("SELECT * FROM `users` WHERE username = ".$username." "));
$exist_email mysql_num_rows(mysql_query("SELECT * FROM `users` WHERE email = ".$email." "));
if(
$name == ""){
echo 
"El campo &#39;Nombre&#39; no puede quedar vacío";
}elseif(
$exist_username>0){
echo 
"Este usuario ya existe";
}elseif(
$fecha == ""){
echo 
"Fecha invalida";
}elseif(
$password == ""){
echo 
"El campo &#39;Contraseña&#39; no puede quedar vacío";
}elseif(
$email == ""){
echo 
"El campo &#39;Email&#39; no puede quedar vacío";
}elseif(
$fecha == ""){
echo 
"Fecha invalida";
}elseif(
$sobre_mi ==""){
echo 
"Ingrese algo sobre usted";
}else{
//Si todo es correcto procedemos a insertar el usuario en la DB
//Encriptamos la contraseña
$pass md5($password);
mysql_query("INSERT INTO users (name,username,password,email,fecha,sobre_mi) VALUES (".$name.&#39;,&#39;.$username.&#39;,&#39;.$pass.&#39;,&#39;.$email.&#39;,&#39;.$fecha.&#39;,&#39;.$sobre_mi.")");
echo "Haz sido registrado con exito";
header("Location: ./");
}
}
?>
Claro, en la query del login estás seleccionando todas las contraseñas de la tabla
En todo caso sería:
Código: [Seleccionar]
mysql_query('SELECT `password` FROM `users` WHERE `nick` = \''.$username.'\'');