Почему переменная все еще проходит (проверка имени)? * НАЧИНАЮЩИЙ * - PullRequest
0 голосов
/ 17 июня 2020

Я новичок в PHP, и у меня возникли проблемы с проверкой ввода. Сообщение появляется, однако переменная (которая должна быть проверена) проходит. Например, если введено 120932 , будет сообщение об ошибке, но оно также пройдет через любую помощь, спасибо! :)

<?php
  $fname="";
  $fnameERR="";
  if ($_SERVER["REQUEST_METHOD"] == "POST"){
    if (empty($_POST['fname'])){
      $fnameERR =  "Your name is required";
    } else {
      $fname = test_input($_POST['fname']);
    }
    if (ctype_alpha(str_replace("", "", $fname)) == false){
      $fnameERR = "Only letters are allowed";
    } else {
      $fname = test_input($_POST['fname']);
    }
  }

  function test_input($data){
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
  }
  if ($_POST['fname']){
    echo "Your name is ".$fname;
  }
?>

1 Ответ

0 голосов
/ 17 июня 2020

Это происходит, потому что вы не проверили, была ли ошибка перед тем, как повторить ее. Измените последний оператор if следующим образом:

if ($_POST['fname'] && !$fnameERR){
    echo "Your name is ".$fname;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...