|
|
|
|
|
для: sim5
(16.12.2007 в 13:25)
| | А ведь работает. Нашёл я у себя ошибку. Я пытался вывести сообщение сразу после переадресации...
if (!empty($action)) {
.....
if (!empty($_SESSION['send'])) echo '<hr><p>Спасибо! Ваше сообщение отправлено.</p><hr>';
unset($_SESSION['send']);
if (!empty($error)) {
print "<hr><P>Во время отправки сообщения произошли следующие ошибки: </P>\n";
print "<UL class=list type=1>\n";
print $error;
print "</UL><hr>\n";
}
|
Вот в чём ошибка. Большое спасибо, что помогли. | |
|
|
|
|
|
|
|
для: relikt
(16.12.2007 в 13:21)
| | Ну значит все должно работать. Вот, все ваше (с изменениями небольшими), работает. | |
|
|
|
|
|
|
|
для: sim5
(16.12.2007 в 12:50)
| | Да создаётся. | |
|
|
|
|
|
|
|
для: relikt
(16.12.2007 в 12:48)
| | Ну если так, то проверьте - у вас сессия работает, создается ли она? | |
|
|
|
|
|
|
|
для: sim5
(16.12.2007 в 10:56)
| | Да всё так, я просто переименовал файл для удобства. По названиям всё нормально. Файл называется index.php и перенаправление я делаю на него. Но от этого ничего не меняется, я убрал из хидера переменную, а сообщения по прежнему нет. Перенаправление ведь происходит и переменную я устанавливаю сразу после отправки письма. | |
|
|
|
|
|
|
|
для: relikt
(16.12.2007 в 10:39)
| |
$_SESSION['send'] = 1;
header('location: index.php');
|
Не надо в хидере send передавать. Но, перенаправление теперь у вас идет на index.php, а проверка $_SESSION['send'] и вывод сообщения в этом файле, и если мне память не изменяет, он у вас называется mail.php - конечно никакаго сообщения вы не увидите. | |
|
|
|
|
|
|
|
для: sim5
(15.12.2007 в 23:26)
| | У меня получилось так.
<?
session_start();
......
if(mail($valmail, $thm, $all, $headers))
{
$_SESSION['send'] = 1;
header('location: index.php?send=1');
}
//так же как и вывод ошибок
if (!empty($_SESSION['send'])) echo "<hr><p>Спасибо! Ваше сообщение отправлено.</p><hr>";
unset($_SESSION['send']);
?>
|
Но сообщения я так и не увидел. Ни разу. | |
|
|
|
|
|
|
|
для: Unkind
(15.12.2007 в 23:56)
| | Вообще-то да, ведь дальше идет проверка значений. | |
|
|
|
|
|
|
|
для: sim5
(15.12.2007 в 23:26)
| | Лучше бы заменить "!empty" на "isset", а то как-то смысл теряется. | |
|
|
|
|
|
|
|
для: relikt
(15.12.2007 в 23:04)
| | Нет, вы не поняли. Если использовать сессию, то для того, чтобы избавиться от вывода сообщения благодарности. Значит в хидере не надо пердавать переменную send. Стартуете сессию, а переменную $_SESSION['send'] устанавливаете после отправки почты, потом делаете перенаправление.
Вместо $_GET['send'] проверяете $_SESSION['send'] и если она установлена, выводите сообщение, после чего эту переменную очищаете или удаляете. После этого повторного вывода сообщения уже быть не должно при обновлении страницы.
Но подумайте сами. Некто отправил письмо, получил "Спасибо..." и опять форму ввода, если теперь опять отправить почту, опять получим сообщение "Спасибо..." и т.д., если смысл тогда убирать его? Если это были бы разные пользователи за одним компьютером, то можно в сообщение передавать хотя бы имя пользователя, для разнообразия. :)
И еще. Мне могут возразить, но я высказываю свое мнение, потому как привык определять переменные, прежде чем обращаться к ним, а РНР несколько вольно поступает в этом вопросе. Почему бы вам не сделать так:
<?
session_start();
$error = "";
$action = !empty($_POST["action"]) ? $_POST["action"] : "";
$name = !empty($_POST["name"]) ? trim($_POST["name"]) : "";
$com = !empty($_POST["com"]) ? trim($_POST["com"]) : "";
$contacts = !empty($_POST["contacts"]) ? trim($_POST["contacts"]) : "";
$url = !empty($_POST["url"]) ? trim($_POST["url"]) : "";
//далее думаю понятно какие лишние строки можно выбросить из вашего кода
.....
?>
//а в форме
<input type="text" name="name" value="<?=$name;?>">
<input type="text" name="contacts" value="<?=$contacts;?>">
//и так далее
|
Можете конечно пользоваться для подавления и собачкой, либо подавить вывод предупреждений на экран, решать вам, но правильно оформить отправку почты (заголовки) вы обязаны. | |
|
|
|
|