Cuando el navegador no acepta cookies, la pag. principal trabaja la identificación con sesiones. La pag. principal lo hace bien, y envía un mensaje de "usuario identificado como: Pepe".
Pero parece que no pasa alguna variable (tal ves la de session) a las otras paginas, por lo cual me rechazan y me piden usuario y contraseña.
El sistema con COOKIES funciona bien. Pero no con sesiones.
La sentencia "
Código PHP:
session_start();"
Y el código que te logea es el sigte:
Código PHP:
<?php
// Inicializamos las variables
$loginCorrecto = false;
unset($_SESSION['id']);
$nickUsuarioL="";
$emailUsuarioL="";
$nombreUsuarioL="";
//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('comunidad2/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, '/', 'mipagina.com');
setcookie("usPass",md5(SID),time()+7776000, '/', 'mipagina.com');
$_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, '/', 'mipagina.com');
setcookie("usPass","x",time()-3600, '/', 'mipagina.com');
}
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 'No acepto cookies, que pasa?!!??<br>';
}
// 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;
?>