繁体   English   中英

会话变量未发送到下一页

[英]Session Variable not sending to next page

当用户点击“提交”时,我正在尝试为下拉菜单中选择的位置设置会话变量。 目标是将该变量传递到另一个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';
} 

下面是第二页中的代码,我在这些代码中调用会话变量进行显示。 如您所见,我输入了另一个变量用于测试。 它应该显示“ cat”并且显示。

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

还可能需要注意的是,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>

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

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

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

暂无
暂无

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

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