在3个PHP页面之间携带变量

时间:2016-07-03 18:43:28

标签: php html forms session

我正在创建一组3页,每页都有一个下拉菜单。上一个下拉菜单中的值将填充下一个下拉菜单。我知道我必须使用会话变量将每个下拉菜单的值保存到以后的页面中。作为一个简单的测试,我回应变量,看看它们是否已被转移 - 这就是问题所在。

我有三个不同的文件:choose_cc.php,choose_uni.php和choose_major.php choose_cc.php中的dropdowm菜单中的值确实会在choose_uni.php中回显 - 但是choose_cc.php中的值不会被转移到choose_major.php中 - 尽管我将它存储到会话变量中。

页面流是这样的;

choose_cc.php - > choose_uni.php - > choose_major.php 每个php文件都有自己的形式。问题在于当我尝试将choose_cc.php中的值调用到choose_major.php时,我遇到了问题。

choose_cc.php上的表单名称为choose_cc。 choose_uni.php上的表单名称为choose_uni

例如,在choose_uni.php中,我从上一页的下拉菜单中选择值(choose_cc.php),如下所示:     $ _SESSION ['choose_cc'] = trim($ _ GET ['choose_cc']); //从上一页获取cc     $ user_cc = $ _SESSION ['choose_cc'];     echo $ user_cc;

当我像上面那样回应它时,它有效!好的完美!

但是当我进入choose_major.php时,我尝试从表单中再次检索该值,但是没有这样的效果;

echo $_SESSION['choose_uni']; //this works
echo $_SESSION['choose_cc']; //this doesn't work

我确保在每个页面的开头也存储session_start()

请帮帮我!这让我疯了!

2 个答案:

答案 0 :(得分:0)

使用以下方法创建一个新的“see.php”:

session_start(); 
print_r($_SESSION);

并在每个choose_cc.php,choose_uni.php和choose_major.php之后执行它,以查看运行程序后的会话。

答案 1 :(得分:0)

这很简单:

a)添加session_start();在所有涉及的页面的开头。如果你在它之前放置一个空格,甚至是一个新的行,有时会发生一些奇怪的事情。所以请确保它是您脚本中的第一件事。

<?php
session_start();
?>

b)如果需要,检查变量以保存到session not not empty();这样你可以确定会话变量包含某些内容,除非你当然想要显式为空。

c)然后加载会话变量。您可以使用var_dump();

临时检查它
<?php
session_start();
if (!empty(trim($_GET['choose_cc'])))
{
    $_SESSION['choose_cc'] = $_GET['choose_cc'];
}
var_dump($_SESSION['choose_cc']);
?>