Ver Mensaje Individual
  #15 (permalink)  
Antiguo 02/06/2005, 17:43
Avatar de alexmo
alexmo
 
Fecha de Ingreso: mayo-2005
Ubicación: México
Mensajes: 120
Antigüedad: 19 años
Puntos: 0
Nuevamente gracias Cluster

Haber te explico exactamente el proceso de mi sistema de autenticación para ver si me puedes ayudar...:

El sistema consta de los siguientes archivos:

1. Ingresar.php (Ya arriba explicado)
2. Formulario_login.php (Ya arriba explicado)

3. Login.php (Página que identifica las sesiones y los usuarios:

Código PHP:
<?PHP setcookie("Acepta","cookies si",time()+7776000); ?>
<?php
// Inicializamos las variables 
$loginCorrecto false
unset(
$_SESSION['id']); 
$nickUsuarioL=""
$emailUsuarioL=""
$nombreUsuarioL=""
$apellidosUsuarioL="";
//Inicializamos el nº de recargas de la página si no está inicializado 
if(!isset($_SESSION['recarga'])){$_SESSION['recarga'] = 0;} 
//Inicializamos la variable sid para utilizarla más tarde 
$sid md5(SID); 

//Incluimos el script que detecta el navegador y la IP del usuario 
include('identificar.inc.php'); 
//Hayamos la variable que le corresponde al navegador que se está usando 
//para luego compararla con la de la base de datos 
$identificador md5(get_full_ip() .'-'browser_detection()); 

if(isset(
$_COOKIE["Acepta"]))// Comprueba si acepta cookies 

     
// Comprueba que existan las cookies de nick y password 
    
if(isset($_COOKIE["usNick"]) && isset($_COOKIE["usPass"])) 
    { 
        
// Comprueba q haya un usuario en la BD con esos datos 
        
$result mysql_query("SELECT * FROM usuarios WHERE 
            nick = '"
.$_COOKIE["usNick"]."' AND 
            sid = '"
.$_COOKIE["usPass"]."' AND 
            identificador = '"
.$identificador."'"); 
        if(
$row mysql_fetch_array($result)) 
        { 
            
$sql "Update usuarios Set 
                sid = '"
.$sid."', 
                ultima_visita = NOW() 
                Where id = '"
.$row['id']."'"
            
mysql_query($sql) or die (mysql_error()); 
             
            
// Si es que existe regraba las cookies y registra unas cuantas variables q pueden ser utiles 
            
setcookie("usNick",$_COOKIE["usNick"],time()+7776000); 
            
setcookie("usPass",md5(SID),time()+7776000); 
             
            
$_SESSION['usNick'] = $_COOKIE["usNick"]; 
            
$_SESSION['usPass'] = md5(SID); 
            
$_SESSION['id'] = $row['id']; 
             
            
$loginCorrecto true
            
$nickUsuarioL $row["nick"]; 
            
$emailUsuarioL $row["email"]; 
            
$nombreUsuarioL $row["nombre"]; 
        } 
        else     
        { 
            
// Si no existe, destruimos las cookies. 
            
setcookie("usNick","x",time()-3600);
            
setcookie("usPass","x",time()-3600);
        } 
        
mysql_free_result($result);// Libera la consulta 
    


else 
// Si es que no acepta cookies 

    
// Comprueba si ya ha probado a escribir la cookie y si ya ha probado es que no se aceptan 
    
if (!isset($_COOKIE['Acepta']) && $_SESSION['recarga'] > 1
    { 
        echo 
''
    } 
     
    
// Comprueba las variables de nick y password pero esta vez en variables de sesión 
    
if(isset($_SESSION["usNick"]) && isset($_SESSION["usPass"])) 
    { 
        
// Comprueba q haya un usuario en la BD con esos datos 
        
$result mysql_query("SELECT * FROM usuarios WHERE 
            nick = '"
.$_SESSION["usNick"]."' AND 
            sid = '"
.$_SESSION["usPass"]."' AND 
            identificador = '"
.$identificador."'"); 
        if(
$row mysql_fetch_array($result)) 
        {             
            
$sql "Update usuarios Set 
                ultima_visita = NOW() 
                Where id = '"
.$row['id']."'"
            
mysql_query($sql) or die (mysql_error()); 
             
            
// Si es que existe registra unas cuantas variables q pueden ser utiles 
            
$_SESSION['id'] = $row['id']; 
            
$loginCorrecto true
            
$nickUsuarioL $row["nick"]; 
            
$emailUsuarioL $row["email"]; 
            
$nombreUsuarioL $row["nombre"]; 
        } 
        else     
        { 
            
// Si no existe destruimos las sesiones. 
            
unset($_SESSION['usNick']); 
            unset(
$_SESSION['usPass']); 
            unset(
$_SESSION['id']); 
        } 
        
mysql_free_result($result);// Libera la consulta 
    


// Esto indica que la ya se ha probado a escribir la cookie 
$_SESSION['recarga'] = $_SESSION['recarga']+1
?>
Y como te había dicho antes, en las páginas que requieren autenticación, simplemente coloco el siguiente código:

Código PHP:
<?PHP setcookie("Acepta","cookies si",time()+7776000); ?> 
<?php 
// Inicio de sessión 
session_start(); 
include(
"login.php"); 
?> 
<?php if($loginCorrecto

echo 
'CONTENIDO PARA USUARIOS IDENTIFICADOS'

else 

echo 
'CONTENIDO PARA USUARIOS NO IDENTIFICADOS'

?>

Pero ya cambié esto por la recomendación que me diste anteriormente de colocar una include() con el código

valida.php

Código PHP:
<? 
if (!$validado){ 
  
header ("Location: login.php?volver=".$_SERVER['PHP_SELF']); 
  exit; 
}
entonces en las páginas que requieren autenticación inserto el include (valida.php) para que lo envíe al formulario_login.php...

Ahí es donde tengo el problema, pues me envía perfecto al formulario pero una vez envío el formulario hacia 'ingresar.php', en este me dice que no reconoce la variable ['volver']... me imagino que es porque se pierde la cabecera 'header' una vez ingresa...

Por ello te pido ayuda, para saber cómo hago para redireccinar a la página restingida una vez ingresado los datos de acceso.

-----------------

Espero que me puedas ayudar, pues estoy colgado con esto.
Gracias