Bueno, pues pongo el código del login entero.
Se encuentra en un archivo llamado login.php, que es incluido con include() en un <DIV> de index.php, con lo cual es ejecutado siempre.
Este es el código:
Código PHP:
<?php
@$us_registrado = $_SESSION['us_registrado'];
echo '<h1>Cuenta de usuario:</h1>';
if (isset($_POST["log_in"]) && isset($_POST["password"]))
// Se acaba de enviar el formulario de log in
{
@$log_in = $_POST["log_in"];
@$password = $_POST["password"];
@$recordar = $_POST["recordar"];
// Si se ha marcado la casilla recordar, poner una cookie en ese equipo para recordar
if (isset($_POST["recordar"])) {
setcookie('loginWebVN',"$log_in,$password",false);
}
@$link = mysql_connect('localhost', 'registrador', 'passwordDelRegistrador');
if (!$link) {
die('No se ha podido conectar al servidor. Error: ' . mysql_error());
}
@$db = mysql_select_db('auth', $link);
if (!$db) {
die('Error en el acceso a la base de datos. Inténtalo más tarde. Error<br />'.mysql_error());
}
$query = "SELECT * FROM authorized_users WHERE name='".$log_in."' AND password='".sha1($password)."'";
@$result = mysql_query($query, $link);
if (!$result) {
die('Error en la consulta: ' . mysql_error());
}
$num_results = mysql_num_rows($result);
if ($num_results > 0) {
// Se ha encontrado alguna coincidencia. Usuario válido. Se crea variable de sesión.
$_SESSION['us_registrado'] = $log_in;
// Se vacían las vbles del login para no repetir este proceso
unset($_POST["log_in"]);
unset($_POST["password"]);
}
mysql_free_result($result);
mysql_close($link);
}
if (isset($_SESSION['us_registrado']) && !isset($_POST["desconectar"]))
{
// Ya se ha registrado el usuario actual y no ha hecho log out
?>
<form name="registrado" method="post" action="index.php">
<p>Usuario conectado:<br />
<strong><?php echo $_SESSION['us_registrado']; ?></strong>
<input type="hidden" name="desconectar" value="on">
</p>
<p><input name="logout" type="submit" id="logout" value="Log out"></p>
</form>
<?php
}
else
{ // El usuario no es válido y ha intentado conectarse, o acaba de hacer log out, o no ha hecho login ni registro
if (isset($_POST["desconectar"])) {
// Se ha hecho log out. Destruimos la variable de sesión.
unset($_SESSION['us_registrado']);
}
if (isset($log_in) || isset($password)) {
// Aunque no tenemos id de sesión, hay valores en los campos del log in, o sea: usuario no válido
echo '<strong>Usuario o contraseña incorrectos.</strong><br />';
}
else {
// Usuario que no se ha conectado aún, o ha hecho log out
echo 'Usuario desconectado o no registrado.<br />';
}
?>
<form name="form2" method="post" action="index.php">
<table width="100%" border="0">
<tr>
<td>Conexión:</td>
<td> </td>
</tr>
<tr>
<td>log in</td>
<td><input name="log_in" type="text" size="15" value="<?php if (isset($_COOKIE["loginWebVN"]))
{
$partes = explode(',',$_COOKIE["loginWebVN"]);
echo $partes[0];
}
?>"/>
</td>
</tr>
<tr>
<td>password</td>
<td><input name="password" type="password" size="15" value="<?php if (isset($_COOKIE["loginWebVN"]))
{
$partes = explode(',',$_COOKIE["loginWebVN"]);
echo $partes[1];
}
?>"/>
</td> </tr>
<tr>
<td><div class="Estilo1">
<div>Recordar en este equipo (necesita
tener cookies habilitadas): </div>
</div></td>
<td><input name="recordar" type="checkbox" id="recordar" value="true" /></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="signIn" type="submit" id="signIn" value="Enviar" />
</div></td>
</tr>
</table>
</form>
<form name="form1" method="post" action="index.php">
Usuario no registrado:
<input name="registro" type="submit" id="registro" value="Registrarse">
<input type="hidden" name="registrar" value="on">
<br>
</form>
<?php
}
?>
Por lo que entiendo de lo que dices, se ve que hago mal el manejo de la cookie, que es mi pregunta.
A ver si con todo el código me puedes tu o algún otro corregir el error. Como digo, quiero que cuando seleccione la casilla de recordar, posteriormente aparezcan el nombre de usuario y password en sus respectivos campos y sólo sea necesario hacer click en el botón de conexión.