问题描述
|
我在admin.PHP中有以下代码(某种简单CMS的管理页面):
<?PHP
header(\"Cache-Control: no-store,no-cache,must-revalidate\");
header(\"Pragma: no-cache\");
//Some work with MysqL,setting $logged boolean and $priv variable (user\'s privileges)
//If $_POST[\'newspost\'] set,processing request and setting $status
<!DOCTYPE html>
<html>
<head>
<!-- some JS and CSS includes -->
</head>
<body>
<div id=\"adm-content\">
<h2 id=\"adm\">Settings</h2>
<p id=\"news-status\"><?PHP if (!empty($status)) echo $status; ?></p>
<?PHP if ($logged && $priv > 0){ ?> //user logged in and is admin
<p id=\"adm-status\">Hello,<?PHP echo $_COOKIE[\'user\'] ?></p>
<!-- some admin forms -->
<?PHP
}
else if ($priv == 0){ //user logged in and isn\'t admin
?>
<p id=\"adm-status\">Hello,<?PHP echo $_COOKIE[\'user\'] ?></p>
<p>You are not admin</p>
<?PHP
}
else{ ?>
<!-- login form displayed -->
?PHP
}
?>
</body>
</html>
除第二种情况(用户已登录,但不是管理员)之外,其他所有方法都工作正常。然后显示空白页。正如我在FireBug中看到的那样,GET admin.PHP响应为空。问题可能出在哪里?
谢谢你的时间。
解决方法
else if ($logged && $priv === 0){ //user logged in and isn\'t admin
您应该使用var_dump($ priv)并真的检查是否传递了整数,如果是,则使用=== 0,如果$ priv是字符串,则使用=== \'0 \'。
我总是var_dump()代码成为条件的症结,您永远无法分辨。
,在这段代码中,问题在于处理MySQL输出:
$priv = mysql_result($qry,0) or die(mysql_error());
当我使用mysql_fetch_row重写它时,一切正常
$x = mysql_fetch_row($qry);
$priv = $x[0];
对我来说似乎很奇怪。无论如何,感谢您的帮助,也很抱歉没有发布实际有问题的代码=)