Проверить форму с помощью PHP и JavaScript? - PullRequest
2 голосов
/ 11 мая 2010

Можно ли проверить форму с помощью PHP и JavaScript ? В настоящее время я могу сделать оба, используя мои существующие form, но только на индивидуальной основе.

Моя общая цель такова:

  1. Подтвердите форму, используя JavaScript на стороне клиента и немедленно сообщайте пользователю об ошибках.
  2. Если проверка JavaScript пройдена, создается флаг, а затем может запускаться сценарий PHP .

При выполнении проверки JavaScript я использую следующий код в теге form:

<form id="Enroll_Form"  action="review.php" method="post" name="Enroll_Form" onsubmit="return Enroll_Form_Validator(this)" language="javascript">

Если я хочу обработать проверку PHP , я вынужден переименовать действие в файл PHP_SELF (или просто имя файла, которое я использую) и удалить функцию «onsubmit» .

Ответы [ 4 ]

3 голосов
/ 11 мая 2010

ОБНОВЛЕНО в ответ на комментарии

Прежде всего, javascript не может быть безопасным валидатором по понятным причинам! это может быть причудливый способ отображения предупреждений и уведомлений, но это просто сахар!

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

Этот простой скрипт - всего лишь демонстрация того, как вы можете создать умный валидатор, но, конечно, это просто подтверждение концепции!


DEMO: http://jsbin.com/aceze/29

$(function() {
    $('#myform').submit(function() {
        var error = false; // flag

        $('.email,.digits,.empty,.some').each(function() {

            var check = this.className;

            if (check == 'empty') if (!checkEmpty(this.value)) error = true;

            if (check == 'digits') if (!checkDigits(this.value)) error = true;

            if (check == 'email') if (!checkEmail(this.value)) error = true;

            if (check == 'some') if (!checkSome(this.value)) error = true;

            if (error) {
                $(this).css('border', '1px solid red');
            } else {
                $(this).css('border', '1px solid green');
            }
        });

        if (error) {
            return false;
        }
    });
});

Затем, что касается действия <form>, вам не нужно указывать путь к странице php, но вы должны использовать AJAX, чтобы сделать POST ИЛИ , просто оставив review.php где см. эти фрагменты ниже:

  // FIRST SNIPPET action="#"
           if ( error == false ) {
           //if all is ok give our form it's php
           $(this).attr('action','review.php');
           } else {
           // error  
           // place false here so the form don't submit if validation fail!
           return false;
         }

  // SECOND SNIPPET action="review.php"

          if ( error == true ) {
        // form submit only if validation pass
           return false;
           } 

  // THIRD SNIPPET action="#" AJAX

    if ( error == false ) {
           // success
           } else {
           // error  

         }
     // this false prevent the form submit in anycase, cause we use AJAX
     return false;
0 голосов
/ 11 мая 2010

Я не пробовал это, но с макушки головы; вам не нужен language="JavaScript" в вашей форме, чтобы использовать обработчик событий onsumbit. Если это событие оценивается как true, то форма будет отправлена ​​как обычно (поэтому PHP увидит ее и сможет выполнить ее проверку).

Приятно видеть, что вы не полагаетесь на проверку на стороне клиента. Тривиально отключить JavaScript в браузере. Нужно всегда проверять свои данные.

0 голосов
/ 11 мая 2010

Не слишком полагайтесь на JS для такого рода вещей. Да, вы можете проверить, чтобы предотвратить ошибки пользователей, но кто-то может легко создать .html и сделать

<form action="http://yoursite.com/review.php" method="post">
    <input type="submit">
</form>

И обойти любые проверки JS, которые у вас есть. Подтвердите в PHP, как если бы у вас не было никакой проверки JS.

0 голосов
/ 11 мая 2010

Я действительно не вижу, в чем проблема, если ваше действие onsubmit возвращает false в случае не подтвержденной (javascript) формы, форма просто не отправляется , если JavaScript включен.

Как только форма будет отправлена, php сможет делать все, что захочет, проверять, возвращать ошибки и т. Д.

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