PHP - GET页面响应空洞

时间:2011-05-25 09:38:15

标签: php privileges

我在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响应是空的。问题出在哪里?

感谢您的时间。

2 个答案:

答案 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];

对我来说似乎很奇怪。无论如何,感谢您的帮助,并且抱歉没有发布实际有问题的代码=)