为什么PHP变量仍未定义?

时间:2015-02-17 21:59:07

标签: php

我正在使用三个PHP文件。两个用作网页,另一个用作外部服务器端脚本。服务器端脚本包含在两个网页文件中,我想要做的是在第一页上有一些按钮,根据点击哪一个,用数据填充第二页,然后重定向到它。

使用下面的代码,想法是选择按钮单击,找出单击了哪个按钮,然后调用该函数以运行正确的查询并设置所需的变量。我不明白为什么变量没有设定。

感谢有人看到这个!

首页按钮(index.php):

<input type="submit" id='details' name='details' value='Submit'/>

加载页面时未定义变量的第二页:

<h4><?php echo $selected_button; ?></h4>

外部脚本:

function detailBuilder(){

    $selected_button = "Option One";
    //header('Location: details.php'); if this is here, the page still redirects but the variable doe not get set
    //More will happen here once it works

}

if(isset($_POST['details'])){

    detailBuilder();
    header('Location: details.php');

}

1 个答案:

答案 0 :(得分:1)

正如以前有几个人指出的那样,你重定向到另一个文件。此时,所有本地定义的变量都消失了 - 您无法再访问它们。

查看PHP会话in PHP's documentation。会话将允许您将这些变量从请求传输到请求。但是,只有在运行某种形式的Web服务器时,会话才会起作用。

更新:还要注意,正如其他人(再次)指出的那样,$ selected_button =&#34;选项一&#34;将仅适用于&#34;范围&#34;功能detailBuilder。因此,调用detailBuilder()会在函数内部创建一个名为$ selected_button的变量,然后立即将其丢弃。

UPDATE 2.0:很抱歉这么多更新。以下是设置会话的示例:

更新3.0:略微更新代码

首先要做的事情。确保你开始会议。

session_start();

您必须在任何php脚本的开头调用session_start()!这意味着每次执行的第一个文件应该在顶部有session_start()。

外部脚本:

$_SESSION["selected_option"] = "Option One";

最初未定义的脚本:

$selected_details  = $_SESSION["selected_option"];
?>
<h4><?=$selected_details?></h4>