我在PHP中遇到了一个问题,我花了2个小时来解决这个问题。
我有一个应用程序,我希望所有用户都从index.php文件开始。该文件包括登录文件和内容文件。
现在,通常用户可以直接访问content.php文件。
出于这个原因,我定义了一个常量,它是在用户从index.php开始时设置的。
这个文件看起来像
define('NAME','X');
include("Login.php");
include("content.php");现在我定义了常量,如果这个常量被设置为显示我的数据,我想检入我的包含文件。在Login文件中,这是没有问题的。然后我有第二个,如果我像这样写它,它是有效的:
if(defined('NAME'))
{
showContent();
}但我也有$_POST检查,但它不工作!
if(defined('NAME'))
{
if (isset ( $_POST ["Login"] ) )
{
if ($_POST ["Login"] == "True" ) {
echo showContent();
}
}
}在没有if(定义(‘NAME’))的情况下,它工作得很好!我从一个javascript文件中获取post变量。
你能给我解释一下为什么它只适用于定义的if而不适用于第二个吗?
显然,常量的定义是正确的。
谢谢。
发布于 2016-06-29 02:57:16
常量不像会话值,它不会跨多个页面持久存在。
当您对页执行POST请求时,不再定义常量,因此不会执行您的代码。
如果您使用常量作为安全措施来防止未经授权的访问,您可以考虑执行与您现在所做的相反的操作,而不是检查是否设置了常量,检查是否设置了常量,然后执行403。
if(!defined('NAME')) {
die('403');
}https://stackoverflow.com/questions/38084103
复制相似问题