【问题标题】:Notice: Undefined index body注意:未定义的索引体
【发布时间】:2023-04-07 17:48:01
【问题描述】:

我有这样的东西:

<?php
    $body = $_GET["body"];
    if ($body=="")
    {
        include("includes/desktop.php");
    }
    else
    {
        if (is_file("includes/$body.php"))
        {
            include("includes/$body.php");
        }   
        else
        {
            include("includes/desktop.php");
        }        
    }                              
?>

如何让这个通知消失? 仅当 $_GET["body"] 为空时才会发生。

注意:未定义索引:C:\wamp\www\admin\index.php 中的正文在线 106

【问题讨论】:

标签: php


【解决方案1】:

警告您正文不是通过 $_GET 发送的。你需要做这样的事情

<?php
    if (isset($_GET["body"])) {
      $body = $_GET["body"];
      if ($body=="")
      {
          include("includes/desktop.php");
      }
      else
      {
          if (is_file("includes/$body.php"))
          {
              include("includes/$body.php");
          }   
          else
          {
              include("includes/desktop.php");
          }        
      }                              
  }
?>

【讨论】:

  • 第二行也应该有')'。但它不起作用。
【解决方案2】:

改变

$body = $_GET["body"];

$body = isset($_GET["body"]) ? $_GET["body"] : '';

你可以在phphere中找到几乎所有的符号和运算符

【讨论】:

  • 它对我有用。但说实话,我从来没有见过这样的东西。你能告诉我“”到底是什么意思吗?和':'?
  • @user3261158:三元运算符
  • 好的。谢谢你的帮助。
  • @user3261158:我已经用 SO 链接更新了答案。真的很有帮助。
【解决方案3】:

试试

if (!isset($_GET['body']) || empty($_GET['body'])) {
   include("includes/desktop.php");
} else {
    ...
}

http://www.php.net/isset

附带说明:您应该永远相信用户输入。将 body GET 参数直接传递给您的 include() 调用允许恶意用户包含您从未打算加载的文件。

【讨论】:

    【解决方案4】:

    这是因为在超全局 $_GET 数组中没有索引 body。换句话说,你没有传递$_GET['body']

    改为使用:

    if (isset($_GET['body']) && $_GET['body']) {
    

    这会检查索引和有意义的(非虚假)值。

    【讨论】:

      猜你喜欢
      • 2015-06-02
      • 2015-12-01
      • 2013-11-27
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      相关资源
      最近更新 更多