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