【问题标题】:What is the correct way to retrieve variables from the URL with an IF Statement?使用 IF 语句从 URL 检索变量的正确方法是什么?
【发布时间】:2025-12-21 04:10:10
【问题描述】:

我的旧网站刚刚迁移到新服务器(新 PHP 平台)。

当 URL 显示:http://url.com/page.php?num=9

这曾经有效:

if($num == "9")
echo "hello";
?>

自该网站建成以来的这千年间发生了什么变化?

【问题讨论】:

  • 查询字符串值在$_GET数组中。以$_GET['num'] 为例。

标签: php variables url


【解决方案1】:

在这种情况下,您需要使用这种方式获取变量

$number = $_GET["num"];

然后你可以继续

if($number=="9") {
     echo "hello";
}

【讨论】:

  • 另外,过滤或清理您从 GET 检索到的任何信息也是一个好主意
  • 是的,你是对的。使用 GET 风险很大……也许使用一些 php 框架可以解决问题,例如 Code Igniter、Laravel 等
【解决方案2】:

改变的是:

  1. 引入了 PHP 4.1 - Superglobals$_GET$_POST 等)
  2. PHP 4.2 - register_globals 默认设置从 ON 更改为 OFF

  3. PHP 5.3 - 注册全局变量已弃用

  4. PHP 5.4 - 寄存器全局变量已删除

注册全局变量允许您自动将$num 放在 URL 中。我链接的 PHP 文档中有一些关于删除该功能的各种(好的)原因的讨论。一个好的 TL/DR(来自该文档)可能是:

当启用时,register_globals 将向您的脚本注入各种变量,例如来自 HTML 表单的请求变量。再加上 PHP 不需要变量初始化这一事实意味着编写不安全的代码要容易得多。

正如其他答案所示,现在获取它的方法是使用$_GET['num'],但如果您的代码依赖于寄存器全局变量,则可能还有其他内容需要更新。

【讨论】:

    【解决方案3】:
    $_GET['your_url_parameter_name_here']
    

    在您的实例中使用以下代码

    if($_GET['num'] == "9")
        echo "hello";
    

    【讨论】:

      【解决方案4】:

      您可以像这样从url 获得values

      网址http://example.com/page.php?num=9

      $_GET['num'];
      

      要检查它是否已设置,您只需执行以下操作:

      if(isset($_GET['num'])){
         //return true
      }
      

      或者以你为例,如果它是 9

      if($_GET['num'] == "9"){
         echo "It's 9";
      }
      

      manual 中了解$_GET

      【讨论】:

        最近更新 更多