PHP session 变量在重定向后不保存?

标签 php session variables authentication session-variables

我似乎突然遇到了一个奇怪的问题,我希望有人能提出建议......

我有一个登录脚本,如果登录失败,该脚本应该注册一个包含错误消息的 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/

相关文章:

php - 如何将 mysql 行的结果放入单独的变量中

javascript - 通过参数传递哈希值

php - 将一个巨大的 html 文件转换为 php 变量/echo

php - 检查 sessionid 已知的 PHP session 是否处于事件状态

java - 一堆数字中的 "e"

php - Laravel 用工厂播种但扩展它

php - Cloud9 云 IDE 和 CakePHP

php - 我的 PDO 声明不起作用

java - 为什么无法将 session.get 与 Play 中的 String var 进行比较

java - HttpSession 对象如何绑定(bind)到浏览器?