我似乎突然遇到了一个奇怪的问题,我希望有人能提出建议......
我有一个登录脚本,如果登录失败,该脚本应该注册一个包含错误消息的 session 变量,然后将用户重定向到他们来自的页面。例如,用户可能使用了 index.php 上的论坛,但登录失败,然后返回到 index.php,其中脚本显示 session 变量中包含的错误消息。
但是, session 变量似乎并未保存。作为记录,我在登录脚本以及任何具有登录表单的页面中使用 session_start() ,如果用户因为登录失败而返回到该页面,则该登录表单应该显示错误消息。
我的脚本如下:
if (isset($_POST['prev'])) {
$prev = $_POST['prev'];
}
else {
$prev = "login.php";
}
$_SESSION['Login_Error'] = $error;
header("Location: $prev");
那么表单页面上的脚本是:
if (isset($_SESSION['Login_Error'])) {
echo $_SESSION['Login_Error'];
}
我得到的错误是:
Notice: Undefined index: Login_Error in F:\EasyPHP-12.0\www\index.php on line 3
关于为什么它不保存有什么想法吗?如果登录成功,脚本将设置一个工作正常的用户 ID session 变量。感谢您的任何建议。
最佳答案
我以前也遇到过这个问题。如果在用户打开时设置 session 变量
www.domain.com/login.php
用户被重定向到
domain.com/index.php(开头不带 www.)
session 变量将不可访问。确保 www.要么总是存在,要么从不存在,或者您的脚本根据情况使用或不使用它。
关于PHP session 变量在重定向后不保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13618870/