我正在使用会话将用户登录到我的网站。
登录表单将输入发送到 login-exec 文件,该文件然后查询 db 并验证登录信息。我放置session_start();
在 login-exec 文件的开头,然后使用以下代码段将数据写入会话:
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['id'];
$_SESSION['Username'] = $member['username'];
$_SESSION['key'] = $member['Serial'];
session_write_close();
header('Location: account.php');
在 account.php 文件的开头,我需要 auth.php 来验证会话。
帐户.php:require_once('auth.php');
auth.php:
<?php
//Start session
session_start();
//Check whether the session variable SESS_MEMBER_ID is present or not
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
header("Refresh: 5; url=login.php");
//echo $_SESSION['SESS_MEMBER_ID'];
die("Access Denied!");
exit();
}
?>
总是第一次登录它返回访问被拒绝。当脚本重定向回登录页面并且我再次尝试时,它总是可以工作......我已经将我的 php 文件保存在没有 BOM 的 UTF-8 中,因为我最初认为在会话开始之前有前导空白。那并没有解决问题,我真的无法弄清楚。
关于为什么会发生这种情况的任何想法?