PHP - IF 语句普通用户或管理员有访问权限

PHP - IF statement either regular user OR admin have access

要查看我网站的新闻部分,您必须登录(作为普通帐户 = login_user 或 admin = admin ),您可以按时间顺序查看上传的新闻。如果您未在任何一种情况下登录,请转到其他地方。然而,代码正在考虑 none 即使使用普通帐户或管理员帐户登录并简单地将我引导到其他地方,也满足条件...

<?php
error_reporting(0);
session_start();
if(!isset($_SESSION['admin']) || !isset($_SESSION['login_user']))
{
?>
<div class = "api" style="position: absolute;
    top: 140px;
    right: 400px;
    width: 730px;
    height: 400px;word-wrap: break-word;">

<h2 align = "center"> <font color ="red"> You Do Not Have Permission To View this Page. </font> <br><br> Your Options Are: 
<br><br><br>
<a href="index.php"> Create and Register for A New Account </a> <br> <br> <br> OR <br> <br> <br> <a href="indexmember.php">Log In With An Existing Account. </h2>
</div>


<?php
}
elseif(isset($_SESSION['admin']) || isset($_SESSION['login_user']))
{
    include 'connect.php';
?>
<div class = "api" style="position: absolute;
    top: 10px;
    right: 220px;
    width: 1200px;
    height: 3200px;word-wrap: break-word;" id="easyPaginate">


<?php
$query = mysqli_query($con,"select * from news order by date DESC");
while($r = mysqli_fetch_array($query))
{
    ?>
    <section class="propertypage">
    <br> <br>
    <h4><?php echo "<b><u>Title</u>: </b>".$r['Title']; ?></h4>
    <h4><?php echo "<b><u>Detail</u>: </b>".$r['story']; ?></h4>
    <h4><?php echo "<b><u>Published Date</u>: </b>".$r['DATE']; ?></h4>
    <img src="<?php echo $r['image']; ?>" height="600px" width="1200px"/>
    <br> <br> <br>
    </section>
<?php
}
?>
</div>

<?php
}
?>

你想要:

if(!isset($_SESSION['admin']) && !isset($_SESSION['login_user']))
    // ....

这是说如果用户不是管理员并且用户不是登录用户,那么他们一定没有权限。

!isset($_SESSION['admin']) 和 !isset($_SESSION['login_user']) 两者或至少其中之一将始终为真,因此第一个条件if 语句将永远为真。如果您以管理员身份登录,则您未以普通用户身份登录;如果您以普通用户身份登录,则您未以管理员身份登录。我认为这是问题所在,希望对您有所帮助

这是一道逻辑题。

if(!isset($_SESSION['admin']) || !isset($_SESSION['login_user']))

这意味着如果未设置管理变量或用户变量,您将进行重定向。如果你有一套但没有另一套,它仍然会重定向。

if(isset($_SESSION['admin']) || isset($_SESSION['login_user']))

这可能会解决您的问题。 Not's 和 or's 有时会很棘手。这个条件将确保如果设置了用户或管理员会话,你就成功了。