Автор Тема: PHP  (Прочитано 249 раз)

0 Пользователей и 1 Гость просматривают эту тему.

GameRussiaАвтор темы

  • *
  • Оффлайн
  • Награды Более 100 сообщений Более 10 созданных тем
  • Дата регистрации: Июн 2017
  • Возраст: 15
  • Сообщений: 102
  • Страна: ru
  • Поблагодарили: 5 раз(а)
  • Репутация +1/-0
  • Пол: Мужской
  • Дата рождения:2002-08-20
  • Рефералов 0
    • Награды
  • Социальные сети:
    ВКонтакте
PHP
« : 28 Август 2017, 16:15:53 »
Нет оценки
Есть 2 PHP скрипта.
1.
<?php
if($user_data["f_t"] < 1) {
print '<font color="red"><b>Необходимо преобрести</b><br><font color="green"><b>Курятник</b></font></font>';
} else {
?>
      <input type="hidden" name="item" value="1" />
      <input type="submit" value="Купить" style="height: 30px; margin-top:10px;" class="btn_8" />

  <?php } ?
2.
if($user_data["a_t"] >= $dost_at) {
print '<font color="red"><b>Необходимо преобрести</b><br><font color="green"><b>Курятник</b></font></font>';
} else {
?>
      <input type="hidden" name="item" value="1" />
      <input type="submit" value="Купить" style="height: 30px; margin-top:10px;" class="btn_8" />

  <?php } ?>
По отдельности они работают, а вот как из совместить?! Т.е чтобы было примерно так же как при покупке дерева. (если не выполнилось одно, выполняется следующее.)
 

Feexee

  • *
  • Оффлайн
  • Дата регистрации: Янв 2017
  • Сообщений: 47
  • Страна: ru
  • Поблагодарили: 6 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
  • Рефералов 0
    • Награды
PHP
« Ответ #1 : 28 Август 2017, 17:44:27 »
Нет оценки
вроде так делается
if($user_data["a_t"] >= $dost_at OR $user_data["f_t"] >= 1){
 
Пользователи, которые поблагодарили этот пост: GameRussia

GameRussiaАвтор темы

  • *
  • Оффлайн
  • Награды Более 100 сообщений Более 10 созданных тем
  • Дата регистрации: Июн 2017
  • Возраст: 15
  • Сообщений: 102
  • Страна: ru
  • Поблагодарили: 5 раз(а)
  • Репутация +1/-0
  • Пол: Мужской
  • Дата рождения:2002-08-20
  • Рефералов 0
    • Награды
  • Социальные сети:
    ВКонтакте
PHP
« Ответ #2 : 28 Август 2017, 17:56:22 »
Нет оценки
вроде так делается
if($user_data["a_t"] >= $dost_at OR $user_data["f_t"] >= 1){
ОК, попробую, но я думал по-другому сделать

Добавлено сообщение: [time]28 Августа 2017, 20:02:25[/time]
Всем спасибо, все свободны.:tema:

Добавлено сообщение: 29 Август 2017, 09:54:51
Рано тему закрывать...
В итоге получилось вот это:
<?php
if($user_data["a_t"] >= $dost_at OR $user_data["f_t"]  < 1){
print '<font color="red"><b>Необходимо преобрести</b><br><font color="green"><b>Курятник</b></font></font>';
} else {
?>
      <input type="hidden" name="item" value="1" />
      <input type="submit" value="Купить" style="height: 30px; margin-top:10px;" class="btn_8" />

  <?php } ?>
   </form>
Вроде всё хорошо, но есть недочёт.
Если дойти до момента, когда кнопка "купить" недоступна и обновить страницу, то браузер выдаст предупреждение типо: вами ранее была введена информация... Соглашаемся с этим сообщением, страница перезагружается ииии... Куплено ещё одно растение, тем самым эта заглушка просто проигнорирована. Так можно покупать растения, пока серебро не закончится...
Как предотвратить такой беспорядок?
 

pligin

  • *
  • Оффлайн
  • Награды На форуме более 1 года
  • Дата регистрации: Янв 2016
  • Забанен!
  • Сообщений: 12
  • Страна: 00
  • Поблагодарили: 1 раз(а)
  • Репутация +1/-0
  • Пол: Мужской
  • Рефералов 0
    • Награды
PHP
« Ответ #3 : 29 Август 2017, 12:53:46 »
Нет оценки
ОК, попробую, но я думал по-другому сделать

Добавлено сообщение: [time]28 Августа 2017, 20:02:25[/time]
Всем спасибо, все свободны.:tema:

Добавлено сообщение: 29 Август 2017, 09:54:51
Рано тему закрывать...
В итоге получилось вот это:
<?php
if($user_data["a_t"] >= $dost_at OR $user_data["f_t"]  < 1){
print '<font color="red"><b>Необходимо преобрести</b><br><font color="green"><b>Курятник</b></font></font>';
} else {
?>
      <input type="hidden" name="item" value="1" />
      <input type="submit" value="Купить" style="height: 30px; margin-top:10px;" class="btn_8" />

  <?php } ?>
   </form>
Вроде всё хорошо, но есть недочёт.
Если дойти до момента, когда кнопка "купить" недоступна и обновить страницу, то браузер выдаст предупреждение типо: вами ранее была введена информация... Соглашаемся с этим сообщением, страница перезагружается ииии... Куплено ещё одно растение, тем самым эта заглушка просто проигнорирована. Так можно покупать растения, пока серебро не закончится...
Как предотвратить такой беспорядок?
При обновлении страницы отправляется повторно POST запрос с теми же данными.
Это не ошибка
Если хочешь оградить себя от этого, используй AJAX
a:0:{}
 
Пользователи, которые поблагодарили этот пост: GameRussia

GameRussiaАвтор темы

  • *
  • Оффлайн
  • Награды Более 100 сообщений Более 10 созданных тем
  • Дата регистрации: Июн 2017
  • Возраст: 15
  • Сообщений: 102
  • Страна: ru
  • Поблагодарили: 5 раз(а)
  • Репутация +1/-0
  • Пол: Мужской
  • Дата рождения:2002-08-20
  • Рефералов 0
    • Награды
  • Социальные сети:
    ВКонтакте
PHP
« Ответ #4 : 29 Август 2017, 14:30:45 »
Нет оценки
При обновлении страницы отправляется повторно POST запрос с теми же данными.
Это не ошибка
Если хочешь оградить себя от этого, используй AJAX
Спасибо.
Решение, которое помогло мне:
Вставить
header("Location: Ваш путь");
Примерно вот так:
if(strlen($citem) >= 3){

      # Проверяем средства пользователя
      $need_money = $sonfig_site["amount_".$citem];
      if($need_money <= $user_data["money_b"]){
      
         if($user_data["last_sbor"] == 0 OR $user_data["last_sbor"] > ( time() - 60*20) ){

            $to_referer = $need_money * 0.1;
            # Добавляем персонаж и списываем деньги
            $db->Query("UPDATE db_users_b SET money_b = money_b - $need_money, $citem = $citem + 1,
            last_sbor = IF(last_sbor > 0, last_sbor, '".time()."') WHERE id = '$usid'");

            # Вносим запись о покупке
            $db->Query("INSERT INTO db_stats_btree (user_id, user, tree_name, amount, date_add, date_del)
            VALUES ('$usid','$usname','".$array_name[$item]."','$need_money','".time()."','".(time()+60*60*24*15)."')");

            echo "<center><font color = 'green'><b>Вы успешно купили персонажа</b></font></center><BR />";

            $db->Query("SELECT * FROM db_users_b WHERE id = '$usid' LIMIT 1");
            $user_data = $db->FetchArray();
            
            header("Location: /account/farm");
         }else echo "<center><font color = 'red'><b>Перед тем как докупить персонаж следует собрать яйца!</b></font></center><BR />";
           
      }else echo "<center><font color = 'red'><b>Недостаточно серебра для покупки</b></font></center><BR />";

   }else echo 222;

}
 
Теги:
 

Имя пользователя:
Пароль:
Session: