Не много подправив синтаксические ошибки код сейчас выглядит вот так:
CODE ( text):
скопировать код в буфер обмена
<?php if(isset($_GET["mail"])) echo 'Ваше письмо отправлено...'; session_start(); $admin = 'admin email'; if ( isset( $_POST['sendMail'] ) ) { $name = substr( $_POST['name'], 0, 64 ); $email = substr( $_POST['email'], 0, 64 ); $subject = substr( $_POST['subject'], 0, 64 ); $message = substr( $_POST['message'], 0, 250 ); } // обработка ошибок $error = ''; if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>'; if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>'; if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>'; if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>'; if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) ) $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>'; if ( !empty( $error ) ) { $_SESSION['sendMailForm']['error'] = '<p>При заполнении формы были допущены ошибки: </p><ul>'.$error.'</ul>'; $_SESSION['sendMailForm']['name'] = $name; $_SESSION['sendMailForm']['email'] = $email; $_SESSION['sendMailForm']['subject'] = $subject; $_SESSION['sendMailForm']['message'] = $message; header( 'Location: '.$_SERVER['PHP_SELF'] ); // перенаправление в корневую страницу если есть ошибки die(); } $body = "АВТОР:".$name." E-MAIL".$email." ТЕМА:".$subject." СООБЩЕНИЕ:".$message; if ( mail($admin, "Заполнена форма на сайте", $body) ){ $_SESSION['success'] = true; header( 'Location: '.$_SERVER['PHP_SELF'].'?mail=1'); } else { $_SESSION['success'] = false; header( 'Location: '.$_SERVER['PHP_SELF'] ); die(); } ?>
Соответственно проблемы сохранились те же, а именно:
1) проблема с кодировкой в приходящих с заполненной формы писем;
2) пользователь получает белый экран вместо сообщения ваше письмо успешно отправлено.
нужен help ;)
|