Voy a explicar como Recordar Usuario y Contraseña con cookies, añadiendo el famoso checkbox de «Recordar Usuario y Contraseña». Para ello vamos a hacer el formulario del login. Constara de 3 partes, una donde se comprueba si ha pulsado el checkbox y los datos del formulario, otra donde comprueba la cookies y el propio formulario:
session_start();
if ($_POST["btnlog"]=="Entrar"){
dbconn();
if ($_POST["chk_rec"]=="chk_rec")
{
$login = htmlspecialchars(trim($_POST['nombre']));
$pass = md5(trim($_POST['password']));
setcookie ("usu_r40", "$login", time () + 604800);
setcookie ("pass_r40", "$pass", time () + 604800);
}
$result = mysql_query("SELECT Pass, Nick FROM dj WHERE Nick='".$login."' and Pass='".$pass."'");
if(mysql_num_rows($result)){
$array=mysql_fetch_array($result);
$_SESSION["nick"]=$array["Nick"];
header ("Location:index.php");
}
}
if($_COOKIE['pass']<>"")
{
dbconn();
$login=$_COOKIE['usu'];
$pass=$_COOKIE['pass'];
$result = mysql_query("SELECT Pass, Nick FROM dj WHERE Nick='".$login."' and Pass='".$pass."'");
if(mysql_num_rows($result)){ // nos devuelve 1 si encontro el usuario y el password
$array=mysql_fetch_array($result);
$_SESSION["nick"]=$array["Nick"];
header ("Location:index.php");
}
}
<!DOCTYPE html>
<FORM name="log" id="log" method="post" action="login.php">;
<h2>Solo DJs</h2>;
<ul>
<li>Usuario</li>;
<li><input type=text NAME="nombre"></li>;
<li>Contraseña</li>;
<li><input type=password NAME="password"></li>;
<li><input type="checkbox" name="chk_rec" value="chk_rec"> Recordar Usuario y Contraseña</li>
<li><INPUT type="submit" value="Entrar" name="btnlog"/></li>
</ul>
</form>
Bien pues vamos a analizar el codigo. Primeramente, activamos las variables de session y comprobamos que hemos rellenado el formulario, luego comprobamos si hemos clickeado el chekbox de recordar usuario y contraseña. Si lo hemos pulsado, al login, le quitamos, los espacios y caracteres html, para meterlo dentro de la variable $login. $pass contendra el valor de la caja donde se introdujo el password, pero con los espacios quitados y encripatada en md5.
Una vez echo esto lo guardamos en un cookie, luego comprobamos le usuario y la contraseña del usuario en la base de datos, si esta todo oks, nos redirige a la pagina privada. Sino tuvieramos la variable de session activa y la cookies no existiera nos sale el formulario.
Ahora en el index.php tenemos que comprobar si la variable $_SESSION[«nick»] tiene algun valor y sino lo tiene mirar si tenemos cookies, para coger el usuario de las cookies.
if (!$_SESSION["nick"])
{
if($_COOKIE['pass']<>"")
$login=$_COOKIE['usu'];
$pass=$_COOKIE['pass'];
$result = mysql_query("SELECT Pass, Nick FROM dj WHERE Nick='".$login."' and Pass='".$pass."'");
if(mysql_num_rows($result)){
$array=mysql_fetch_array($result);
$_SESSION["nick"]=$array["Nick"];
}
else
header( "Location: ".$BASEURL."login.php" );
}
//Aquiva el resto de nuestra pagina
Comprobamos si tenemos la variable de session nick, sino la tenemos, comprobamos las cookies, consultamos nuestro usuario y rellenamos la variable de session.
Sino tuvieramos tampoco la cookies, nos redirige a la pagina de login.
Ahora lo que nos queda es crear un archivo php, donde hagamos el logout. Para ellos tenemos destruir las variables de session y las cookies. Para destruir las cookies, tenemos que indicarle un fecha que sea anterior a la actual:
session_start();
session_unset();
session_destroy();
setcookie ("usu", "", time () - 604800);
setcookie ("pass", "", time () - 604800);
header ("Location:login.php");
Deja un Comentario
Debes de estar logueado para comentar.