блин да я не против проверки на стороне сервера - я просто говорю что в данном решении все запросы обрабатываются сервером - которые можно было отбросить сразу на корню .. скажем при отсутствии ввода данных вообше..
Может я конечно делаю не совсем правильно, но я сначала делаю проверку с помощью js на заполнение форм (что-бы было удобно пользователю), ну и потом уже на стороне сервера делаю проверку на заполнение обязательных форм..
есть такой html5-атрибут requre='true'; Делает поля обязательными для заполнения, поручая браузеру самому за этим проследить. В остальном все верно, проверка у клиента и на сервере - не взаимоисключающие вещи. Нужно и то и то.
Колхоз. В городе делают так: повесив на каждое поле событие потери фокуса проверяют и, если все флаги подняты - только тогда кпонка Submit становится активной. А чтобы юзер видел где он был но накосячил - там обведено красным. А где ввел и угадал - зеленым. А где не трогал - белым по умолчанию. Это называется графический интерфейс. Можно даже приборную панель реализовать - зациклить проверку, скажем раз в сек - чтобы не чухаться с разнообразным поведением браузеров в отношении такого рода событий. Кроме того при построении формы JS передаются и все эти вопли насчет "ой, вы телефон забыли!"
Мой вам совет, сначала делайте все на сервере, убедитесь, что не придет "ерунда", а потом вешайте украшения js.
Если пришла "ерунда" после проверок в агенте - значит юзвер слишком умный и появляется моральное право послать его на 3 цифры: 404. Добавлено спустя 2 минуты 16 секунд: В этом и заключается суть "украшений" которые существенно упрощают обработку запроса. Поскольку уже не надо вошкаться с вежливыми сообщениями и сохранениями данных в сесиии, восстановления данным и прочей тряхомудией. Пришло - затипировал, неправильно - нах. Другими словами все проверки перемещаются во времени - из будущего в прошлое. Снабдив ява-скрипт всеми необходимыми данными для проверки вы ее уже сделали, поскольку нормально яву не обойти. Для ненормальных же предусмотрено место на параше. Добавлено спустя 8 минут 22 секунды: Вот оно, читатель не понимает зачем это все делается и готов делать два раза, и думает а зачем два раза если можно один раз: Это не два раза. Это ровно 1 раз когда вы проверяете нормальность данных в агенте, и 1 раз на сервере когда проверяете нормальность пользователя. Нормальность данных и нормальность пользователя - вещи разные. Проверок 2, но каждая вещь проверяется единожды. Добавлено спустя 2 минуты 23 секунды: И по разному.
Извините - не осилил. Как это "проверять нормальность пользователя"? Я бы хотел уметь так делать, научи или дай ссылку, пожалуйста! Конкретно - в форме три поля: имя, номер телефона, город. Что надо проверить в агенте, а что на сервере?
deblogger, не мелите ерунды, js лишь остановит исполнение запроса, дабы не дрочить сервак, "но некоторые думают, что js-хватает, а php лишь запишет в базу, после запроса". Школьные годы............ Вообще js осужден быть дыркой, он ей останется всегда. Пользователь может исполнить любой скрипт и отправить вам его, следовательно от суда кара сервера настигает, внезапно. Не нужно минуя сервер делать проверку js, так делают многие (в основном новички или <слово>). Для правильного использования js прежде чем отправлять запросы, убедитесь в том, что у вас все на сервере проверено корректно. JS хитрый и не нужно ему доверять весь сервер.=( Можно сделать интуитивнее, получать лишь ответ от сервера при отправки и сделать валидацию на заполнение без громадных проверок. А если что-то не корректно, то в окошке с сообщением выводить ответ от сервера... Да и вообще не делайте оторванных файлов по которым можно пройти по адресу...
Короче, не дошло. Потому что понимать не хотите. Господи, да что вы вообще можете проверить в агенте? Написать конкретный скрипт для конкретной формы для конкретной страницы - это? Ну хотя бы так. Значит материально объясняю. Пользователь не может нажать кнопку субмить пока не введет все требуемые данные правильно. Это реализуемо? - Это реализуемо как два пальца об асфальт. Чтобы пользователь не ломал голову над серой кнопкой отправки формы ему даются цветные подсказки и даже ткстом в баллонах. Это реализуемо? Элементарно. Таким образом пользователь _не_ может отгрузить неправильные данные. Пользователь может отгрузить только правильные данные которые зажгут кнопку type="submit". Правильно? Правильно. Риторические вопросы продолжаются. Что будет означать приход неправильных данных на сервер? Варианты: 1) ява-скрипт глючит; 2) что-то отвалилось по дороге; 3) php-скрипт глючит; 4) пользователь нарисовал свою собственную форму и минуя все проверки отгрузил ее содержание. Ваш ответ? Берете подсказку зала или звонок в правительство? Драматическая развязка: правильный ответ номер 4. Из которого вытекает что неправильные данные пришедшие после надежной проверки в агенте - фейк. И, значит, юзер - ненормальный. Ну, типа кулхацкер. Которого можно и нужно послать нах. А не ворачивать ему страницу ввода с восстановлением всех данных из сессии или куков, типа, не соизволите ли милостивый государь захерачить нам еще одну самопальную форму. Объяснил? Добавлено спустя 4 минуты 22 секунды: Само собой в его сессии вести подсчет попыток. Более 3-х - имейл в ФСБ. Добавлено спустя 4 минуты 17 секунд: Какова стандартная процедура? п1. Данные = сессия, поля = данный. Юзер вводит, жмет отправить. Проверка. Не прошла - к п. 1 через пагу сообщения об ошибке. Так вот JS избавляет от такого геморроя. В чем и смысл. Проверка делается 1 раз, затем проверяется то что вышло с проверки. Второй эшелон имеет другой смысл. Ошибка во втором эшелоне означает попытку добиться взаимности незаконным путем.
Без первого эшелона вы не можете знать заранее - ошибся юзер при вводе формы или злонамеренно пытается найти дырки в скрипте. С первым эшелоном вы можете знать ошибся юзер при вводе или злонамеренно пытается найти дырки в скрипте. ЖС проверка, еще метафору придумал - типа зеленого сигнала светофора. Законопослушные пешеходы идут на зеленый. Введя этот эшелон вы получаете возможность отделить овец от козлищ которые норовят на красный. Сколько раз там юзер ошибся - вас уже не колебет, хоть стопицот раз. Интерфейс становится приятным, информативным, интерактивным. Добавлено спустя 1 минуту 11 секунд: Это его личные анальные проблемы. Впрочем, если на ваших сайтах таких большинство, вам конечно надо делать по-старинке.
1) deblogger, ты откинулся с кичи недавно чтоли? Без обид, но по стилю написания создается впечатление. 2) Советую раскурить js-независимую html5-валидацию, которая будет работать и при отключенном js. 3) Проверка на стороне клиента - для клиента, чтобы ему было удобнее и нагляднее, так и только так. 4) На сервере же делаем проверку для сервера. Чтобы не гадать обо всех возможных "если", а просто взять и удостовериться, что все у нас как надо. Однозначно, универсально, безапеляционно. Ну и, если ajax-ом пробросили данные, можно вернуть красивый матюг, типа "Ваш IP сохранен, ваши данные отправлены в отдел "К", не выходите из дома в течение суток, за вами приедут. Всего наилучшего, bastard.", либо показать ошибку что угодно. Но на сервере проверять данные необходимо.