Hola, estoy recién comenzando a jugar con las sesiones, quisiera recibir por favor sugerencias sobre este script para comprender bien la lógica.
Edito: tenía un problema, pero edito, ahora me gustaría recibir sugerencias sobre cómo mejorar el script.
Le he añadido protección básica contra fijación de sesiones y cross site request forgeries.
<?php
session_start();
if (!isset($_SESSION['logeado']))
{
if ($_POST['user'] == 'carlos' && $_POST['password'] == 'entrar')
{
session_regenerate_id();
$_SESSION['logeado'] = true;
$_SESSION['token'] = md5(uniqid(rand(), TRUE));
}
} else if ($_POST['logout'])
{
if (isset($_SESSION['token']) &&
$_POST['token'] == $_SESSION['token'])
{
$_SESSION = array();
session_destroy();
}
}
if ($_SESSION['logeado'] == true)
{
echo 'Contenido exlusivo' . '<br />';
}
?>
<html>
<body>
<?php
if ($_SESSION['logeado'] == false)
{
?>
<form method='POST' action='login.php'>
User:
<input name="user" type="text" maxlength="50" size="20" />
Password:
<input name="password" type="text" maxlength="50" size="20" />
<input name="login" type="submit" value="Login" />
</form>
<?php
} else
{
?>
<form method='POST' action='login.php'>
<input name="token" type="hidden" value="<?php echo $_SESSION['token']; ?>" />
<input name="logout" type="submit" value="Logout" />
</form>
<?php
}
?>
</body>
</html>
Podrías tener el nombre de usuario y eso en una DB, asi podrias hacer que se registren en tu sitio, o no solo CARLOS entre ahi.
Saludos.