Autor Tema: [Problema] PHP - Sistem logueo  (Leído 1461 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.'\'');