我想确保将$ _GET变量设置为我的URL中另一个变量的值。如果没有,那么我想重新加载页面/网址以显示设置变量。这是我使用的代码:
session_start();
$openfile = $_SESSION['openfile'];
//check if $GET variable isset to the current $SESSION variable
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){
//if not then create new URL string
$hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;
//change location to new URL string
header("Location: $hloc");
}
我不明白为什么它不起作用。 任何帮助都会很棒。感谢。
编辑:问题是网址没有反映标题信息应该是什么。如果再次重新加载页面,这将自行修复。然而,这显然不是我想要的。
答案 0 :(得分:2)
if(isset($_GET['file'])) {
//its set means value is not equal to null or false
} else {
//its not set so redirect
}
答案 1 :(得分:0)
你能提供一个示例网址,以便我们可以看到它是否在焦化吗?除此之外,试试这个。请注意$hloc
现在如何超出引号:
session_start();
//check if $GET variable isset to the current $SESSION variable
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){
//if not then create new URL string
$hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;
//change location to new URL string
header("Location: " . $hloc);
}
答案 2 :(得分:0)
有一个错误。 Undefined variable: openfile
。
更改此行
$hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;
到
$hloc = basename($_SERVER['PHP_SELF']).'?file='.$_SESSION['openfile'];
由于设置了$ openvariable(根据海报评论),所以只有错误是: 无法设置SESSION变量或GET变量。因为以下代码可以正常工作。
<?php
session_start();
$_SESSION['openfile']='foo';
$_GET['file']='bar';
$openfile = $_SESSION['openfile'];
//check if $GET variable isset to the current $SESSION variable
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){
//if not then create new URL string
$hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;
//change location to new URL string
header("Location: $hloc");
}
?>
从语法上讲,您的代码看起来很完美,因此可以正确检查是否设置了GET变量和会话变量。
首先暂时评论此声明 header("Location: $hloc");
。
放:
echo $_GET['file'];
echo $_SESSION['openfile'];
之前如果条件并检查输出。它将帮助您跟踪和了解错误。
答案 3 :(得分:0)
我发现了问题。
这是因为脚本中的标题信息不正确。