繁体   English   中英

我不知道为什么我的 PHP Session 变量在页面重定向上被覆盖

[英]I can't figure out why my PHP Session variables are being overwritten on page redirect

我有一个使用 session 变量的页面,这些变量是通过 POST 方法从用户表单输入创建的。 正在使用以下代码正确创建 session 变量:

(我正在通过表单上的输入收集 zip 代码)

<form name="zipinput" id="zipform" method="post" action="" target="_blank" onsubmit="return valZip();"/>     
 <input id="zip" name="zip" class="zipfield" type="text" value="" />
 </form> 

这是我的 PHP 代码:

$_SESSION['zip'] = $_POST['zip'];
if(isset($_SESSION['zip'])) {
$zipcode = $_SESSION['zip'];
}

这工作正常。 但是当我 go 从 page1.php 到 page2.php 时,变量被删除。 我认为 session 变量的全部意义在于能够在 URL 中在没有 _GET 或 _POST 的情况下逐页使用它们。 我还包括: session_start(); 在我的 php 页面的顶部。

任何想法将不胜感激。 谢谢。

这是因为无论是否实际提供了 zip 值,您都在为 session 分配一个值。 如果不存在 zip 参数,则只需在空白处写入,这将擦除之前的 zip。 你想做:

if (isset($_POST['zip'])) {
   $_SESSION['zip'] = $_POST['zip'];
}
$zip = $_SESSION['zip'];
if(isset($_POST['zip'])
$_SESSION['zip'] = $_POST['zip'];
if(isset($_SESSION['zip'])) {
$zipcode = $_SESSION['zip'];
}

而不是只在页面顶部有 session_start() ,尝试有

if(!isset($_SESSION)):
    session_start();
endif;

您必须在所有页面上启动 session。 这是一个很好的候选者,可以在任何其他页面内容之前被放入 init 文件中任意加载到所有页面中。就像在 header 中一样。

如果不这样做,您保存的 session 将在页面重定向时被销毁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM