Tema destacado: Recuperar cuenta de Google, GMail, Youtube
Autor
|
Tema: Login con md5 , BD funciona pero no funciona (Leído 2,070 veces)
|
securedigital
Desconectado
Mensajes: 532
Do you enjoy with IBM OS/400 ¿
|
Hola a todos. Tengo mi web site, con un login para entrar, este login consulta en la BD el usuario y el password en md5. Obviamente la bd contiene por ejemplo User pepito pass 21545615645456456465 (md5 inventado) El hacer clic para entrar vuleve a cargar el login, de forma que no accede a la pagina siguiente, se queda atascado y si pongo un user i pasword inventados hace lo mismo. Segun como esta programado deberia aparecer mensajes de error si el usuario no esta en la BD , pero no aparece NADA, simplemente vuleve a cargar el login. Teoricamente deberia passar a Principal.php <?php
$host="localhost"; $user="**********"; //usuari de la base de dades $pass="********"; //password de la base de dades $db="login"; //nom de la base de dades
mysql_connect($host,$user,$pass) or die (mysql_error()); mysql_select_db($db) or die(mysq_error());
?> <?php
define('CONFIG','config-main.php'); include(CONFIG); if (!$_POST['submit']){ echo "<form name='login' method='post' action='index.php'> <input type='text' name='user' /><br /> <input type='password' name='pass' /><br> <input type='submit' value='Entrar' name='sumbit' /><input type='reset' value='Esborrar' /> </form>"; } else { $user = $_POST['user']; $pass = md5($_POST['pass']);
$query = mysql_query("Select * from login where User = '$user'"); $query = mysql_num_rows($query);
if ($query == 0) { echo "No s'ha trobat l'usuari.<br /> <a href='index.php'>Tornar enrere</a>"; } else { $query2 = mysql_fetch_array($query); if ($query2['Pass'] != $pass) { echo "Les contrasenyes no coincideixen.<br /> <a href='index.php'>Tornar enrere</a>"; } else { session_start(); $_SESSION['user'] = $user;
header("Location: Principal.php"); } } } ?>
Principal.php tiene este script, de forma que si no has superado el login , pues no entras. <?php session_start(); include ("config-main.php"); $query = mysql_query("Select * from login where User = $_SESSION['user']"); $query = mysql_num_rows($query);
if ($query != 1){ header("Location index.php"); } else { } ?> Saludos
|
|
|
|
« Última modificación: 12 Mayo 2007, 20:28 por securedigital »
|
En línea
|
The man who whispered to the computers Der Mann, der zu den Computern flüsterte FAD58DE7366495DB4650CFEFAC2FCD61 
|
|
|
Mance
Desconectado
Mensajes: 2.805
|
config-main.php en la línea. mysql_select_db($db) or die(mysq_error()); es mysql_select_db($db) or die(mysql_error()); mysq l_error() la "L"...  . if ($query2['Pass'] != $pass) { ¿No sería $query2['pass'] != $pass... lo digo por la mayúscula. revisa el código entero ...
|
|
|
|
« Última modificación: 13 Mayo 2007, 17:11 por Mancebo »
|
En línea
|
|
|
|
securedigital
Desconectado
Mensajes: 532
Do you enjoy with IBM OS/400 ¿
|
ostras, esto se me havia colado... He arreglado esos problemas y sigue igual. Es muy raro ya que si pongo qualquier user y passwd no salta el mensaje de error, por lo que halgo me falla en index.php pero no veo que demonios es. De todas formas intento ir a Principal.php manualmente que es teoricamente donde tiene que redireccionar el index.php y ahora me sale un error. Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/export/www/hosting/Principal.php on line 4 esta linea que da error esta arriba, esta todo el codigo de Principal.php. $query = mysql_query(\"Select * from login where User = $_SESSION[\'user\']\"); No esta passando correctamente el Session, por lo que al index algo le pasa. Saludos
|
|
|
|
« Última modificación: 13 Mayo 2007, 23:36 por securedigital »
|
En línea
|
The man who whispered to the computers Der Mann, der zu den Computern flüsterte FAD58DE7366495DB4650CFEFAC2FCD61 
|
|
|
Rentero
Ex-Staff
Desconectado
Mensajes: 1.163
La paciencia es la madre de la ciencia.
|
Parse error: Son errores de sintaxis. $query = mysql_query("Select * from login where User = $_SESSION['user']"); No tienes porqué escapar la comillas.
|
|
|
|
|
En línea
|
Firmado.
|
|
|
securedigital
Desconectado
Mensajes: 532
Do you enjoy with IBM OS/400 ¿
|
Hola He dejado la linea esta asi: $query = mysql_query("Select * from login where User = $_SESSION['user']"); Sigue dando el mismo error.
|
|
|
|
|
En línea
|
The man who whispered to the computers Der Mann, der zu den Computern flüsterte FAD58DE7366495DB4650CFEFAC2FCD61 
|
|
|
Hans el Topo
Desconectado
Mensajes: 1.748
"Estoy cansado de no hacer nada"
|
Hola He dejado la linea esta asi: $query = mysql_query("Select * from login where User = '".$_SESSION['user']."'); Sigue dando el mismo error. $query = mysql_query("select * from login where User = '".$_SESSION['user']."'",$puntero_al_conector); Las cadenas se comparan con comillas simples en sql xD
|
|
|
|
|
En línea
|
|
|
|
securedigital
Desconectado
Mensajes: 532
Do you enjoy with IBM OS/400 ¿
|
Bien, ahora ya no da el error, pero al introducir el usuario y password correcto entra a Principal.php, pero es que si le meto cualquier otro que no este en la BD tambien entra y no sale ni mensage de advertencia ni te redirecciona a index.php para poner el user adecuado. Por cierto, $puntero_al_conector ?¿? puntero al conector ? no te entiendo Saludos
|
|
|
|
|
En línea
|
The man who whispered to the computers Der Mann, der zu den Computern flüsterte FAD58DE7366495DB4650CFEFAC2FCD61 
|
|
|
|
|
securedigital
Desconectado
Mensajes: 532
Do you enjoy with IBM OS/400 ¿
|
Arreglado header("Location index.php"); a header("Location: index.php"); He retocado un poco la estrucutra del codigo, siquieren la publico, funciona mejor pero aun no del todo bien. Saludos
|
|
|
|
|
En línea
|
The man who whispered to the computers Der Mann, der zu den Computern flüsterte FAD58DE7366495DB4650CFEFAC2FCD61 
|
|
|
|
|
securedigital
Desconectado
Mensajes: 532
Do you enjoy with IBM OS/400 ¿
|
Hola Bua, sigue aún que no entra bien.  Consegui que entrara, preo si se ponia el passwd bien o mal entraba de todas formas...pero al final lo dejo de otra forma. He cambiado algunas cositas. Aver si alguien puede ver que demonios le passa. index.php<?php
//define('CONFIG','config-main.php'); //include(CONFIG); include("config-main.php"); if (!$_POST['submit']){ echo "<form name='login' method='post' action='index.php'> <input type='text' name='user' /><br /> <input type='password' name='pass' /><br> <input type='submit' value='Entrar' name='sumbit' /><input type='reset' value='Esborrar' /> </form>"; } else { $user = $_POST['user']; $pass = md5($_POST['pass']);
$query = mysql_query("Select * from login where User = '$user'"); $query = mysql_num_rows($query);
if ($query == 0) { echo "No s'ha trobat l'usuari.<br /> <a href='index.php'>Tornar enrere</a>"; } else { $query2 = mysql_query("Select * from login where User = '$user'"); $query2 = mysql_fetch_array($query2); if ($pass != $query2['pass']) { echo "Les contrasenyes no coincideixen.<br /> <a href='index.php'>Tornar enrere</a>"; } else { session_start(); $_SESSION['user'] = $user;
header("Location: Principal.php"); } } } ?> Principal.php<?php session_start(); include ("config-main.php");
//$query = mysql_query("Select * from login where User = $_SESSION['user']"); // linea que daba ERROR y ahora no $query = mysql_query("select * from login where User = '".$_SESSION['user']."'"); $query = mysql_num_rows($query);
if ($query != 1){ header("Location: index.php");
} else { echo "Aqui deberia mostrar el contenido"; } ?> config-main.php<?php
$host="localhost"; $user="*********"; //usuari de la base de dades $pass="********"; //password de la base de dades $db="******"; //nom de la base de dades
//$conexion = mysql_connect($host,$user,$pass); //mysql_select_db($db,$conexion);
//mysql_connect($host,$user,$pass); //mysql_select_db(*******);
mysql_connect($host,$user,$pass) or die (mysql_error()); mysql_select_db($db) or die(mysql_error());
?> Saludos
|
|
|
|
|
En línea
|
The man who whispered to the computers Der Mann, der zu den Computern flüsterte FAD58DE7366495DB4650CFEFAC2FCD61 
|
|
|
Rentero
Ex-Staff
Desconectado
Mensajes: 1.163
La paciencia es la madre de la ciencia.
|
Holas. ¿Ya funciona? No estoy siguiendo el post pero un par de cosillas. En la página de login tienes que filtar la variable $user($_POST['user']) con htmlspecialchars(), addslashes(), etc por el tema de la seguridad. No puedes utilizar una variable para una consulta sin antes filtrar su cotenido, sino tendrás problemas con SQL inyection y demás. Otra cosilla por decir algo, en las páginas que quieras proteger no es necesarrio que hagas ninguna consulta. Puedes hacerlo simplemente comprobando si existe $_SESSION['user']Saludos 
|
|
|
|
|
En línea
|
Firmado.
|
|
|
securedigital
Desconectado
Mensajes: 532
Do you enjoy with IBM OS/400 ¿
|
Principal.php Arreglado, el tema de sql injection ya me lo he estado mirando, pero antes que nada que el codigo funcione correctamente....antes de lialr mas codigo allí. Sige sin funcionar. Principal.php<?php session_start(); include ("config-main.php");
//$query = mysql_query("Select * from login where User = $_SESSION['user']"); // linea que daba ERROR y ahora no
//$query = mysql_query("select * from login where User = '".$_SESSION['user']."'"); //$query = mysql_num_rows($query);
//if ($query != 1){ if ($_SESSION[user] == NULL){ header("Location: index.php");
} else { echo "Aqui deberia mostrar el contenido"; } ?>
|
|
|
|
|
En línea
|
The man who whispered to the computers Der Mann, der zu den Computern flüsterte FAD58DE7366495DB4650CFEFAC2FCD61 
|
|
|
Rentero
Ex-Staff
Desconectado
Mensajes: 1.163
La paciencia es la madre de la ciencia.
|
Hola. ¿No te funciona? ¿Te da algún error? ¿Cual es el problema? Prueba esto: <?php error_reporting(E_ALL); //para que muestre todos los errores session_start(); include("config-main.php");
if (isset($_POST['entrar'])) { $user = $_POST['user']; //filtrar esto $pass = md5($_POST['pass']);
$query = mysql_query("Select * from login where User='$user'"); $resultados = mysql_num_rows($query);
if ($resultados > 0) { $query2 = mysql_query("Select pass from login where User='$user'"); $contra = mysql_fetch_array($query2);
if ($pass == $contra['pass']) { $_SESSION['user'] = $user; header("Location: Principal.php"); }else{ echo "Les contrasenyes no coincideixen.<br /><a href='index.php'>Tornar enrere</a>"; }
}else{ echo "No s'ha trobat l'usuari.<br /><a href='index.php'>Tornar enrere</a>"; } } ?> <form name='login' method='post' action='index.php'> <input type='text' name='user' /><br /> <input type='password' name='pass' /><br> <input type='submit' value='Entrar' name='entrar' /><input type='reset' value='Esborrar' /> </form> Teóricamente debería funcionar. error_reporting() lo usamos para que muestre todos los errores o avisos durante la ejecución del archivo. No s sirve para ver si hay algún problema por parte de PHP. Sinceramente solo le he echado un vistazo por encima, pero prueba ese index.php y nos cuentas que pasa con más detalle  Otra cosa: ¿ User va con mayúscula en la base de datos? Otra más: En las páginas protegidas. Debería bastar con: <?php session_start();
if (isset($_SESSION['user'])) { echo "Aqui deberia mostrar el contenido"; } else { header("Location: index.php"); } ?>
|
|
|
|
« Última modificación: 21 Mayo 2007, 00:26 por Rentero »
|
En línea
|
Firmado.
|
|
|
SeniorX
Desconectado
Mensajes: 1.347
Programador Novato
|
Otra más: En las páginas protegidas. Debería bastar con: <?php session_start();
if (isset($_SESSION['user'])) { echo "Aqui deberia mostrar el contenido"; } else { header("Location: index.php"); } ?> Cuidado con eso, que es muy vulnerable. Debes chequear si la sesion es correcta, es decir si el nombre de usuario y la password coinciden. Lo que haces con el isset($_SESSION['user']) es ver si la sesion tiene un nombre de usuario nada mas. Ojo con eso.
|
|
|
|
|
En línea
|
try { live(); } catch (ShitHappensException ex) { MessageBox.Show(ex.Solution) } Precaución: La programacion puede producir adiccion
|
|
|
|
| Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Subnets, por que funciona?
Redes
|
alvaromat
|
2
|
1,749
|
2 Diciembre 2010, 01:27
por thedoctor77
|
|
|
javaw.exe no funciona
Dudas Generales
|
flony
|
4
|
2,738
|
29 Noviembre 2010, 18:35
por flony
|
|
|
onChange no funciona
Desarrollo Web
|
Riki_89D
|
3
|
1,682
|
6 Diciembre 2010, 11:02
por Riki_89D
|
|
|
Tarjeta Gráfica no funciona en un PC, pero en otro sí
Hardware
|
Crises
|
3
|
1,958
|
22 Febrero 2011, 20:56
por simorg
|
|
|
Nanostation 2 , me funciona pero con problemas
Hacking Wireless
|
echostardigital
|
1
|
804
|
25 Octubre 2011, 10:30
por ChimoC
|
|