Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/01/2009, 07:03
daniel_acevedo
 
Fecha de Ingreso: enero-2008
Ubicación: Valencia
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Sistema de autentificación

Cita:
Iniciado por Koden Ver Mensaje
Yo lo que haría sería crear una sesión cuando el login sea efectivo (es decir, cuando compruebes que el usuario y la contraseña que se han introducido en el logeo son válidos)

Es decir, que si no hay ningún problema cambiaría el

Código PHP:
setcookie("Nick"$usuariotime()+604800); //enviamos las cookies al nacegador [expiraran dentro de una semana]
setcookie("Pass"$contraseñatime()+604800); 
Por

Código PHP:
$_SESSION["Nick"] = $usuario;
$_SESSION["Pass"] = $contraseña
$_SESSION
["autentificado"] = "SI"
Así sólo tendrías que añadir un sencillo script al comienzo de cualquiera de las páginas en las que quieras hacer la autentificación, algo como:

Código PHP:
session_start ();

if (!isset (
$_SESSION["autentificado"]) || is_null($_SESSION["autentificado"]) || $_SESSION["autentificado"] != "SI")
          
header("Location: index.php?error=No estas logueado"); 
O algo similar.

Espero que te ayude.



Un saludo.
Antes que nada, Gracias por la respuesta! Ya voy entendiendo más o menos como va la cosa. Ahora, hize lo que propusistes, acá el codigo

Código PHP:
<?php
include("conex.php");
ob_start(); //esto es para habilitar el buffer de salida. Esto para poder enviar las cookies al navegador sin que te marque error

//Desconectar
if ($_POST["n"]=='2'//si n=2 significa que el usuario ya habia iniciado sesion y ahora esta cerrando sesion
 
{
  
setcookie("Nick"); //borramos el valor de las cookies
  
setcookie("Pass");  
  
$aux="'login','0'";
  
header("location: checar.php"); //redireccionamos a este mismo archivo nuevamente
 
}
$n=$_COOKIE["Nick"]; //sí el usuario ya habia iniciado sesion, $n y $p contendran el user y pass de ese usuario
$p=$_COOKIE["Pass"];

$sql=mysql_query("SELECT * FROM usuarios WHERE user='$n' AND pass='$p'") or die (mysql_error()); 
$total=mysql_num_rows($sql);
if (
mysql_num_rows($sql)==0//si NO ha iniciado sesion   

  
{
   if (
$_POST["n"]=='1'//si el user ya envio el formulario
    
{
     
$usuario=$_POST["user"];  //recivimos datos enviados desde login.php mediante post usando ajax
     
$contraseña=$_POST["pass"];
       
     
$cad=mysql_query("SELECT * FROM usuarios WHERE user='$usuario' AND pass_md5='$contraseña'") or die (mysql_error());
     if (
mysql_num_rows($cad)==0//Si es INCORRECTO el user y pass
 //Si es INCORRECTO el user y pass
       
{  
       
//echo '3';    //el usuario o pass son incorrectos... imprimimos formulario y mensaje de error
       
echo '<form action="javascript: enviar(\'login\',\'1\');" name="login" id="login">
          <div id="labels">
            <div id="lbl_user"><label>Usuario</label></div>
            <div id="lbl_pass"><label>Password</label></div>
          </div>
          
          <div id="inputs">
            <div id="inp_user"><input name="user" class="MC_input" id="user" type="text" maxlength="30" /></div>
            <div id="inp_pass"><input name="pass" class="MC_input" id="pass" type="password" maxlength="30" /></div>
            <div id="inp_enviar"><input type="submit" class="MC_enviar" name="enviar" value="Enviar"/></div> 
          </div>
          
          <div style="clear:both;"></div>
          
          <div id="inp_r"><label id="r" class="res">Usuario o password incorrectos</label></div> 
        </form>'
;    
       } 
     else 
//si todo salio bien
       
{
            
$_SESSION["Nick"] = $usuario;
            
$_SESSION["Pass"] = $contraseña;
            
$_SESSION["autentificado"] = "SI";  
        
//echo '1'; //damos bienvenida
        
echo '<form action="javascript: enviar(\'login\',\'1\');" name="login" id="login">
          <div id="inp_r"><label>Bienvenid@ '
.$usuario.'</label></div> 
          <div id="salir"><a href="javascript: enviar(\'login\',\'2\');">Cerrar sesion</a></div> 
        </form>'
;    
       }
    }
   else 
//si NO ha enviado el formulario      
    
{  
     
//echo '2'; //no ha enviado formulario... imprimimos formulario
     
echo '<form action="javascript: enviar(\'login\',\'1\');" name="login" id="login">
          <div id="labels">
            <div id="lbl_user"><label>Usuario</label></div>
            <div id="lbl_pass"><label>Password</label></div>
          </div>
          
          <div id="inputs">
            <div id="inp_user"><input name="user" class="MC_input" id="user" type="text" maxlength="30" /></div>
            <div id="inp_pass"><input name="pass" class="MC_input" id="pass" type="password" maxlength="30" /></div>
            <div id="inp_enviar"><input type="submit" class="MC_enviar" name="enviar" value="Enviar"/></div> 
          </div>
          
          <div style="clear:both;"></div>
          
          <div id="inp_r"><label id="r" class="res"></label></div> 
        </form>'
;    
    } 
  }
else 
//si ya inicio sesion
  
{  
   
//echo '1'; //damos bienvenida 
    
echo '<form action="javascript: enviar(\'login\',\'1\');" name="login" id="login">
          <div id="inp_r"><label>Bienvenid@ '
.$_COOKIE["Nick"].'</label></div> 
          <div id="salir"><a href="javascript: enviar(\'login\',\'2\');">Cerrar sesion</a></div> 
        </form>'
;
  } 
   
ob_end_flush(); //esto va para poder enviar headers al navegador sin tener problemas
?>
y cree un archivo para probar lo de la autentificación

Código PHP:
<?php
session_start 
();

if (!isset (
$_SESSION["autentificado"]) || is_null($_SESSION["autentificado"]) || $_SESSION["autentificado"] != "SI")
          
header("Location: index.php");  
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
PruebaA!
</body>
</html>
Lo que sucede es que no está verificando las cookies, es decir, envia directamente al header como si no hubieses pasado el login (cosa que si)

Perdón por lo poco conocedor del tema, seguro es una pavada. jeje.

Gracias de nuevo!