【问题标题】:How to make a secure session with php and mysql?如何使用 php 和 mysql 进行安全会话?
【发布时间】:2012-01-11 02:32:47
【问题描述】:

我尝试了一个 session.php 脚本,该脚本在我网站的每个页面的开头运行,以验证用户在浏览网站之前是否已登录。但是,现在 process_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');
}

?>

【问题讨论】:

  • 我们可以看看你尝试了什么吗?
  • 你应该给我们看一些代码。
  • 调用 process_login 脚本时,根据定义,用户尚未登录。因此您不应在 process_login 期间运行验证/重定向代码。
  • 嘿伙计们 - 我让这个人在 SO 上发布他的问题,但他以前从未使用过它。我只是保证他是一个真正的人,有一个真正的问题,而不是一些无所事事的人:)
  • 但是我们可以相信你@Jason 吗? :-)

标签: php security session cookies


【解决方案1】:

你需要包含代码

session_start();

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

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

【讨论】:

  • 但是如果我让它在每个新页面上启动一个会话会不会搞砸?
  • Dipu raj 是正确的。请记住,PHP 是无状态的,这就是您首先需要会话的原因。您必须在每次页面加载之前调用 session_start(),然后才能访问/ser 任何会话变量。
猜你喜欢
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
相关资源
最近更新 更多