【问题标题】:undefined constant problem with xamppxampp的未定义常量问题
【发布时间】:2011-09-05 14:13:05
【问题描述】:

xamp 有两个问题

第一个问题

我的代码

if($_REQUEST['foo']){
    echo 'bar';
}

错误:注意:未定义索引:第 5 行 C:\xampp\htdocs\test_file.php 中的 foo

第二个问题

我的代码

define( THEME ,'theme/');

错误:注意:使用未定义的常量主题 - 假定为“主题”

我该如何解决这个问题?

问题已解决: 我认为问题出在 xampp 中,因为文件在 apache 上运行良好,但很抱歉这是我的错误,谢谢大家

【问题讨论】:

  • 这里的问题是你使用一个常量来定义一个常量。像 Artefacto 指出的那样,将 " 放在您的常量名称周围,它会起作用。顺便说一下,一般 PHP 错误与 xampp 无关;-)
  • 这不是xamp的问题——只有php知识
  • 谢谢bjorn kaiser 问题解决了

标签: php


【解决方案1】:
if (key_exists('foo', $_REQUEST) && $_REQUEST['foo']){
...
}

对不存在的数组键的访问会发出通知(issetempty 等特殊结构除外;顺便说一下,您可以将条件重写为 if (!empty($_REQUEST['foo'])),因为 empty 与如果强制转换为布尔值,则 value 将转换为 FALSE),因此您应该先检查它们。

define( "THEME" ,'theme/');

define 将字符串作为第一个参数,只是THEME 看起来像一个常量,所以 PHP 会寻找一个;找不到它会恢复为字符串"THEME",这就是您想要的。但这是你想要的字符串,你应该首先给它。

【讨论】:

    【解决方案2】:

    第一:

    if (!empty($_REQUEST['foo'])){
        echo 'bar';
    }
    

    第二:

    define('THEME', 'theme/');
    

    【讨论】:

      【解决方案3】:

      请阅读有关使用 $_REQUEST 的信息:http://devlog.info/2010/02/04/why-php-request-array-is-dangerous/

      $_REQUEST 包含来自 $_POST、$_GET 和 $_COOKIE 的所有内容。如果没有 $_POST['foo']、$_GET['foo'] 或 $_COOKIE['foo'],则 $_REQUEST['foo'] 不存在。

      第二:

      如果你想定义一些东西,总是使用 "" 或 '',例如:

      define( "THEME" , "/theme/goes/here/" );
      

      【讨论】:

      • 这不是很准确;默认情况下,$_REQUEST 包含来自这些来源的所有内容,但这是可配置的。
      • 我认为问题出在 xampp 中,因为文件在 apache 上运行良好,但很抱歉这是我的错误,谢谢大家
      • v3rt1g0,你的回答对我很有用,非常感谢
      猜你喜欢
      • 1970-01-01
      • 2011-10-06
      • 2016-12-07
      • 1970-01-01
      • 2017-09-22
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      相关资源
      最近更新 更多