(web) проверка полей формы

Sasha21

когда форма не правильно заполнена , как мутят проверку с последующими "Такое такое поле не заполнено!" ? как обычно принято это мутить? на серваке или на клиенте?
вдруг кто знает ссылку для "руководства для чайников по JavaScript по этому вопросу"

Alexander08

можно мутить на скрипте, но если для серьезной конторы делаешь - делай на серваке с полно ВАЛИДАЦИЕЙ, ибо любую форму можно поттелать

uncle17

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

Sasha21

черт, непонятно :crazy: :confused:

Sasha21

ну мне тоже кажется что лучше уж одной страничкой обойтись а не генерить херову тучу новых, да и perl вроде как хоть знаю, но мне кажется что javascript както лаконичнее будет, только блин я его не знаю

artimon

<form ... onsubmit="return validateForm">
....
</form>

function validateForm {
...
return false // если всё плохо
return true // всё хорошо, отправляем
}

Sasha21

а если false, и нужно чтоб около пустых полей вылезло предупреждение?

artimon

Ну, это ты уж сам как-нибудь

Sasha21

но если для серьезной конторы делаешь
да нее так по мелочи, просто надо чтоб не пропускали по возможности

Alexander08

много букав - смысла ноль

uncle17

а... ну так это другое дело. Я думал, ты идеологически спрашиваешь, как. А тут - это уж от потребностей зависит. Какая проверка нужна, такую функцию и пиши. Может, тебе проверку по регэкспам надо делать, а не просто на заполненность. Универсального рецепта тут нет

Sasha21

кстати немного отвлеченный вопрос, вот к примеру есть несколько форм на нескольких страницах которые отправляют данные на сервак, там сидит скрипти естественно он запускается каждый раз заново. Если нужно сохранить все данные со всех форм и не прибегат к БД, можно ли тупо сказать скрипту "пиши в файл прям здесь", то есть разрешено ли обычно на серваках скриптам создавать и писать файлы?

uncle17

обычно - да, но всё зависит от юзера, под которым запускается скрипт, и прав на папку, куда писать

Sasha21

но всё зависит от юзера, под которым запускается скрипт
в смысле? если я тыкаю на браузере сабмит форм, то какой юзер запускает скрипт?

dangerr

А что значит обычно? Как настроишь - так и будет.

uncle17

спроси у админа своего сервера

doublemother

При этом надо учитывать, что
return false
проигнорируется, например, тем ИЕ, который на коммуникаторах, и форма будет всё равно отослана. И еще куча разных тонкостей.
В любом случае, данные надо ВСЕГДА проверять на сервере, потому что подделать форму, как выше уже сказали, раз плюнуть. А вот вешать ли дополнительно javascript для красоты, удобства начальной проверки и диалапщиков - это уже второй вопрос.

artimon

Ну, то, что всё надо проверять на сервере — это обсуждению вообще не подлежит и считается очевидным =)

katrin2201

Вообще у прогрессивной части человечества в ходу различные валидационные фреймворки, которые генерят большую часть client/server-side валидейшен кода автоматом по заданным правилам.
Если таких формочек предвидится много - возможно имеет смысл взботнуть. Правда, они наиболее удобны вкупе с каким-нибудь MVC фреймворком, в stand-alone возможно это не настолько удобно будет.

Dasar

как обычно принято это мутить? на серваке или на клиенте?
и так, и так
на клиента - ради удобства, на сервере - ради безопасности

FRider

на клиента - ради удобства, на сервере - ради безопасности
ага и тема сразу писать в лог ворнинг об атаке, если серверная проверка выявляет ошибку

Sasha21

При этом надо учитывать, что
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 он походу пытается засабмитить :confused: в то же время например рабочие странички типа регистрация на мэйлру вроде так же устроенны, и там все работает норммально выходит алерт и страница отсается. Браузер Мозилла. в чем тут проблема не подскажете?

Bibi

ну, во-первых, скрипт надо в правильные теги запихать:

<script type="text/javascript">
</script>

во-вторых, ты в коде обращаешься к какой-то mailform, а в документе про нее ничего не сказано, возникает ошибка. можно написать своей форме name="mailform" и возрадоваться. это один способ. есть другие, например, присвоить полям id и обращаться к ним по id, а не через document.mailform.тра-ляля
не знаю, почему, но мне это больше нравится

Sasha21

ну вот посмотри я просот написал чот функция присылает false

Bibi

onsubmit="sendform"
это неправильно
правильно так:
onsubmit="return sendform"

Sasha21

ой блин работает , спасибо большое!
Оставить комментарий
Имя или ник:
Комментарий: