Как мне использовать «и», «если» в этой ситуации

#php

#php

Вопрос:

Это основной вопрос о PHP.

  • У меня есть база данных MySQL с таблицей с именем «пользователи», и эта таблица содержит два столбца «загрузки» и «vip»
  • В столбце Загрузки будет учитываться загрузка для каждого пользователя, если она достигла 6, загрузка будет заблокирована.

Моя проблема в том, что я хочу настроить разные типы пользователей. Например, для обычных пользователей они могут загружать только 6 файлов, а для VIP-пользователей они могут загружать только 15 файлов.

Это мой код:

 $dl_user = gator::getUser($dl_username);
if ($dl_user['downloads'] > 99){
    echo "<script type='text/javascript'>location.href='https://www.example.com/?signup=1amp;'</script>";
    die;
}

$dl_user = gator::getUser($dl_username);
if ($dl_user['downloads'] > 6){
    echo "<script type='text/javascript'>location.href='https://www.example.com/buynow/'</script>";
die;
}
  

По умолчанию гостевые пользователи «без учетной записи» не смогут ничего загружать, и я дал им переменную «100», чтобы она заблокировала ее.

Я пытаюсь сделать код таким:

  1. Если пользователь является гостем => ссылка (эта часть работает)
  2. Если загрузка пользователя превысит 6 > ссылка (также эта часть работает)
  3. Но если пользователь превышает 6, и он VIP, а столбец VIP равен 1, тогда ограничьте пользователя файлом 15 (это не работает, как я могу это решить?)

Комментарии:

1. Вам не нужно создавать / переопределять $dl_user переменную каждый раз, когда вы хотите выполнить оператор if.

2. Вам следует ознакомиться с документацией по использованию if инструкций, else statements и elseif statements. Вы можете сделать это здесь.

3. Итак, if ($dl_user['downloads'] > 6 amp;amp; $dl_user['vip'] < 1) вычисляется true, скрипт должен быть повторен?

4. @Script47 новая вещь, которую я узнал, спасибо, хорошо, я рассмотрю это.

5. @DerAlex Я предполагаю, что код должен быть таким «if ($dl_user[‘downloads’] > 6 amp;amp; $dl_user[‘vip’] < 0) echo «link here»; потому что <1 означает 2, и я хочу, чтобы колонка была заменена на 1, я попробую, спасибо 🙂

Ответ №1:

Вы могли бы присвоить столбцу VIP разные значения, чтобы проверить, является ли пользователь VIP или нет, например 0 = гость, 1 = участник, 2 = VIP…

     $dl_user = gator::getUser($dl_username);

    if ($dl_user['vip'] == 0){
        // BLOCK ANY download.
    } else if($dl_user['vip'] == 1) {
        // User is a member (allow 6 downloads)
        if($dl_user['downloads'] > 6) {
            //BLOCK the download
        } else {
            //ALLOW download and COUNT
            $dl_user['downloads'] = $dl_user['downloads']   1;
        }
    } else if($dl_user['vip'] == 2) {
        // User is a VIP (allow 15 downloads)
        if($dl_user['downloads'] > 15) {
            //BLOCK the download
        } else {
            //ALLOW download and COUNT
            $dl_user['downloads'] = $dl_user['downloads']   1;
        }
    } else {
        // User has unknown status (not logged or some error)
    }
  

Если вам нужно сохранить структуру данных, используя поле download для определения типа пользователя, я предлагаю просто проверить, соответствует ли оно 6, 15 или 100, и заблокировать или разрешить загрузку на основе этого, но таким образом вы не сможете подсчитать загрузки, используя это поле…

Комментарии:

1. если у вас есть какие-либо сомнения, не стесняйтесь спрашивать!! Я здесь новичок и готов помочь!

Ответ №2:

Я написал код для вас. Я думаю, вы понимаете условие if else.

 $dl_user = gator::getUser($dl_username);
if($gustuser){
    echo "<script type='text/javascript'>location.href='https://www.example.com/?signup=1amp;'</script>";
    die;
}elseif($normaluser amp;amp; ($dl_user['downloads'] >6 )){
        echo "<script type='text/javascript'>location.href='https://www.example.com/buynow/'</script>";
        die;    
}elseif($vipuser amp;amp; ($dl_user['downloads'] >15 )){
        echo "<script type='text/javascript'>location.href='https://www.example.com/buynow/'</script>";
        die;    
}
  

Ответ №3:

Если вы посмотрите на документацию по логическим операторам PHP, там есть таблица, в которой показаны различные логические операторы в PHP, одним из которых является оператор amp;amp;amp;amp;. Результатом этого оператора является:

ВЕРНО, если оба значения $ a и $ b являются ИСТИННЫМИ.

Имея это в виду, если вам нужно проверить наличие нескольких условий в операторе if, вы могли бы использовать amp; для выполнения этого. Возможным решением вашей проблемы может быть:

 $dl_user = gator::getUser($dl_username);

if ($dl_user['downloads'] > 99){
    echo "<script type='text/javascript'>location.href='https://www.example.com/?signup=1amp;'</script>";
    die;
}

if ($dl_user['downloads'] > 6){
    echo "<script type='text/javascript'>location.href='https://www.example.com/buynow/'</script>";
    die;
}

if ($dl_user['downloads'] > 6 amp;amp; $dl_user['is_vip'] amp;amp; $dl_user['vip_col'] === 1 {
      // Code that restricts user to 15 files
}

  

Ключи is_vip и vip_col, очевидно, составлены в этом примере, но если у вас есть похожие поля в вашей базе данных, вы могли бы написать условие, подобное приведенному выше.

Комментарии:

1. Но как код даст пользователю VIP больше загрузок и заблокирует его на 15?

Ответ №4:

Я бы проверил все свои условия сразу, поскольку их всего несколько:

 $echo = 
// is the user have more than 15 downloads OR have more than 5 but not vip?
$dl_user['downloads'] > 14 || ($dl_user['downloads'] > 5 amp;amp; $dl_user['vip'] < 1) ? 
//we kick him out
"<script type='text/javascript'>location.href='https://www.example.com/buynow/'</script>" : 
// does he have 100 downloads (guest)
$dl_user['downloads'] > 99 ? 
// get subscribed
"<script type='text/javascript'>location.href='https://www.example.com/?signup=1amp;'</script>" : 
//is none of the above? He can downloads
false;

// we echo the result if there is one, or we leave;
echo $echo ? $echo : die();
  

И если VIP может быть больше одного, чтобы вы знали, сколько он может загрузить, я бы рассчитал это раньше примерно так

 //assuming each vip gives you the right to get 10 more download, I multiply vip by 10
$permited_download = $dl_user[vip] > 0 ? intval($dl_user[vip])*10 : '5';

//then I do the same as the previous exemple but with my calculated variable
$echo = 
// is the user have more than permited downloads (if he's a guest, it's 5) ?
$dl_user['downloads'] > ($permited_download - 1) ? 
//we kick him out
"<script type='text/javascript'>location.href='https://www.example.com/buynow/'</script>" : 
// does he have 100 downloads (guest)
$dl_user['downloads'] > 99 ? 
// get subscribed
"<script type='text/javascript'>location.href='https://www.example.com/?signup=1amp;'</script>" : 
//is none of the above? He can downloads
false;

// we echo the result if there is one, or we leave;
echo $echo ? $echo : die();