parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Не работает форма обратной связи

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>