Php 会话变量未发送到下一页

Php 会话变量未发送到下一页,php,mysql,variables,session,Php,Mysql,Variables,Session,当用户点击submit时,我试图为下拉菜单中选择的位置设置会话变量。目标是将此变量传递到另一个php页面,以便我可以显示他们选择的下拉选项以及MYSQL表中与其关联的两个值 下面是我的第一个php文件中的代码部分。它显示了从MYSQL数据库的值列表中创建的下拉列表,以及我试图为所选选项设置会话变量的位置 session_start(); <form action="/locationsprocessing.php" method="post"> <select id="loca

当用户点击submit时,我试图为下拉菜单中选择的位置设置会话变量。目标是将此变量传递到另一个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';
} 
还需要注意的是,locationsprocessing.php使用头运行重定向。但这就是文件的全部功能。


我错过什么了吗?我已经通过无数不同的图坦卡蒙之类的,并一直盯着这个代码永远。我不明白为什么您需要在需要使用会话的每个页面中启动会话:

<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';
} 


这可能会出错:当您在问题的第一段代码中提交表单时,您正在将表单中输入的数据发送到
/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>

$destination
将是包含问题中第二段代码的页面路径。

您是否在实际设置值的脚本中执行了session_start()?在执行任何输出之前执行该操作?您必须在使用$\u会话的任何地方这样做。PHP无法神奇地返回时间并打开会话,因为您试图访问在未调用session_start()的脚本中设置的会话变量。很抱歉,没有添加该部分。是的,我做了会话_start();在每一页的变量。我只是忘了在代码的这一部分复制并粘贴它。我修改了上面的代码以反映它包含在我的代码中;在每个页面上创建或使用变量。我做了你建议的更改,但没有成功。事实上,“猫”不再出现在我重定向到的页面上。因此,现在基本上所有的工作都是重定向。我还尝试将以下代码放在/locationsprocessing页面上,但也没有在重定向页面上产生任何输出$_会话['locations']=$_POST['locations']$_会话['animal']='cat';标题('位置:);我确实包括了session_start();在/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>
session_start();
if (isset($_POST['submit'])) { 
  $_SESSION['locations'] = $_POST['locations'];
  $_SESSION['animal']   = 'cat';
  header('Location: ' . $destination);
}