Оператор 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
}
?>
3 answers
Вы хотите:
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']))
Это, скорее всего, решит вашу проблему. "Не" и "или" иногда могут быть сложными. Это условие гарантирует, что, если установлены сеансы пользователя или администратора, вы в выигрыше.