Показать сообщение отдельно
  #40 (permalink)  
Старый 26.04.2015, 18:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

name, email, subject, ... это и есть ключи массива, под которыми значения соответствующих полей формы и будут переданы на север. Говоря о ключе, я имел ввиду не использовать таких явных имен у полей формы как name, email, pass и т.д.

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

Сервер не может принять одновременно две формы. Если клиент имеет на страницах не более одной формы, то все упрощается.

При каждом запросе формы и ее выводе пользователю сервер генерирует случайный хеш, который хранит или в сессии (сессионный ключ), или в базе (время работы ключа не зависит от жизни сессии), который является ключом для имени определяющего источник запроса. Источник запроса в свою очередь определяет что за форма пришла, как должны быть обработаны ее поля, с какой таблицей базы данных они связаны.

Например, имена ваших полей выглядели бы так:
<form method="post" name="cr-us" action="?mod=users&opt=create-user" id="ajaxform"> <br />
 <input type="text" size="32" maxlength="36" name="612a15ca20bb91356d9433c9195d4d5f[0]" placeholder="Ваше имя" val=""><br />
 <input type="text" size="32" maxlength="36" name="612a15ca20bb91356d9433c9195d4d5f[1]" placeholder="Ваш email" val=""><br />
 <input type="text" size="32" maxlength="36" name="612a15ca20bb91356d9433c9195d4d5f[2]" placeholder="Тема" val=""> <br />
 <textarea cols="25" rows="10" name="612a15ca20bb91356d9433c9195d4d5f[3]" placeholder="Сообщение.." val=""></textarea> <br />
 <input type="submit" value="GO GO GO"/>
</form>

Если такое именование преследует скрыть истинное назначение полей формы, то тексты типа "Ваш email" добавляются посредством сценария, отказываются от разных новых типов полей ну и т.д. Хотя бот боту рознь. Но в данном случае такую форму можно принять только в течении жизни сессии (при хранении ключа в сессии), после чего такой формы для сервера просто не будет существовать. При успешном приеме данных текущий ключ также удаляется.

Сервер получая форму, по ключу узнает имя источника запроса, соответственно обрабатывая данные. Соответствие индексов полей формы именам полей SQL-таблицы хранится на сервере под именем источника запроса, как их ключом.
Ответить с цитированием