Проверка в PHP не понимается

0

Мне трудно понять PHP-код ниже.

Первая строка кода представляет собой супергрупповую переменную с элементом запроса в ней:
Я предполагаю, что эта строка просто указывает, какой метод использовался для отправки данных на сервер, в этом случае использовался POST.

Но то, что я немного расплывчато, - вторая строка.
Правильно ли я понимаю, что эта строка означает "если не указано имя, то что-то происходит"?
Это что-то вроде третьей линии, или же четвертая строка активирована.
Здесь я теряюсь.

Третья строка присваивает оператор переменной $error, а четвертая строка присваивает другой оператор переменной $name.
Но $error кажется, имеет два разных оператора, к которым он прикреплен, и я не понимаю, что $name = test_input($_POST["name"]).
Другими словами, только строка номер один мне понятна, и строка, содержащая "if NOT preg match", потому что я знаком с предварительным соответствием.

НО, о чем я также не совсем понимаю, это строка, которая появляется после "if NOT preg match".
Имеет ли значение $name = "" что если вы вводите что-либо, кроме букв или пробелов, то то, что вы только что набрали, будет удалено?

И (опять же) я смущен тем, что $error имеет два значения, связанные с ним.
Может кто-нибудь, пожалуйста, просветит меня?

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["name"])) {
        $error = "Name is required";
    } else {
        $name = test_input($_POST["name"]);

        if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
            $name = "";
            $error = "Anything that is not letters or whitespace are not allowed";
        }
    }
}
Теги:
validation

2 ответа

0

Я отредактировал ваш код (только отступы), чтобы вам было легче читать. Начните вставлять свой код таким образом, и вы не будете так же путаны:

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{
   if (empty($_POST["name"])) 
   {
      $error = "Name is required";
   }
   else
   {
      $name = test_input($_POST["name"]);
      if (!preg_match("/^[a-zA-Z ]*$/",$name)) 
      {
         $name = "";
         $error = "Anything that is not letters or whitespace are not allowed";
      }
   }
   ...
}

{ открывает блок } закрывает его. Если вы знаете, что, if и else значит, это должно быть очевидно сейчас. Если нет, перейдите к руководству PHP по Control Structures.

Но это должно быть очевидно, код внутри блока if выполняется только тогда, когда условие истинно. Код в блоке else выполняется, если условие предыдущего if не было истинным. Таким образом, $error не имеет двух значений. Его значение зависит от значений проверок в операторах if.

  • 0
    Да, я понимаю это лучше с вашим отступом. Спасибо
0

Этот код исходит из статей W3Schools. Я рекомендую вам прочитать их все. Они очень детализированы.

  1. Обработка форм PHP 5
  2. Проверка формы PHP 5
  3. PHP 5 Forms - обязательные поля (ваш код здесь)
  4. PHP 5 Forms - проверка электронной почты и URL (и здесь)
  5. PHP 5 Полный пример формы

Прочтите эти статьи, они имеют довольно хорошие объяснения.

$error присваивается только один раз, так как один находится на if а другой - на else. Это также может помочь вам.

  • 0
    Хорошо, понял, и спасибо, что указали мне на сайты.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню