我在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而不是第二个?
显然,常量是正确定义的。
感谢。
答案 0 :(得分:0)
常量不像会话值,它不会持久存在多个页面。
当您对页面发出POST请求时,不再定义常量,因此您的代码不会被执行。
您使用常量作为安全措施来防止未经授权的访问,您可以考虑执行"反对"你现在正在做什么,而不是检查是否设置了常量,检查它是否不然后再做403.
if(!defined('NAME')) {
die('403');
}