会话变量不发送到下一页

时间:2014-03-12 05:58:00

标签: php mysql variables session

我正在尝试为用户点击提交时在下拉菜单中选择的位置设置会话变量。目标是将此变量传递给另一个php页面,以便我可以显示他们选择的下拉选项以及与MYSQL表相关联的两个值。

以下是我的第一个php文件的代码部分。它显示了从MYSQL数据库中的值列表创建的下拉列表,以及我尝试为所选选项设置会话变量的位置。

session_start();
<form action="/locationsprocessing.php" method="post">
<select id="locations" name="locations"><? echo $option; ?></select>
<input type="submit" value="Submit" name="submit" id="submit">
</form> 
<?php
if (isset($_POST['submit'])) { 
  $_SESSION['locations'] = $_POST['locations'];
  $_SESSION['animal']   = 'cat';
} 

下面是我在第二页的代码,我调用会话变量进行显示。如您所见,我已输入另一个变量用于测试目的。它应该显示“猫”,它确实。

session_start();
echo $_SESSION['animal'];
echo $_SESSION['locations'];  

注意locationsprocessing.php使用标头运行重定向可能也很重要。但这就是文件的全部功能。

我错过了什么吗?我经历了无数不同的事情,并且一直在盯着这段代码。我不明白为什么它

2 个答案:

答案 0 :(得分:1)

您需要在需要使用会话的每个页面中启动会话:

<form action="/locationsprocessing.php" method="post">
<select id="locations" name="locations"><? echo $option; ?></select>
<input type="submit" value="Submit" name="submit" id="submit">
</form> 
<?php
if (isset($_POST['submit'])) { 
  session_start();
  $_SESSION['locations'] = $_POST['locations'];
  $_SESSION['animal']   = 'cat';
} 

答案 1 :(得分:0)

这可能是错误的:当您在问题的第一段代码中提交表单时,您将表单中输入的数据发送到/locationsprocessing.php。你说所有文件都重定向到另一个页面。这意味着在表单中输入的数据实际上已丢失。

我认为你想要做的是从第一段代码中删除表单处理代码,所以只剩下这个:

session_start();
<form action="/locationsprocessing.php" method="post">
<select id="locations" name="locations"><? echo $option; ?></select>
<input type="submit" value="Submit" name="submit" id="submit">
</form>

然后将删除的代码段放在/locationsprocessing.php中,如下所示:

session_start();
if (isset($_POST['submit'])) { 
  $_SESSION['locations'] = $_POST['locations'];
  $_SESSION['animal']   = 'cat';
  header('Location: ' . $destination);
}

$destination将成为问题中带有第二段代码的页面的路径。