PHP会话登录系统

时间:2011-04-28 18:00:47

标签: php session

我正在尝试测试一个没有数据库的简单登录系统,仅用于测试目的。 我创建了一个php文件,用于检查用户名和密码是否有效并注册会话。

<?php
session_start();
define("ADMINUSER", "user");
define("ADMINPASSWORD", "pass");
$user = $_POST['user'];
$pass = $_POST['pass'];
if (($user==ADMINUSER) && ($pass==ADMINPASSWORD))
{
    $_SESSION['logged_in'] = true;
    header("Location: main.php");
}
else
{
    header("Location: auth.php?flag=wrong");
}
?>

并将其包含在其他文件中以检查用户是否已登录:

<? session_start();
if ($_SESSION['logged_in'] != true)
{
    header("Location: auth.php?flag=not");
    exit;
}
?>

但这似乎不起作用,因为我关闭窗口并尝试再次打开它并且它不会将我重定向到登录页面(auth.php)。

我做错了什么?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:6)

这部分代码:


    $_SESSION['logged_in'] == true;

应该是:


    $_SESSION['logged_in'] = true;

=是一个赋值运算符。

==是一个比较运算符。

答案 1 :(得分:0)

它不会将您重定向到auth.php页面,因为您的会话一直存在,直到您清除浏览器的cookie或会话用完为止。因此,关闭浏览器窗口不会让您忘记Facebook / Twitter等。

答案 2 :(得分:0)

使用标题功能重定向后应始终使用退出,否则将继续加载页面。

header('Location: auth.php', true, 303);
exit;

指定代码303是一个好习惯,而不是使用默认301重定向。代码301表示“永久移动”,代码303表示“查看其他”。