php - 重定向后 session 变量消失

标签 php session redirect

我整天都在和这个问题作斗争。我读过许多 SO 和论坛帖子,其中许多其他人也有同样的问题,而且这些帖子跨越了数年。

我的问题是我编写的后端系统的一部分,该系统允许对数据库数据进行非常基本的更改,可以添加、更新或删除新条目。相当标准的问题。为简单起见,每个函数、插入、更新、删除和数据库内容的整体 View 都在单独的页面上(insert.php、update.php、depete.php)。

当添加新条目、编辑或删除现有条目时,重定向将把用户带回 View ,php 页面以显示更新的数据列表。问题是,重定向不起作用。 session 变量在重定向期间以某种方式被丢弃,由于我的代码,将用户扔回登录页面。

这是我的代码:

if ($done || !isset($_GET['client_id'])) {
header('Location: http://website.com/admin/view.php');
exit;
}

非常感谢大家! 它检查以确保已发布更新的数据,如果一切正常,则重定向到 view.php。

但它不会,是的,我的页面都以必要的 <?php session_start(); ?> 开头.因此,在网上搜索了几个小时之后,我在 PHP 手册中发现了一个九年前的条目,我认为它值得分享:

http://www.php.net/manual/en/ref.session.php#37555

发帖人在其中提到,“请注意绝对 URL 不会自动重写以包含 SID。”

他建议说,“跳过‘http:’就可以了。”所以我从我的代码中删除了它:

if ($done || !isset($_GET['client_id'])) {
header('Location: view.php');
exit;
}

它奏效了。这个话题一直让我们很多人头疼,我想分享它的值(value)。

但是,我也有一个问题,那就是,允许写入包含 SID 的绝对 URL 的正确程序是什么?

最佳答案

请勿从 URL 传递 session ID。

http://en.wikipedia.org/wiki/Session_fixation

使用 cookie。您可以通过存储创建者的 IP 地址等方式对提供给您的 session ID 执行尽力而为的同源检查。 Cookie 比简单的 URL 更难篡改。如果它们“消失”,则意味着您的用户清除了他们的 cookie,并且不希望您再跟踪他们的 session 。

关于php - 重定向后 session 变量消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16492835/

相关文章:

python - 求启示——AppEngine中的全局变量(aeoid.get_current_user())

iis - 如何在 IIS 中重定向 URL 路径?

php - 从 PHP 中的 URL 重定向

PHP 多用户登录表单 - 根据登录凭据导航到不同的页面

reactjs - 如何在 react 应用程序中检测过期的用户 session ?

php - 在 php 中处理用户输入数据。什么更好?

python - Sqlalchemy 连接超时

javascript - 使用 javascript 重定向请求规则

javascript - 如何将值发送到 Javascript 表单元素。不断发送一个值

javascript - $.ajax 在我的代码中无法正常工作