如何使用php和mysql进行安全会话


How to make a secure session with php and mysql?

我尝试了一个session.php脚本,该脚本在我的网站中的每个页面的开头运行,以验证用户是否已登录,然后才能浏览网站。然而,现在process_login脚本不会加载安全登录页,它只是重新加载到登录页。我认为我的安全会话设置不正确。有人能进一步向我解释一下这是怎么回事吗?

这是当用户单击login:时执行的脚本process_login

<?php
// Initialize session
session_start();
// Require database connection settings
require('config.inc');
// Retrieve email and password from database
$email = mysql_real_escape_string($_POST['email']);
$password = mysql_real_escape_string(md5($_POST['password']));
$query = "SELECT * FROM $table WHERE email='$email' AND password='$password' LIMIT 1";
$result = mysql_query($query);
// Check email and password match
if(mysql_num_rows($result)) {
        // Set email session variable
        $_SESSION['email'] = $_POST['email'];
        // Jump to secured page
        header('Location: home.php');
}
else {
            // Jump to login page
            header('Location: index.php');
}
?>

这是session.php脚本,它位于每个需要用户登录的页面的头部:

<?php
if (isset($_SESSION['email']) == 0) {
    // Redirect to login page
    header('Location: index.php');
}
?>

您需要包含代码

session_start();

在您的文件session.php中访问您的会话变量

或者,您应该确保在php配置中启用了会话自动启动。