[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Форма и асинхронные запросы
hellspirit
Как известно, доверять формам не стоит. И соответственно динамичная проверка форма явой не надежна и ее нужно дублировать в php. Но что делать если форма отпраляется асинхронно, да и еще с ипользованием jquery.form?

И сопутствующие вопросы:
Как "злоумышленник" может обойти js верификацию? И как сделать проверка включенности js у клиента? (аля как в контакте сделано - при отключеном js - выдается соответствующее сообщение а сам сайт не грузится)

Приведу пример того что я сделал:

/*отправка данных из формы*/
var options = {
url: "service.php?act=a_saveform",
success: function(data) {
/*один из возвратов из php*/
if (data == "date"){
$("#error_date2").html("Ошибка обработки даты").fadeIn(200);
}
/*успешное сохранение в бд*/
if (data == 1){

$("#createAct_window").fadeOut(200);
message("Мероприятие успешно добавлено");
}
/*ошибка сохранения в бд*/
if (data == 0){

$("#createAct_window").fadeOut(200);
message("Произошла ошибка, обратитесь к администратору");
}
}
}
;
$("#saveform").ajaxForm(options);

А теперь приведу фрагмент самого метода a_saveform в файле service.php

/*проверка дат - если ошибка то вывести date - а в скрипте(см выше) ожидает условие - если date то вывести див с сообщением об ошибке*/
if ($date1 > $date2){
echo "date";
exit;
}
//точно также и для удачного/неудачного результата записи в бд
...
$result = $connect->query($query);
if ($result){
echo true;
}else{
echo false;
}


Все это безобразие работает, но напоминает говнокодинг - помогайте, как правильно нужно?



Спустя 16 минут, 5 секунд (24.03.2012 - 00:41) m4a1fox написал(а):
hellspirit
Ну для этого
Цитата
И как сделать проверка включенности js у клиента

<noscript> вам поможет!

Спустя 2 часа, 20 минут, 47 секунд (24.03.2012 - 03:02) inpost написал(а):
js верификацию?
Сохранил у себя на компе страницу, изменил HTML код, убрал проверки на JS, отправил smile.gif
Вот приблизительно так, но проще smile.gif

Спустя 8 часов, 39 минут, 55 секунд (24.03.2012 - 11:42) hellspirit написал(а):
m4a1fox, inpost спасибо, а что с основным вопросом?

Спустя 4 минуты, 8 секунд (24.03.2012 - 11:46) ADiel написал(а):
Я стараюсь делать формы, которые будут работать и без js. Валидация на стороне клиента только визуальная, на стороне сервера так же происходит валидация.
Теперь когда все работает и форма отправляется, можно перехватывать submit и избегать перезагрузки страницы smile.gif
Таким образом даже noscript клиенты будут работать

Спустя 1 час, 41 минута, 56 секунд (24.03.2012 - 13:28) hellspirit написал(а):
Нет, у меня именно задача сделать форму в т.ч и с js проверкой. Как всетаки правильно проверку php делать при асинхронном сохранении данных?

inpost, ну вот сохранил он форму, изменил HTML код, убрал проверки на JS, отправил... а куда отправил, если форма отправляется в приватный метод класса, даже если он узнал название класса и метод, куда он ее отправит?


Спустя 1 минута, 45 секунд (24.03.2012 - 13:30) ADiel написал(а):
Что за бред?
Асинхронная отправка формы ни чем со стороны сервера не отличается от обычной отправки. Приходит все тот же POST
Какие классы?

Спустя 19 минут, 42 секунды (24.03.2012 - 13:49) hellspirit написал(а):
Цитата
Асинхронная отправка формы ни чем со стороны сервера не отличается от обычной отправки. Приходит все тот же POST


Ну да конечно. В форме method="" не указан, говорю же, что использую jq.form
Я впринципе и не спорю, и не отказываюсь от проверок, я спрашиваю как правильно передать сообщения об ошибках из php скрипта в форму, которая вызвана асинхронно и отправляется асинхронно!

Спустя 2 минуты, 12 секунд (24.03.2012 - 13:51) ADiel написал(а):
Вот теперь понятно сказал.
json
Я делаю так:
{"fieldname":["Поле не заполнено","Email не валидный"],"fieldname2":["Логин уже занят"]}

Потом просто прохожусь по массиву и добавляю ошибки к присланным полям.
Естественно передаю status. Если status != 1 то и обрабатываю ошибки

Создаешь массив, а потом echo json_encode ....

Спустя 14 минут, 39 секунд (24.03.2012 - 14:06) hellspirit написал(а):
Ну вообщем получается я делаю тоже самое только без json'a
Получается всерано писать два обработчика и на php и на js.
Спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.