我正在使用三个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');
}
答案 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>