| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > [PHP] отправки формы на емейл с проверкой полей |
| Автор: Yarus 15.2.2008, 14:40 | ||||||||
| Вот столкнулся с такой проблеммой: мне нужно чтоб человек заполнял форму, которая отправлялась на заданый эмейл, такой скрипт у меня есть, я его настроил под себя и он работал... он выглядит так:
тот самый СЕНД, через который проходит действие выглядит так:
Все меня устраивало, но я решил сделать проверку полей, тоже нашел скрипт:
Вобщем когда я пытаюсь их скрестить, начинаютсья баги: исчезает проверка когда в этот скрипт вставляешь поле
все нормально (этот код используеться для отображения инфы уже в пришедшем не мейл письме) баги начинаються при смене имени, например <input name="fData[1]" , в сенде это значение ".$fData[$i]."\n";} пробовал его править, но так толком и не вышло ничего, т.к в ПХП не силен... Кто чем сможет помочь? В инете скрипт проверки лежит у меня тут: http://studcard.com.ua/links а скрипт отправки формы тут: http://studcard.com.ua/reg.html спасибо |
| Автор: GeneralElectric 15.2.2008, 14:49 |
| Я бы рекомендовал делать проверку на сервере. Тем более, что в яваскрипте ты тоже, как я понимаю, не силен. |
| Автор: Yarus 15.2.2008, 14:54 |
| А как сделать на сервере?? да, я пока в этом новичек... |
| Автор: GeneralElectric 15.2.2008, 15:04 |
| Тем более, что раз у тебя не работает яваскрипт, то и обращаться надо было в соответствующий раздел. На пхп проверять точно так же. оператор условного перехода - if длина строки - функция strlen() поиск символа в строке - strpos() пустота переменной - empty() if (empty($_POST[fData][1])) $error[]="Обязательное поле "Имя" не заполнено."; Но, пожалуй, проще будет, действительно, на яваскрипте... |
| Автор: Yarus 15.2.2008, 15:09 |
| мм... сори, может тогда модератор переместит в ЯС раздел? Модератор: переместил |
| Автор: Emm 15.2.2008, 16:50 | ||
яваскрипт отключаем и отправляем пустую форму |
| Автор: Golda 15.2.2008, 17:35 |
| Хорошая практика - проверять поля и на клиенте (javascript-ом) и на сервере (php). Проверка на клиенте - для удобства пользователя и уменьшения нагрузки на сервер. Если пользователь случайно ошибся при вводе, он не должен ждать загрузки ответа от сервера только для того, чтобы узнать, что случайно ошибся в одном символе. А сервер в этом случае не будет тратить ресурсы на дополнительные нерезультативные запросы, без которых вполне может обойтись. С другой стороны, проверка на сервере тоже необходима. Во-первых, у кого-то может быть в броузере отключен javascript и проверка на клиенте не сработает. Во-вторых, помимо случайных ошибок, неправильный ввод может быть связан с поиском уязвимостей вашего скрипта. В таком случае данные вообще, скорее всего, будут отправляться не через броузер. Из соображений безопасности проверка на сервере необходима. Чтобы помочь разобраться с вашими конкретными ошибками, нужно видеть код. Именно в том виде, в котором Вы его написали, а не тот пример, с которого Вы копировали по аналогии |
| Автор: Emm 15.2.2008, 18:01 | ||
я так и делаю, и всем советую |
| Автор: Akeem 15.2.2008, 23:16 |
| Короче нужно исправить в пхп коде строку $this->Out.="if(!$this->Form.$Item.value) на $this->Out.="if($this->Form.$Item.value == "") тогда будет все работать. У тебя же текстовые поля! Кто придумал сравнивать текстовые данные как булевские? После исправления запускаешь на генерацию снова код и будет тебе радость. П.С. В яваскрипте даже кажись есть спеиальная фукция для проверки на пустоту. Так и назвается IsEmpty(val) вот она и есть булевская |
| Автор: Sardar 16.2.2008, 05:04 |
| Сразу после формы ответа идут ссылки "А здесь смотрели?". Также в поиск достаточно вбить "валидация формы". |
| Автор: Akeem 16.2.2008, 12:18 | ||||||||
| Ярус ты скачал скрипт, а разобратся в нем лень! Так вот. у тебя не работает потому что не правильно задаешь имена текстовых полей. не правильно
правильно
Для ява скрипта переменная fData[20] расценивается как массив. твой сенд можно переписать с учетом такой особености.
и все будет работать. И кстате тот скрипт не оптимален. если почитать любую книжку по яваскрипту то там найдешь пример проверки пустых полей на форме. и пример будет написан через цикл.
|
| Автор: Yarus 18.2.2008, 14:56 | ||||||
| Благодаря Акиму вышло связать 2 скрипта, но, теперь при показе ошибки что поле не заполнено, страница обновляеться, тоесть все поля очищаються, как же сделать так чтоб не очищались? вот сама страница
вот фор2.инк, на который ссылаеться
и собсно сенд:
как оно работает глянуть можно тут: http://studcard.com.ua/reg2.php ЗЫ: сори за каракули, лаги русского в Висте... |
| Автор: Sardar 18.2.2008, 15:18 |
| onsubmit="return CheckEmpty()" |
| Автор: Yarus 18.2.2008, 19:33 |
| Уря, оно заработало, НО, теперь начал неправильно работать скрипт отправки! раньше на мыло приходило письмо типа: Вам поступил заказ Номер дисконтной карточки: 3134245354 Контактное лицо: В Телефон: 2008 Адрес: Троя Желаемое время замера: 02 Примечание: Дайте мне банан Tuesday 12th of February 2008 11:50:01 PM а теперь оно так: Вам поступил заказ :В В В 1 :В В В 2 :В В В 3 :В В В 4 :В В В 5 :В В В 6 :В В В 7 :В В В 8 :В В В 9 :В В В 10 :В В В 11 :В В В 12 :В В В 13 :В В В 14 :В В В 15 :В В В 16 :В В В 17 :В В В 18 :В В В 19 :В В В 20 :В В В 21 :В В В 22 Monday 18th of February 2008 02:55:30 PM |
| Автор: Yarus 19.2.2008, 00:18 |
| Понял что плуганул... убрал В В В из сенда и вернул [ ] в fName НО, скрипт теперь не читает инфу из полей, тоесть есть фДата1 2 3... так оно и читает 1 2 3и все, а раньше было фдата[x] и оно было норм... но если сейчас писать в сенде ".$fData[$i]."\n";} вместо ".$fData.$i."\n";} то оно не отправляет и пишет ошибку скрипта... ЗЫЫ: это все-таки в разде ПХП надо) |
| Автор: Sardar 19.2.2008, 01:21 | ||
| Млин, с таким элементарным вопросом на вторую страницу... Имена input'oвь оставь fName[n], проще в PHP обращаться. На клиенте:
В форме onsubmit = "return CheckEmpty(this);". |