Saludos a todos, llevo un tiempo leyendo el foro y empapándome de información pero nunca me había decidido a escribir ya que en general he podido encontrar solución a mis dudas a base de buscar. El problema es que para este caso no he encontrado nada similar a mi problema.
Tengo una página de login que tiene los datos almacenados en una base de datos. Accede perfectamente a la zona "privada", pero el problema es que no funciona a la primera, si no que hay que recargar la página para que se pueda entrar con éxito. He comprobado las cookies y todo el proceso se realiza correctamente. No obstante la primera vez carga hasta el if(isset($_COOKIE[...]) y no lo toma como válido, a pesar de que la cookie se ha creado correctamente y la variable tiene el valor apropiado.
Os adjunto el código (bastante simple) para que podáis echarle un vistazo a ver si alguien descubre que puede estar pasando.
Un saludo y enhorabuena por el foro!
Código PHP:
<?php
$surname=$_POST["surname"];
$password=$_POST["password"];
if(isset($surname) && isset($password)){
$conexion=mysql_connect("localhost","user","password");
$sql="select persons.surname, officers.password from persons, officers where persons.surname='$surname' and persons.pid=officers.pid";
$result=mysql_db_query("elections_db",$sql);
$fila=mysql_fetch_array($result);
if($fila["password"]==$password && $fila["surname"]==$surname){
$uid=$surname;
setcookie('uid', $uid, time() + 14400, '/');
echo "
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<title>Ufficio Elettorale</title></head>
<body>
<h2>Ufficio Elettorale</h2>";
// La primera vez que me logeo solo carga hasta aqui, una vez pulso F5 carga correctamente a pesar de que la cookie existe y la variable uid se ha creado dentro de ella
if (isset($_COOKIE['uid']) && $_COOKIE['uid']){
echo "You are logged in as: ".$_COOKIE['uid']."<br/>
<ol>
<li>Anagrafe persone
<ul>
<li>Elenca persone</li>
<li><a href=\"anagrafe-aggiungi.php\">Aggiungi persona</a></li>
<li><a href=\"anagrafe-cancella.php\">Cancella persona</a></li>
<li><a href=\"anagrafe-modifica.php\">Modifica persona</a></li>
</ul></li>
<li>Aggiornamento elenco dei candidati
<ul>
<li>Elenca candidato</li>
<li>Aggiungi candidato</li>
<li>Cancella candidato</li>
</ul></li>
<li>Aggiornamento elenco degli elettori
<ul>
<li>Elenca elettore</li>
<li>Aggiungi elettore</li>
<li>Cancella elettore</li>
</ul></li>
<li><a href=\"start_election.php\">Inizio votazione</a></li>
<li><a href=\"close_election.php\">Chiusura votazione</a></li>
<li>Pubblicazione risultati</li>
</ol>
<a href=\"logout.php\">Log out</a><br />";
}
}
}
else{
?>
<h2>Ufficio Elettorale</h2>
You are not logged in.<br />
<form method="post" action="ufficio-elettorale.php">
<table>
<tr><td>Cognome (maiuscolo):</td>
<td><input type="text" name="surname"></input></td></tr>
<tr><td>Password:</td>
<td><input type="password" name="password"></input></td></tr>
<tr><td colspan="2" align="center">
<input type="submit" value="Log in"></input></td></tr>
</table></form>
<?php
}
?>
</body>
</html>