Оператор PHP -IF имеет доступ либо к обычному пользователю, либо к администратору


Для просмотра раздела новостей на моем веб-сайте вы должны войти в систему (либо как обычная учетная запись = login_user, либо как администратор = администратор), и вы можете просматривать загруженные новости в хронологическом порядке. Если вы не вошли ни в одно из условий, перейдите в другое место. ОДНАКО код считает, что ни одно из условий не выполняется, даже если вы вошли в систему с обычной учетной записью или учетной записью администратора и просто направили меня в другое место...

<?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
}
?>
Author: FFF, 2016-06-22

3 answers

Вы хотите:

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

Это означает, что если пользователь не является администратором и пользователь не является пользователем для входа в систему, то у них не должно быть привилегий.

 5
Author: Ryan M, 2016-06-21 21:21:24

!isset($_SESSION['admin']) и !isset($_SESSION['login_user']) оба или по крайней мере один из них всегда будут истинными, поэтому условие первого оператора if всегда будет истинным. Если вы вошли в систему как администратор, вы не вошли в систему как обычный пользователь, и если вы вошли в систему как обычный пользователь, вы не вошли в систему как администратор. Я думаю, что в этом и есть проблема, надеюсь, это поможет

 0
Author: Nizar Ahmed, 2016-06-21 21:31:44

Это логическая проблема.

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

Это означает, что если переменная администратора ИЛИ пользовательская переменная не заданы, вы собираетесь перенаправить. Если у вас есть один набор, но нет другого, он все равно будет перенаправляться.

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

Это, скорее всего, решит вашу проблему. "Не" и "или" иногда могут быть сложными. Это условие гарантирует, что, если установлены сеансы пользователя или администратора, вы в выигрыше.

 0
Author: dmcoding, 2016-06-21 21:46:35