我的网站上有一个使用 $_SESSION 变量的 PHP 身份验证系统。
表单将用户名和密码提交到文件“login.php”。它是这样处理的:
<?php include '../includes/sessionstart.inc.php'; ?>
<?php ob_start(); ?>
if($_POST){
$q = mysql_query("SELECT id, company FROM users WHERE username = '".mysql_real_escape_string($_POST['username'])."' AND password = '".md5($_POST['password'])."'");
if(mysql_num_rows($q) >= 1){
$f = mysql_fetch_Array($q);
$_SESSION['company'] = $f['company'];
$_SESSION['id'] = $f['id'];
$_SESSION['logedin'] = true;
session_write_close();
ob_clean();
header("Location: index.php");
}
然后,加载index.php并检查'logedin'是否为true。
<?php include '../includes/sessionstart.inc.php'; ?>
<?php if(!isset($_SESSION['logedin'])) header('Location: login.php'); ?>
在我的生产服务器上,它会继续,但在我的 Wampserver 上,它会恢复为 login.php。我注意到 Wampserver 的页面加载速度非常慢,这可能与它有关。这就是为什么我包含了 session_write_close ,以确保在页面切换之前保存会话数据,但这没有帮助。
session_start.inc.php 的内容很简单:
<?php
session_start();
?>
我曾经在那里有更多代码,但现在只有这个。在我开始使用包含文件之前,这个问题也存在。
有人知道我做错了什么吗?为什么 Wampserver 不将我的 SESSION 数据传输到下一个 PHP 文件?