Процесс Php / Mysql с вопросом привилегий пользователя и администратора

У меня есть этот еженедельный процесс обратного отсчета, и если пользователь входа достигает предела 0 недель, его страница будет запрещена с сайта, и это нормально, моя проблема в том, что если я администратор, я не хочу, чтобы этот процесс запретил мне.
На этой платформе у меня есть права пользователя и администратора
например: для администратора: $user — >isAdmin () и для пользователя: if($user — >>islg()

Процесс Php это:

if($user->islg()) {
function get_weeks_remaining($date, $expire){

        $difference = strtotime($expire) - strtotime($date);
        return floor($difference / 604800);

}
$link = mysqli_connect("localhost", "user", "password", "table"); 
$nume = $user->data->username;
$id = $user->data->id;
$date = date('m/d/Y h:i:s a', time());
$expire_date = 'May 14, 2016';
$remain =  get_weeks_remaining($date, $expire_date);
$reason = 'user has been suspended';
// weeks remaining 
$save=mysql_query("INSERT INTO `week-ferify`(`id`,`date`,`name`,`expire`,`remain`)VALUES('$id','$date','$name','$expire_date','$remain')");

$sql = "SELECT `id`,`remain` FROM `week-ferify`";
if($result = mysqli_query($link, $sql)){
if(mysqli_num_rows($result) > 0){
while(list($id,$remain) = mysqli_fetch_array($result)){
 if($remain > 0 and $remain < 2){
   echo "<div class="week-remain-box"><span class='week-remain-text'>week remain</span><p class='week-remain-remain'>$remain</p></div>";
 }else{
   echo "<div class="week-remain-box"><span class='week-remain-text'>weeks remains</span><p class='week-remain-remain'>$remain</p></div>";
  //Ban process
 } if ($remain > 0 and $remain < 2) {
    mysql_query("UPDATE `mls_users` SET banned=0 WHERE id=$id");
 } else {
    mysql_query("UPDATE `mls_users` SET banned=1 WHERE id=$id");
    mysql_query("INSERT INTO `mls_banned`(`id`,`until`,`by`,`reason`)VALUES('$id','1462317824','1','$reason')");
 }
}
mysqli_free_result($result);
    }
}
}

I don’t know where to put $user — >isAdmin () for not being banned by the process and only simple users to get banned. Спасибо за любой совет, и извините за мой плохой английский.

1 ответ

  1. Учитывая, что $user->isAdmin()метод возвращает trueили falseоснован на том, является ли пользователь администратором:

    Разместите ifвыписку перед фактическим бан-кодом.

     //Ban process
     if ($remain > 0 and $remain < 2) {
        mysql_query("UPDATE `mls_users` SET banned=0 WHERE id=$id");
     } else {
    
       if(!$user->isAdmin()){
        mysql_query("UPDATE `mls_users` SET banned=1 WHERE id=$id");
        mysql_query("INSERT INTO `mls_banned`(`id`,`until`,`by`,`reason`)VALUES('$id','1462317824','1','$reason')");
        }
     }
    

    Однако, если можно с уверенностью предположить, что значение по умолчанию bannedравно 0. Я предлагаю вам поместить обернуть условие по всему » запрещающий код»

    //Ban process
     if(!$user->isAdmin()){
        if ($remain > 0 and $remain < 2) {
        mysql_query("UPDATE `mls_users` SET banned=0 WHERE id=$id");
        } else {
    
    
        mysql_query("UPDATE `mls_users` SET banned=1 WHERE id=$id");
        mysql_query("INSERT INTO `mls_banned`(`id`,`until`,`by`,`reason`)VALUES('$id','1462317824','1','$reason')");
    
        }
     }
    

    А также вы, вероятно, должны изменить счетчик тоже.