我在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响应是空的。问题出在哪里?
感谢您的时间。
答案 0 :(得分:1)
else if ($logged && $priv === 0){ //user logged in and isn't admin
你应该var_dump($ priv)并且确实检查是否传递了一个整数,如果是这样,使用=== 0并且如果$ priv是一个字符串则使用==='0'。
我总是把var_dump()代码变成一个条件的关键,你永远无法分辨。
答案 1 :(得分:0)
问题在于处理MySQL输出,在这段代码中:
$priv = mysql_result($qry, 0) or die(mysql_error());
当我使用mysql_fetch_row
重写它时,一切正常$x = mysql_fetch_row($qry);
$priv = $x[0];
对我来说似乎很奇怪。无论如何,感谢您的帮助,并且抱歉没有发布实际有问题的代码=)