| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
2n 06.06.2006 23:19
Код обратной связи взят из примеров. Весь процесс выполняеться без сообщений об ошибках и даже вадаеться сообщение об отправке сообщения. Но на почту ничего не приходит. В чем может быть проблема?# метод проверяет все-ли поля формы заполнены. если все хорошо должен вернуть 1, иначе - 0
@is_ok[]
$result(^if(def $form:name && def $form:question){1}{0})
#end @is_ok[]
@main[]
...
$to[<2n@mail.ru>]
^rem{ *** от какого адреса будет отправляться письмо *** }
$from[feedback@$env:SERVER_NAME]
^if($form:action eq "done"){
^rem{ *** сюда мы попадём после внешнего редиректа когда всё уже успешно отправилось *** }
^rem{ *** тут пишем посетителю что-нить доброе за то, что он отправил нам пожелание *** }
$reply_thanks[Сообщение отправлено]
}{
}
^if(def $form:do){
^rem{ *** если что-то пришло к нам в элементе 'do' - значит форма сабмитится *** }
^if(^is_ok[]){
$now[^date::now[]]
^rem{ *** если данные валидные, то пробуем отправить письмо *** }
^try{
^mail:send[
$.from[^if(^is_email[$form:email]){$form:email}{$from}]
$.to[$to]
$.subject[Сообщение с сайта http://$env:SERVER_NAME/]
$.charset[$response:charset]
$.text[Пользователь: $form:name^#0A^if(def $form:email){E-mail: $form:email^#0A}Вопрос:^#0A$form:question^#0A^#0AСообщение отправлено: ^now.sql-string[]^#0AIP: $env:REMOTE_ADDR]
]
}{
^rem{ *** использовали try т.к. в отправке письма может возникнуть ошибка *** }
^rem{ *** и тут мы окажемся, если эта ошибка таки возникла *** }
^rem{ *** говорим парсеру, что с этой ошибкой мы разберёмся сами *** }
$exception.handled(1)
^rem{ *** ну и надо что-нить сообщить пользователю в связи с ошибкой *** }
^rem{ *** конечно хорошо-бы ещё записать что-нить в лог файл про эту ошибку *** }
<p>Сожалеем, но при отправке письма возникла неизвестная ошибка.</p>
}
^rem{ *** делаем _внешний_ редирект на себя, чтобы защититься от Reload *** }
^rem{ *** правда от Back все равно таким образом не защититься *** }
^rem{ *** для того, чтобы редирект был внешним не забываем начать адрес с http:// *** }
$response:location[http://^taint[as-is][${env:SERVER_NAME}$request:uri]^if(^request:uri.pos[?]>=0){&}{?}action=done]
}{
^rem{ *** не заполнены какие-то поля формы. ругаемся. *** }
^rem{ *** при этом не сбрасываем флаг что нужно показывать форму. *** }
^rem{ *** т.е. после ругани у нас покажется форма *** }
^rem{ *** при этому уже заполненные ранее пользователям данные не будут потеряны *** }
$err_field_empty[<b><font color="#cc0000">Не заполнены обязательные поля формы!</font></b><p>]
}
}
<form method="post" action="/about/" enctype="multipart/form-data">
^rem{ *** именно по этому элементу мы будем определять, постится форма или нет *** }
^rem{ *** если вы хотите анализировать это по элементу 'action', то вашу форму невозможно... *** }
^rem{ *** ...будет запостить с помощью нажатия клавиши enter или с помощью js события *** }
$err_field_empty
$reply_thanks
<input type="hidden" name="do" value="do" />
Ваше имя:<br />
<input type="text" name="name" value="$form:name" size="30" /><br />
E-mail:<br />
<input type="text" name="email" value="$form:email" size="30" /><br />
Ваш вопрос:<br />
<textarea name="question" cols="50" rows="8">$form:question</textarea><br />
<input type="submit" name="action" value="Отправить" />
</form>
</body></html>