PHP - 使用GET变量重新加载URL

时间:2013-03-26 18:10:36

标签: php redirect get

我想确保将$ _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");
}

我不明白为什么它不起作用。 任何帮助都会很棒。感谢。

编辑:问题是网址没有反映标题信息应该是什么。如果再次重新加载页面,这将自行修复。然而,这显然不是我想要的。

4 个答案:

答案 0 :(得分:2)

if(isset($_GET['file'])) {
   //its set means value is not equal to null or false
} else {
   //its not set so redirect
}

http://php.net/manual/en/function.isset.php

答案 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)

我发现了问题。

这是因为脚本中的标题信息不正确。