И сопутствующие вопросы:
Как "злоумышленник" может обойти 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, отправил
Вот приблизительно так, но проще
Сохранил у себя на компе страницу, изменил HTML код, убрал проверки на JS, отправил
Вот приблизительно так, но проще
Спустя 8 часов, 39 минут, 55 секунд (24.03.2012 - 11:42) hellspirit написал(а):
m4a1fox, inpost спасибо, а что с основным вопросом?
Спустя 4 минуты, 8 секунд (24.03.2012 - 11:46) ADiel написал(а):
Я стараюсь делать формы, которые будут работать и без js. Валидация на стороне клиента только визуальная, на стороне сервера так же происходит валидация.
Теперь когда все работает и форма отправляется, можно перехватывать submit и избегать перезагрузки страницы
Таким образом даже noscript клиенты будут работать
Теперь когда все работает и форма отправляется, можно перехватывать submit и избегать перезагрузки страницы
Таким образом даже noscript клиенты будут работать
Спустя 1 час, 41 минута, 56 секунд (24.03.2012 - 13:28) hellspirit написал(а):
Нет, у меня именно задача сделать форму в т.ч и с js проверкой. Как всетаки правильно проверку php делать при асинхронном сохранении данных?
inpost, ну вот сохранил он форму, изменил HTML код, убрал проверки на JS, отправил... а куда отправил, если форма отправляется в приватный метод класса, даже если он узнал название класса и метод, куда он ее отправит?
inpost, ну вот сохранил он форму, изменил HTML код, убрал проверки на JS, отправил... а куда отправил, если форма отправляется в приватный метод класса, даже если он узнал название класса и метод, куда он ее отправит?
Спустя 1 минута, 45 секунд (24.03.2012 - 13:30) ADiel написал(а):
Что за бред?
Асинхронная отправка формы ни чем со стороны сервера не отличается от обычной отправки. Приходит все тот же POST
Какие классы?
Асинхронная отправка формы ни чем со стороны сервера не отличается от обычной отправки. Приходит все тот же 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 ....
json
Я делаю так:
{"fieldname":["Поле не заполнено","Email не валидный"],"fieldname2":["Логин уже занят"]}
Потом просто прохожусь по массиву и добавляю ошибки к присланным полям.
Естественно передаю status. Если status != 1 то и обрабатываю ошибки
Создаешь массив, а потом echo json_encode ....
Спустя 14 минут, 39 секунд (24.03.2012 - 14:06) hellspirit написал(а):
Ну вообщем получается я делаю тоже самое только без json'a
Получается всерано писать два обработчика и на php и на js.
Спасибо
Получается всерано писать два обработчика и на php и на js.
Спасибо