【问题标题】:PHP - Reloading URL with a GET variablePHP - 使用 GET 变量重新加载 URL
【发布时间】:2013-03-26 18:10:36
【问题描述】:

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

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

编辑:问题是 url 没有反映标题信息应该是什么。如果页面再次重新加载,这会很好地修复自身。但是,这显然不是我想要的。

【问题讨论】:

    标签: php redirect get


    【解决方案1】:
    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

    【讨论】:

    • 如果您查看我的代码,您会发现 if 语句不是问题。如果你阅读了这个问题,你会发现重定向没有显示我想要的网址。
    【解决方案2】:

    您能否提供一个示例 URL,以便我们查看它是否正在焦化?除此之外,试试这个。请注意 $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);
    }
    

    【讨论】:

    • 仍然没有区别。
    【解决方案3】:

    有一个错误。 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'];
    

    if 条件前检查输出。它将帮助您跟踪和了解错误。

    【讨论】:

    • 对不起,为了示例目的,我剥离了太多代码。 $openfile 设置为会话变量 $_SESSION['openfile']
    【解决方案4】:

    我发现了问题。

    这是由于脚本后面的标题信息不正确。

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 1970-01-01
      • 2021-03-29
      • 2023-03-04
      • 2015-02-11
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多