我一整天都在为这个问题而战。我已经阅读了许多SO和论坛帖子,其他许多人也有同样的问题,帖子跨越了几年。重定向后会话变量消失
我的问题是我写的允许数据库数据非常基本改动的后端系统的一部分,新条目可以被添加,更新或删除。很标准的问题的东西。为了简单起见,每个函数,插入,更新,删除和数据库内容的整体视图都在单独的页面上(insert.php,update.php,depete.php)。
当添加一个新的条目,编辑或删除一个现有的条目,重定向后跟随,将用户回到视图,php页面显示更新的数据列表。问题是,重定向不起作用。会话变量在重定向期间被丢弃,由于我的代码,这个变量抛出用户返回登录页面。
这里是我的代码:
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;
}
它很有效。这个话题对我们很多人来说都是一个头疼的人,我想分享它的价值。然而,我也有一个问题,那就是,正确的过程是什么才能允许写入一个包含SID的绝对URL?
我认为它更好地使用cookie。 – jpaugh 2013-05-11 01:22:09
我不知道。饼干可以消失或被篡改。 – 2013-05-11 01:28:41
@JohnConde有趣。你觉得上述方法是否合理,更重要的是,你会在你的网站上使用它吗? – wordman 2013-05-11 01:32:07