Validar
<?php
include ("includes/config.php");
include ("includes/funciones.php");
//nos conectamos a mysql
$cnx = conectar ();
if($_POST["entrar"]){
if($_POST["username"] && $_POST["pass"]){
$contraseña = md5("$_POST[pass]");
$query = mysql_query("SELECT * FROM usuarios WHERE nick='".$_POST['username']."'",$cnx);
$datos = mysql_fetch_array($query);
if($datos['pass'] == $pass){ // si las pass son =// crea la cookie del usuario con la id el nick y la pass
setcookie("id",$datos['id'],time()+90000); setcookie("nick",$datos['nick'],time()+90000); setcookie("pass",$pass,time()+90000);
//redireccionas donde quieras login correcto
}
}
//pa la pag de error
?>
Resumen
<?php
//tomaría el valor de la cookie y pediría el valor de la pass del usuario, compararía valores y si es correcto dejaria ver lo k kieras, si es incorrecto yo lo mandaría al logout sin más, y en el log out a ti te da igual k este logeado o no tu le pones las cookies a 0 y listo , en este código te puede entrar cualquiera a ver los contenidos xD solamente tiene que crearse la cookie id.
//código inseguro xD
if($_COOKIE['id'])
{echo "<h1> </h1>";
echo "<h1>YES !!</h1>";
// Aqui va el codigo que quieras proteger
} else
{echo "Solo los usuarios registrados pueden acceder a esta sección";
}//Fin
echo"<p> </p>";
echo"<a href='logout.php'>Salir</a>"
?>
Te pego un code que usaba para un jueguecillo web k te deslogeaba pasados 10 minutos, te pongo parte del code, tenía bastantes más protecciones xD. Hace time que no programo en php y bueno el code es viejo. Espero que te sirva al menos como estructura de referencia
<?php
//pillamos valores
$user=$_COOKIE['user'];
$id=$_COOKIE['id'];
//actualizamos valores
setcookie("user","$user",time()+600);
setcookie("id","$id",time()+600);
//comprobamos valores
//comprobamos si el usuario es válido y los posibles intentos de lameradas
if(es_cadena($user)&&es_cadena_num($id)){
$rango=sentencia("select rango from usuario where nick like '$user' and password like '$id' limit 1");
}else{
$rango=0;
}
if($rango==1)
echo"Sitio protegido";
else
echo"Mirón";
Te adjunto mi login
<?php
setcookie("user","$user",time()+600);
setcookie("id","$pass",time()+600);
echo"<center><br><br>Entrando...</center>";
if(es_cadena_num($user)&&es_cadena_num($pass)){ //si son valores viables
$rango=sentencia("select rango from usuario where nick like '$user' and password like '$pass' limit 1");
if($rango==3){
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=master.php\">";
}elseif($rango==1){
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=user.php\">";
}else{
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=salir.php\">";
}
}else{
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=salir.php\">";
}
Salir
<?php
setcookie("user","0");
setcookie("id","0");
echo "<center><br>Sesión Finalizada<br>Que tenga un buen día ";
echo "<META HTTP-EQUIV=\"refresh\" content=\"1;URL=menu.php\">";
Si tienes alguna duda mirate el link de las sesiones que te pase que yo creo que mirandoselo todo esta solucionado xD
La función no es gran cosa pero cumple su cometido xD
<?php
//letras y símbolos permitidos
define("CONS_CADENA","_abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ");
//COMPRUEBA SI SON TODO CARACTERES VÁLIDOS (devuelve 1 si 0 no)
function es_cadena($cadena){
//buscamos caracteres buenos
$i=0;
$cadena.=1; //centinela
//se puede solventar todo con http://es2.php.net/manual/es/function.stripos.php
while(posicion(CONS_CADENA,$cadena[$i])>=0){
$i++;
}
if($i==strlen($cadena)-1) //centinela
return 1;
else
return 0; //caracteres malos
}