PHP常量包括

时间:2016-06-28 18:51:45

标签: php

我在PHP中遇到问题,我正在尝试2个小时来解决这个问题。

我有一个应用程序,我希望所有用户都从index.php文件开始。该文件包括登录文件和内容文件。

现在,通常用户可以直接访问content.php文件。

因此我定义了一个常量,当用户从index.php开始时设置该常量。

此文件类似于

define('NAME','X');
include("Login.php");
include("content.php");

现在我定义了常量,如果将此常量设置为显示我的数据,我想检查我的包含文件。在登录文件中,这没有问题。 然后我有第二个,如果我这样写就可以了:

    if(defined('NAME'))
    {
        showContent();
    }

但我也有$ _POST检查,并且它不起作用!

if(defined('NAME'))
{
if (isset ( $_POST ["Login"] ) ) 
{
    if ($_POST ["Login"] == "True" ) {      
        echo showContent();
    }
}
}

如果没有if(已定义(' NAME')),它的工作正常!我从javascript文件中获取post变量。

你能解释一下为什么它只使用定义的if而不是第二个?

显然,常量是正确定义的。

感谢。

1 个答案:

答案 0 :(得分:0)

常量不像会话值,它不会持久存在多个页面。

当您对页面发出POST请求时,不再定义常量,因此您的代码不会被执行。

您使用常量作为安全措施来防止未经授权的访问,您可以考虑执行"反对"你现在正在做什么,而不是检查是否设置了常量,检查它是否不然后再做403.

if(!defined('NAME')) {
    die('403');
}