Bueno, por lo menos ya sé buscar algún que otro fallo, it's something jajajaja
Entonces sigue dando error no?

Bueno, por lo menos ya sé buscar algún que otro fallo, it's something jajajaja
Entonces sigue dando error no?
Bueno revisando tu codigo tienes algunos errores:
registrando.php
entrar.phpCódigo PHP:include("conexcion.php");
$fecha=date("d/m/Y");
/* Filtras las variables POST pero sigues filtrando la misma variable cuando deberia ser asi:
$autor=strip_tags($_POST["autor"]);
$autor=htmlentities($autor);
$clave=strip_tags($_POST["clave"]);
$clave=htmlentities($clave);
$clave=stripslashes($clave);
$clave=htmlspecialchars($clave);
$acepto=strip_tags($_POST["acepto"]);
$acepto=htmlentities($acepto);
*/
$autor=strip_tags($_POST["autor"]);
$autor=htmlentities($_POST["autor"]);
$clave=strip_tags($_POST["clave"]);
$clave=htmlentities($_POST["clave"]);
$clave=stripslashes($_POST["clave"]);
$clave=htmlspecialchars($_POST["clave"]);
$clave=md5($clave);
$acepto=strip_tags($_POST["acepto"]);
$acepto=htmlentities($_POST["acepto"]);
$autor=mysql_real_escape_string($autor);
/* Todo Tu proceso de seguridad y filtracion no sirven si al final terminar trabajando con las variables POST[] */
if (empty ($_POST["autor"]) || (empty($_POST["clave"]))){
echo "<h3>Debes rellenar todos los datos</h3>";
echo "<center><img alt='policia' src='img/Policia.gif' height='130' width='165' /><br/>";
echo "<br/><input type='button' value='volver' name='volver' onclick='history.back()' /></center>";
} else {
$registrando=mysql_query("SELECT autor FROM usuarios WHERE autor='$autor'");
if ($nuevousuario=mysql_fetch_array($registrando)){
echo "<h3>*".$autor."*, ya existe</h3>";
echo "<center><img alt='policia' src='img/Policim a.gif' height='130' width='165' /><br/>";
echo "<h3>elige otro</h3>";
echo "<br/><input type='button' value='volver' name='volver' onclick='history.back()' /></center>";
} else {
if ($_POST["acepto"] == 'aceptar'){ // le pasaste el filtro de seguiridad pero al final trabajas con la variable como es enviada
mysql_query("INSERT INTO usuarios(autor,clave,fechaInscripcion)
values('$autor','$clave','$fecha')") or die ('Solo caracteres latinos ó numeros');
echo "<h4>Te has registrado con exito</h4><h3> ".$autor."</h3>";
echo "<img alt='sexy' src='img/Policia-sexy.gif' height='200' width='204' />";
echo "<h4>Ya formas parte como miembro de este portal</h4>";
echo "<h3>Para entrar clikea <a href='portal.html'>aqui</a></h3>";
setcookie("usuario",$autor,time()+7776000);
setcookie("contrasena",$clave,time()+7776000);
} else {
echo "<h3>Debe aceptar las condiciones</h3>";
echo "<center><img alt='policia' src='img/Policia.gif' height='130' width='165' /><br/>";
echo "<br/><input type='button' value='volver' name='volver' onclick='history.back()' /></center>";
}
}
}
echo "</div></center>";
exit;
Código PHP:if (isset($_COOKIE["usuario"]) && isset($_COOKIE["contrasena"])){
Header("Location: foro/foro.php");
}
include("conexcion.php");
$fecha=date("d/m/Y");
/* Filtras las variables POST pero sigues filtrando la misma variable cuando deberia ser asi:
$autor=strip_tags($_POST["autor"]);
$autor=htmlentities($autor);
$clave=strip_tags($_POST["clave"]);
$clave=htmlentities($clave);
$clave=stripslashes($clave);
$clave=htmlspecialchars($clave);
$acepto=strip_tags($_POST["acepto"]);
$acepto=htmlentities($acepto);
*/
$autor=strip_tags($_POST["autor"]);
$autor=htmlentities($_POST["autor"]);
$clave=strip_tags($_POST["clave"]);
$clave=htmlentities($_POST["clave"]);
$clave=stripslashes($_POST["clave"]);
$clave=htmlspecialchars($_POST["clave"]);
$clave=md5($clave);
$acepto=strip_tags($_POST["acepto"]);
$acepto=htmlentities($_POST["acepto"]);
$autor=mysql_real_escape_string($autor);
$clave=mysql_real_escape_string($clave); // esta linea no es necesaria pues la clave ya esta en md5 y es solo una cadena alfanumerica
//Buscamos en la tabla si existe un usuario con ese nombre y esa contraseña
/* En la siguiente consulta cometes un error grave, dices que clave='md5($clave)' cuando deveria ser unicamente clave='$clave' pues ya has encriptado la clave al comienzo*/
$registrado=mysql_query("SELECT autor, clave FROM usuarios WHERE autor='$autor' AND clave='md5($clave)'");
//Si existe un usuario con ese alias y esa clave, entra.
if ($usuario=mysql_fetch_array($registrado)){
Header("Location: portal.html");
setcookie("usuario",$autor,time()+7776000);
setcookie("contrasena",$clave,time()+7776000);
exit;
} else {
echo "<center><img alt='policia' src='img/Policia.gif' height='130' width='165' /><br/>";
echo "<h2>Area exclusiva de los miembros</h2>";
echo "<input type='button' value='volver' name='volver' onclick='history.back()' /></center>";
}
exit;
Vale, despues de seguir tus correcciones, serverdns, me sigue dando "Area exclusiva de miembros" , osea que una vez registrado con md5, cuando inicia otra session no me reconoce la clave. ¿Donde está el error?
Ahora queda asi, aqui se registra por 1ª vez.
registrando.phpy aqui inicia otra sessionCódigo PHP:$autor=strip_tags($_POST["autor"]);
$autor=htmlentities($autor);
$autor=mysql_real_escape_string($autor);
$clave=strip_tags($_POST["clave"]);
$clave=htmlentities($clave);
$clave=stripslashes($clave);
$clave=htmlspecialchars($clave);
$clave=md5($clave);
$acepto=strip_tags($_POST["acepto"]);
$acepto=htmlentities($acepto);
if (empty ($autor) || (empty($clave))){
entrar.phpCódigo PHP:$autor=strip_tags($_POST["autor"]);
$autor=htmlentities($autor);
$autor=mysql_real_escape_string($autor);
$clave=strip_tags($_POST["clave"]);
$clave=htmlentities($clave);
$clave=stripslashes($clave);
$clave=htmlspecialchars($clave);
$clave=mysql_real_escape_string($clave);
$clave=md5($clave);
$acepto=strip_tags($_POST["acepto"]);
$acepto=htmlentities($acepto);
//Buscamos en la tabla si existe un usuario con ese nombre y esa contraseña
$registrado=mysql_query("SELECT autor, clave FROM usuarios WHERE autor='$autor' AND clave='$clave'");
Última edición por gjulian; 13/08/2011 a las 20:30
lo mejor de caerse al tropezar, es volverse a levantar.
http://alquilabusevilla.freetzi.com
http://misevillaguapa.freetzi.com
Bueno, para poder ayudarte mejor debes poner todo el codigo que utilizas pues esos fracmentos no me dicen nada, son practicamente los mismo que en los post anteriores, no se especifica como llegan los datos, si vienen de algun formulario o intentas recuperar los datos de la session iniciada al registrarte, o como es que inicias la session.
Evidentemente las variables vienen de los nombres de los input de un formulario asi de registro.htmlllega a registrando.php:Código HTML:<h2>Registrate</h2> <center><form action="registrando.php" method="post" enctype="multipart/form-data" name="entrando"> <h3 style="color:black">Introduce tus datos</h3> <h4>nick</h4> <input type="text" name="autor" size="20" /> <h4>password</h4> <input type="password" name="clave" size="20" /><br/> <br/><input type="submit" value="entrar" class="enviar" /><br/> <input type="checkbox" name="acepto" value="aceptar" checked /> <small>He leido y acepto las <a href="condiciones.html">condiciones</a></small></center>Hasta aqui todo bien (o eso creo), pues se guarda todo en la bd y la clave codificada.Código PHP:<?
echo "<center><div id='registrando'>";
include("conexcion.php");
$fecha=date("d/m/Y");
$autor=strip_tags($_POST["autor"]);
$autor=htmlentities($autor);
$autor=mysql_real_escape_string($autor);
$clave=strip_tags($_POST["clave"]);
$clave=htmlentities($clave);
$clave=stripslashes($clave);
$clave=htmlspecialchars($clave);
$clave=md5($clave);
$acepto=strip_tags($_POST["acepto"]);
$acepto=htmlentities($acepto);
if (empty ($autor) || (empty($clave))){
echo "<h3>Debes rellenar todos los datos</h3>";
echo "<center><img alt='policia' src='img/Policia.gif' height='130' width='165' /><br/>";
echo "<br/><input type='button' value='volver' name='volver' onclick='history.back()' /></center>";
} else {
$registrando=mysql_query("SELECT autor FROM usuarios WHERE autor='$autor'");
if ($nuevousuario=mysql_fetch_array($registrando)){
echo "<h3>*".$autor."*, ya existe</h3>";
echo "<center><img alt='policia' src='img/Policia.gif' height='130' width='165' /><br/>";
echo "<h3>elige otro</h3>";
echo "<br/><input type='button' value='volver' name='volver' onclick='history.back()' /></center>";
} else {
if ($_POST["acepto"] == 'aceptar'){
mysql_query("INSERT INTO usuarios(autor,clave,fechaInscripcion)
values('$autor','$clave','$fecha')") or die ('Solo caracteres latinos ó numeros');
echo "<h4>Te has registrado con exito</h4><h3> ".$autor."</h3>";
echo "<img alt='sexy' src='img/Policia-sexy.gif' height='200' width='204' />";
echo "<h4>Ya formas parte como miembro de este portal</h4>";
echo "<h3>Para entrar clikea <a href='portal.html'>aqui</a></h3>";
setcookie("usuario",$autor,time()+7776000);
setcookie("contrasena",$clave,time()+7776000);
} else {
echo "<h3>Debe aceptar las condiciones</h3>";
echo "<center><img alt='policia' src='img/Policia.gif' height='130' width='165' /><br/>";
echo "<br/><input type='button' value='volver' name='volver' onclick='history.back()' /></center>";
}
}
}
echo "</div></center>";
exit;
?>
Despues si ese usuario registrado quiere comenzar session en otrto momento, si el navegador le borra las cookies al cerrar, tiene el form solo para miembros,que es:entrando.phpque manda los datos a entrar.phpCódigo PHP:?
if (isset($_COOKIE["usuario"]) && isset($_COOKIE["contrasena"])){
Header("Location: portal.html");
exit;
} else {
echo "<center><div id='entrando'>";
echo "<center><form action='entrar.php' method='post' enctype='multipart/form-data' name='entrando'>";
echo "<h2>Introduce tus datos</h2>";
echo "<h4>nick</h4>";
echo "<input type='text' name='autor' size='20' />";
echo "<h4>password</h4>";
echo "<input type='password' name='clave' size='20' /><br/>";
echo "<br/><input type='submit' value='entrar' class='enviar' />";
echo "</form>";
echo "</div></center>";
}
exit;
?>
Y es aqui donde me parece que esta el problema, pues no reconoce la clave.Código PHP:<?
if (isset($_COOKIE["usuario"]) && isset($_COOKIE["contrasena"])){
Header("Location: foro/foro.php");
}
include("conexcion.php");
$fecha=date("d/m/Y");
$autor=strip_tags($_POST["autor"]);
$autor=htmlentities($autor);
$autor=mysql_real_escape_string($autor);
$clave=strip_tags($_POST["clave"]);
$clave=htmlentities($clave);
$clave=stripslashes($clave);
$clave=htmlspecialchars($clave);
$clave=md5($clave);
$clave=mysql_real_escape_string($clave);
$acepto=strip_tags($_POST["acepto"]);
$acepto=htmlentities($acepto);
//Buscamos en la tabla si existe un usuario con ese nombre y esa contraseña
$registrado=mysql_query("SELECT autor, clave FROM usuarios WHERE autor='$autor' AND clave='$clave'");
//Si existe un usuario con ese alias y esa clave, entra.
if ($usuario=mysql_fetch_array($registrado)){
Header("Location: portal.html");
setcookie("usuario",$autor,time()+7776000);
setcookie("contrasena",$clave,time()+7776000);
exit;
} else {
echo "<center><img alt='policia' src='img/Policia.gif' height='130' width='165' /><br/>";
echo "<h2>Area exclusiva de los miembros</h2>";
echo "<input type='button' value='volver' name='volver' onclick='history.back()' /></center>";
}
exit;
?>
Si elimino la linea $clave=md5($clave); tanto de registrando.php como de entrar.php, todo va bien, pero con ella no. ¿que falla?
¿Que os parece?
Última edición por gjulian; 16/08/2011 a las 16:28
lo mejor de caerse al tropezar, es volverse a levantar.
http://alquilabusevilla.freetzi.com
http://misevillaguapa.freetzi.com
todo parece estar bien, quita esta linea de tus php $clave=mysql_real_escape_string($clave); no es necesaria pues la $clave va encriptada en md5 y es simplemente una cadena alfanumerica, tu script esta publicado en la web? podrias poner el link para testearlo.
No, no está publicada,trabajo en local con wampserver.
Yo tampoco me explico ¿porque, si al registrarte se introduce la clave codificada en md5, (que aparece en la bd) no la reconoce en otra session? Cuando tambien se envia la clave codificada en md5 al form de usuarios registrados.
No se, no se![]()
![]()
lo mejor de caerse al tropezar, es volverse a levantar.
http://alquilabusevilla.freetzi.com
http://misevillaguapa.freetzi.com
prueba borrando todos los registros de la base de datos y registrando nuevos, no se que mas puede ser, todo se ve bien, no puedo probarlo porque me arian falta tus tablas de la base de datos, pero a simple vista todo esta bien.
Nada, por mas que lo intento no hay manera, no doy con el fallo. Ni por que borre los registros de la bd e ingrese nuevos, ni nada.
Mira esta es la composicion de mi bd:
Me pregunto ¿No habrá que darle un atributo extra al campo clave? md5 por ejemplo.Código:Campo Tipo Cotejamiento Predeterminado Nulo Extra id int(6) Ninguna No auto_increment autor varchar(25) utf8_spanish_ci Ninguna No clave varchar(25) utf8_spanish_ci Ninguna No fechaInscripcion varchar(10) utf8_spanish_ci Ninguna No
Última edición por gjulian; 20/08/2011 a las 18:06
lo mejor de caerse al tropezar, es volverse a levantar.
http://alquilabusevilla.freetzi.com
http://misevillaguapa.freetzi.com
Ahora veo el error, tu error esta en el campo de la tabla en la base de datos clave varchar(25) el md5 te genera una cadena de 32 caracteres por lo tanto debes cambiar el tipo de campo de varchar(25) a varchar(32) y asi deberia funcionar todo correctamente.
el problema esta que al guardar el md5 en tu base de datos solo se guardan los primeros 25 caracteres y al comparar no coinciden porque el md5 son 32 caracteres.
¡¡ENHORABUENA!!
Eres un mounstro serverdns, yo no me habría dado cuenta nunca.
¿Siempre son 32 caracteres? ¿sea el password lo largo que sea?
Muchas gracias.
lo mejor de caerse al tropezar, es volverse a levantar.
http://alquilabusevilla.freetzi.com
http://misevillaguapa.freetzi.com

Sí, en md5 siempre serán 32 carácteres , o almenos de momento
Marcadores