In PHP, I usually work with restricted user authentication using the $_SESSION
variable, however I want to change this method to cookies so that the session does not close when closing the browser. On sites like Google and Facebook, the user logs in and if they return in 30 days for example, the session is still active.
The code I'm using:
autentica.php
session_start();
// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: login.php"); exit;
}
$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);
// Validação do usuário/senha digitados
$sql = "SELECT * FROM 'usuarios' WHERE ('usuario' = '". $usuario ."') AND ('senha' = '". $senha ."') LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
echo '<script language="JavaScript">
<!--
alert("Dados Incorretos!\n\n");
history.back();
//-->
</script>';
} else {
// Salva os dados encontados na variável $resultado
$resultado = mysql_fetch_assoc($query);
// Se a sessão não existir, inicia uma
if (!isset($_SESSION)) session_start();
// Salva os dados encontrados na sessão
$_SESSION['UsuarioID'] = $resultado['id'];
// Redireciona o visitante
header("Location: index.php"); exit;
In the restricted pages I use the following code:
if (!isset($_SESSION)) session_start();
if (!isset($_SESSION['UsuarioID'])) {
session_destroy();
header("Location: autentica.php"); exit;
}
When you close the browser the session created in the code above expires. I also think you are very insecure.