#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», чтобы она заблокировала ее.
Я пытаюсь сделать код таким:
- Если пользователь является гостем => ссылка (эта часть работает)
- Если загрузка пользователя превысит 6 > ссылка (также эта часть работает)
- Но если пользователь превышает 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();