McDodik
@McDodik
MC.Додик

Почему не работают проверки?

Здравствуйте! Скажите пожалуйста, почему не работают проверки?
$participant = $_POST['participant'];
$rival = mt_rand(1, 12);
$change = 100;

if ($_SERVER['REQUEST_METHOD'] == "POST") {
   if (!empty($participant)) {
      $rand = mt_rand(1, 100);
      if ($rand <= $change && $participant > $rival) {
         $mess = "Выиграли rand: ".$rand.", вы: ".$participant.", он: ".$rival;
      }else{
         if ($rand > $change && $participant < $rival) {
            $mess = "Проигрыш rand: ".$rand.", вы: ".$participant.", он: ".$rival;
         }
      }
   }else{
      $error = "<b style='color: red;'>Заполните поле!</b>";
   }
}

делаю проверки на шанс и если у меня число больше чем у $rival то писать типо я выиграл, если шанс херня и у $rival больше то я проиграл. Блин, модераторы, извините, я не могу объяснить!
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
Kalombyr
@Kalombyr
Доброго дня.
1. Объявите $mess и $error перед условием, иначе после выполнения какая-либо из них не будет существовать и вы получите ошибку/предупреждение/ничего.

2. Зачем тут ещё одно условие:
else{
         if ($rand > $change && $participant < $rival) {
            $mess = "Проигрыш rand: ".$rand.", вы: ".$participant.", он: ".$rival;
         }
      }

Может возникнуть ситуация, когда ни то ни то не выполнится.
А точнее, всегда из-за $rand > $change.

3. У Вас нет валидации $participant ( хотя бы intval($participant)), а так же проверки за выход из диапазона (иначе всё, что >=12 будет чаще выигрывать (зависимость только от шанса), при <0 всегда проигрывать , а при 0 вообще выдавать ошибку о незаполненности поля).

4. Проверка if ($_SERVER['REQUEST_METHOD'] == "POST") { как бы не имеет смысла особого, т.к. Вы до неё узнаёте $participant = $_POST['participant'];. Поставьте просто проверку на наличие в _POST либо сразу валидацию или хз какая у Вас задача и зачем тут она вовсе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы