Проверка формы - PullRequest
       25

Проверка формы

0 голосов
/ 29 марта 2010

Мне нужно создать форму, которая имеет много одинаковых полей, которые нужно вставить в базу данных, но у меня проблема в том, что если пользователь заполняет только одну или две строки, форма все равно будет отправьте пустые данные пустых полей вместе с одним или двумя полями, заполненными пользователем.

Как я могу проверить строки, которые не были заполнены, и исключить их из запроса? или проверьте те, которые были заполнены и добавьте их в запрос. , .

Файл thank_you.php захватит переменные $ _POST и добавит их в базу данных.

<form method="post" action="thank_you.php">
         Name: <input type="text" size="28" name="name1" />
            E-mail: <input type="text" size="28" name="email1" />
            <br />
         Name: <input type="text" size="28" name="name2" />
            E-mail: <input type="text" size="28" name="email2" />
            <br />
         Name: <input type="text" size="28" name="name3" />
            E-mail: <input type="text" size="28" name="email3" />
            <br />
         Name: <input type="text" size="28" name="name4" />
            E-mail: <input type="text" size="28" name="email4" />

            <input type="image" src="images/btn_s.jpg" />
</form>

Я предполагаю, что я мог бы использовать javascript или jQuery для этого, как мне поступить?

Заранее спасибо за помощь.

Ответы [ 4 ]

2 голосов
/ 29 марта 2010

Как уже говорили другие, плохая практика полагаться на javascript как на единственную форму проверки. Рассматривайте javascript как способ помочь вашим пользователям предоставлять действительные данные, но вы должны всегда проверять на стороне сервера. Имея это в виду, вот мое предложение:

<form method="post" action="thank_you.php">
         Name: <input type="text" size="28" name="name1" />
            E-mail: <input type="text" size="28" name="email1" />
            <br />
         Name: <input type="text" size="28" name="name2" />
            E-mail: <input type="text" size="28" name="email2" />
            <br />
         Name: <input type="text" size="28" name="name3" />
            E-mail: <input type="text" size="28" name="email3" />
            <br />
         Name: <input type="text" size="28" name="name4" />
            E-mail: <input type="text" size="28" name="email4" />

            <input type="image" src="images/btn_s.jpg" />
</form>

<?php

$num = 4; //Number of times the field is repeated

for($i = 1; $i <= $num; $i++){
   if($_POST['name'.$i] != '' && $_POST['email'.$i] !=''){ //Only process if name and email are not blank
      $thisname = $_POST['name'.$i];
      $thisemail = $_POST['email'.$i];
      //Your code here
   }
}

?>
2 голосов
/ 29 марта 2010

Хорошо использовать javascript для проверки формы, но вы не должны на это полагаться. Первое, что нужно сделать, это проверить значения в $ _POST в PHP и убедиться, что они выглядят корректно (или, по крайней мере, убедиться, что они не "").

Чтобы проверить с помощью javascript, вы должны поместить onSubmit = "..." в тег формы, который возвращает false, если данные формы неверны (что означает "не отправлять форму"). И вам, вероятно, также понадобится предупреждение, или вы можете как-то изменить страницу, чтобы указать на проблему. Я не собираюсь выписывать скрипт проверки формы для вас.

0 голосов
/ 29 марта 2010

Я не знаю точного синтаксиса PHP, но я напишу некоторый псевдокод, который должен помочь.Основная идея заключается в том, что когда вы извлекаете значения $ _POST, вам нужно создать новый хеш со значениями, которые являются приемлемыми, а затем вы можете передать этот хеш любым методам, необходимым для построения запросов, или чем-то еще.Я сделаю это, чтобы полностью удалить недопустимые значения из хэша, так что, похоже, их там никогда не было.Очевидно, что вы можете сделать это по-другому (пометить их как недействительные и т. Д.).

$cleaned_args = array();

foreach ($_POST as $key => $value) {
    if ($_POST[$key] != "" && is_valid_email($_POST[$key])) {
        $cleaned_args[$key] = $_POST[$key];
    }

make_db_call_or_whatever($cleaned_args);

, где is_valid_email - это метод, который может быть в PHP или вы должны написать.Вы можете даже обобщить выражение if в метод is_valid($_POST[arg]), если хотите, но это зависит от сложности ситуации.

Надеюсь, это поможет вам понять, как это сделать.Я думаю, что это будет проще, чем динамическое удаление входных данных с помощью JavaScript перед отправкой формы, и, как уже упоминалось, будет более безопасным, чем делать это только на стороне клиента.

0 голосов
/ 29 марта 2010

Вы можете выполнить проверку JavaScript, используя кнопку отправки для вызова функции JavaScript вместо отправки формы. Если данные соответствуют вашим критериям проверки, функция JavaScript может отправить данные. Однако не следует полностью полагаться на проверку JavaScript. Если у пользователя отключен JavaScript, его данные не будут проверяться, поэтому ваше PHP-приложение должно быть достаточно устойчивым для обработки пустых данных. Это не просто пустые данные, которые вам нужно беспокоиться, хотя. Вам необходимо проверить пользовательский ввод для мусора и очистить данные перед использованием их в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...