(web) проверка полей формы
можно мутить на скрипте, но если для серьезной конторы делаешь - делай на серваке с полно ВАЛИДАЦИЕЙ, ибо любую форму можно поттелать
1) представь, что ты на модеме. Тебе приятно будет ждать результата отправленной формы, чтоб узнать, что одно поле не так заполнено?
2) представь, что ты не на модеме, но у тебя за каким-то кером отключен джаваскрипт. Приятно будет увидеть, что форма не отправляется из-за этого?
Вот и выбирай - по полминуты ждать, но гарантированно для всех и 99% народу будут материться, какого хрена не сделано на джаваскрипт и все так долго, или забить на 1% далпаепов без джавасрипта или с говнобраузерами, зато сделать прикольно.
Никто не мешает сделать проверку и там, и там. Хотя и двойная работа, конечно.
2) представь, что ты не на модеме, но у тебя за каким-то кером отключен джаваскрипт. Приятно будет увидеть, что форма не отправляется из-за этого?
Вот и выбирай - по полминуты ждать, но гарантированно для всех и 99% народу будут материться, какого хрена не сделано на джаваскрипт и все так долго, или забить на 1% далпаепов без джавасрипта или с говнобраузерами, зато сделать прикольно.
Никто не мешает сделать проверку и там, и там. Хотя и двойная работа, конечно.
черт, непонятно


ну мне тоже кажется что лучше уж одной страничкой обойтись а не генерить херову тучу новых, да и perl вроде как хоть знаю, но мне кажется что javascript както лаконичнее будет, только блин я его не знаю
<form ... onsubmit="return validateForm">
....
</form>
function validateForm {
...
return false // если всё плохо
return true // всё хорошо, отправляем
}а если false, и нужно чтоб около пустых полей вылезло предупреждение?
Ну, это ты уж сам как-нибудь
но если для серьезной конторы делаешьда нее так по мелочи, просто надо чтоб не пропускали по возможности
много букав - смысла ноль
а... ну так это другое дело. Я думал, ты идеологически спрашиваешь, как. А тут - это уж от потребностей зависит. Какая проверка нужна, такую функцию и пиши. Может, тебе проверку по регэкспам надо делать, а не просто на заполненность. Универсального рецепта тут нет
кстати немного отвлеченный вопрос, вот к примеру есть несколько форм на нескольких страницах которые отправляют данные на сервак, там сидит скрипти естественно он запускается каждый раз заново. Если нужно сохранить все данные со всех форм и не прибегат к БД, можно ли тупо сказать скрипту "пиши в файл прям здесь", то есть разрешено ли обычно на серваках скриптам создавать и писать файлы?
обычно - да, но всё зависит от юзера, под которым запускается скрипт, и прав на папку, куда писать
но всё зависит от юзера, под которым запускается скриптв смысле? если я тыкаю на браузере сабмит форм, то какой юзер запускает скрипт?
А что значит обычно? Как настроишь - так и будет.
спроси у админа своего сервера
При этом надо учитывать, что
В любом случае, данные надо ВСЕГДА проверять на сервере, потому что подделать форму, как выше уже сказали, раз плюнуть. А вот вешать ли дополнительно javascript для красоты, удобства начальной проверки и диалапщиков - это уже второй вопрос.
return falseпроигнорируется, например, тем ИЕ, который на коммуникаторах, и форма будет всё равно отослана. И еще куча разных тонкостей.
В любом случае, данные надо ВСЕГДА проверять на сервере, потому что подделать форму, как выше уже сказали, раз плюнуть. А вот вешать ли дополнительно javascript для красоты, удобства начальной проверки и диалапщиков - это уже второй вопрос.
Ну, то, что всё надо проверять на сервере — это обсуждению вообще не подлежит и считается очевидным =)
Вообще у прогрессивной части человечества в ходу различные валидационные фреймворки, которые генерят большую часть client/server-side валидейшен кода автоматом по заданным правилам.
Если таких формочек предвидится много - возможно имеет смысл взботнуть. Правда, они наиболее удобны вкупе с каким-нибудь MVC фреймворком, в stand-alone возможно это не настолько удобно будет.
Если таких формочек предвидится много - возможно имеет смысл взботнуть. Правда, они наиболее удобны вкупе с каким-нибудь MVC фреймворком, в stand-alone возможно это не настолько удобно будет.
как обычно принято это мутить? на серваке или на клиенте?и так, и так
на клиента - ради удобства, на сервере - ради безопасности
на клиента - ради удобства, на сервере - ради безопасностиага и тема сразу писать в лог ворнинг об атаке, если серверная проверка выявляет ошибку
При этом надо учитывать, чточета игнорируется просто тупо скопировал такой вот скрипт из какойто статьи
code:return false
проигнорируется,
<script language="javascript">
<!--
function sendform {
if (document.forms[0].name.value == "") {
alert('Пожалуйста, введите Ваше имя');
document.mailform.name.focus;
return false
}
if (document.forms[0].email.value == "") {
alert('Пожалуйста, введите электронный адрес');
document.mailform.email.focus;
return false
}
return true;
}
//-->
<form action="/cgi-bin/formmail.cgi" onsubmit="return sendform;">
Ваше имя: *<input type="text" name="name"><br>
Электронный адрес: *<input type="text" name="email"><br>
Тема сообщения: <input type="text" name="subject"><br>
Сообщение: <textarea name="message"></textarea><br><br>
<input type="submit" value="Отправить">
<input type="reset" value="Очистить">
</form>
алерт выходит но после нажатия ok он походу пытается засабмитить
в то же время например рабочие странички типа регистрация на мэйлру вроде так же устроенны, и там все работает норммально выходит алерт и страница отсается. Браузер Мозилла. в чем тут проблема не подскажете?ну, во-первых, скрипт надо в правильные теги запихать:
во-вторых, ты в коде обращаешься к какой-то mailform, а в документе про нее ничего не сказано, возникает ошибка. можно написать своей форме name="mailform" и возрадоваться. это один способ. есть другие, например, присвоить полям id и обращаться к ним по id, а не через document.mailform.тра-ляля
не знаю, почему, но мне это больше нравится
<script type="text/javascript">
</script>
во-вторых, ты в коде обращаешься к какой-то mailform, а в документе про нее ничего не сказано, возникает ошибка. можно написать своей форме name="mailform" и возрадоваться. это один способ. есть другие, например, присвоить полям id и обращаться к ним по id, а не через document.mailform.тра-ляля
не знаю, почему, но мне это больше нравится
ну вот посмотри я просот написал чот функция присылает false
onsubmit="sendform"
это неправильно
правильно так:
onsubmit="return sendform"
это неправильно
правильно так:
onsubmit="return sendform"
ой блин работает , спасибо большое!
Оставить комментарий
Sasha21
когда форма не правильно заполнена , как мутят проверку с последующими "Такое такое поле не заполнено!" ? как обычно принято это мутить? на серваке или на клиенте?вдруг кто знает ссылку для "руководства для чайников по JavaScript по этому вопросу"