| |
|
|
| | Есть файл mail.php. В нем только одна функция отправки письма и больше ничего нет. Никаких тегов и т.п.
Когда письмо отправляется, этот mail.php появляется в браузере в виде пустой страницы.
Зачем это пустое окно, и как можно от него избавиться? | |
| |
|
|
| |
|
|
| |
для: Хулиган
(28.06.2006 в 14:55)
| | | вставить в конец
Header("Location: index.php"); | |
| |
|
|
| |
|
|
| |
для: Хулиган
(28.06.2006 в 14:55)
| | | Иди закрыть средствами JS | |
| |
|
|
| |
|
|
| |
для: valenok
(28.06.2006 в 15:04)
| | | Наугад вписал такой скрипт: window.close(); - окно закрывается, правда при этом успевает промелькнуть в браузере. Можно ли сделать на js, чтобы вообще не появлялось?
а вот Header("Location: index.php"); выдает варнинг
Warning: Cannot modify header information - headers already sent by (output started at z:\home\mysite.ru\www\mail.php:2) in z:\home\mysite.ru\www\mail.php on line 30
и окно не закрывается. Что сделал не так? Вот весь mail.php:
<?
$recieve= $_POST["body"];
$subj="bla-bla";
$bound="bla_bla_web";
$headers="From: \"user\n";
$headers.="To: myemail@bk.ru\n";
$headers.="Subject: $subj\n";
$headers.="Mime-Version: 1.0\n";
$headers.="Content-Type: multipart/alternative; boundary=\"$bound\"\n";
$body="--$bound\n";
$body.="Content-type: text/html; charset=\"windows-1251\"\n";
$body.="Content-Transfer-Encoding: 8bit\n\n";
$body.=$recieve;
$body.="--$bound--\n\n";
mail("myemail@bk.ru", $subj, $body, $headers);
Header("Location: index.php");
?>
|
| |
| |
|
|
| |
|
|
| |
для: Хулиган
(28.06.2006 в 15:57)
| | | ob_start()
--
А чем вам не нравится то что он мелькает?
Ну может можно поставить невидимость.. | |
| |
|
|
| |
|
|
| |
для: Хулиган
(28.06.2006 в 15:57)
| | | может стоит всё же убрать пустые строки вначале скрипта? | |
| |
|
|
| |
|
|
| |
для: Trianon
(28.06.2006 в 18:09)
| | | Это мало чем помогает: вместо пустого окна вываливается ещё раз index.php.
А он уже один раз есть, второй не нужен. | |
| |
|
|
| |
автор: Fddd (28.06.2006 в 22:03) |
|
| |
для: Хулиган
(28.06.2006 в 21:52)
| | | Я наверно не в кассу, но я не могу понять что вы хотите?
Если у вас mail.php а в нём этот код(без Header("Location: index.php")) и вы просто заходите прямо на mail.php то Конечно будет БЕЛЫЙ ЭКРАН!!! | |
| |
|
|
| |
|
|
| |
для: Fddd
(28.06.2006 в 22:03)
| | | Может я не совсем понятно описал то, что мне нужно...
У меня есть окно (index.php). В нем заполняется форма для отправки на мыло.
По нажатию кнопки в этой форме мне нужно отправить эту форму на мыло.
У формы action="mail.php"
Сам код отправки находится в mail.php.
Нажимаю кнопку, вызывается mail.php, код в нем отправляет форму на мыло.
Всё прекрасно, вот только кроме того, что отправлено письмо, mail.php вдобавок генерит и вываливает в браузер пустое окно. Это окно мне нафиг не нужно. И никак от него не избавлюсь :(
Код mail.php приведён выше. Если в нем в конце стоит Header("Location: index.php"), то вместо пустого окна mail.php выдаёт мне index.php. Это окно у меня уже есть в браузере, и второй раз оно мне тоже не нужно, как и пустое окно. Нужно просто отправить письмо и больше ничего, никаких окон mail.php не должен выдавать.
Это все, чего я хочу... | |
| |
|
|
| |
автор: Fddd (28.06.2006 в 23:33) |
|
| |
для: Хулиган
(28.06.2006 в 23:14)
| | | Я правильно ли вас понял:
У вас на index.php есть html форма, после нажатия на кнопку, ОТКРЫВАЕТСЯ НОВОЕ окно mail.php.
Если да то у вас что то с формой, надо чтобы открывалось в томже окне.
Форма:
<form name="FormName" action="mail.php" method="post">
<input name="Name" type="text" value="">
<input type="submit" value="Send">
</form> | |
| |
|
|
| |
|
|
| |
для: Fddd
(28.06.2006 в 23:33)
| | | Вы меня натолкнули на решение проблемы. Сделал так:
В коде index.php вставил такой код:
<? if (!isset ($_GET["send"])){?>
<script>
window.close();
</script>
<? }
...
...
|
index.php у меня при первом открытии получает "send". Это как признак первого открытия (мыло не отправлено). Давлю кнопку "отправить", mail.php отправляет письмо, и вызывает index.php через Header("Location: index.php");, но уже без "send". Если "send" не установлена - это значит, что мыло было отправлено, и окно index можно закрывать. И второе окно не появляется, и окно с только что отправленой формой закрывается автоматом.
Всё получилось очень удачно.
Спасибо всем! | |
| |
|
|
| |
|
|
| |
для: Хулиган
(28.06.2006 в 21:52)
| | | Действительно... с таким подходом это мало чем поможет. | |
| |
|
|
| |
|
|
| |
для: Trianon
(29.06.2006 в 09:52)
| | | Header("Location: index.php");
сдесь index.php было дано для примера. можно было бы поподставлять свои странички и посмотреть что будет. Поставьте вместо index.php ту страницу, куда вам надо перейти после отправки. и внимательно прочитайте http://ru.php.net/header | |
| |
|
|
| |
|
|
| |
для: RV
(29.06.2006 в 10:34)
| | | Ещё раз спасибо за подсказку с Header(), но она не решала моей первоначальной задачи.
Вы невнимательно читали мой пост: мне никуда не надо переходить после отправки.
Коль скоро Header("Location:...."); осуществляет редирект, и всё-таки должен куда-нибудь перейти, то мне пришлось направить этот навязчивый редирект в русло, где он не мешает, и заставить его выполнить полезное действие: закрыть окно с формой, которая была отмылена и мне уже не нужна.
Чтобы было понятно, как я воспользовался Header(), приведу фрагменты кода из файлов zakaz.php и mail.php
//это файл zakaz.php. В нем есть форма, которую нужно заполнить и отправить на мыло:
<form name=frm_mail action="mail.php" name="body" method="post">
...
...
// В zakaz.php можно попасть двумя путями:
// 1. Со страницы, где пользователь выбирает товар (настоящий index.php), при этом
// $_GET["send"] содержит его выбор, в соответствие с которым заполняется
// форма frm_mail и передается в mail.php для отправки.
// 2. Из файла mail.php после отправки переданой в него формы на мыло.
// При этом $_GET["send"] либо пустой (признак успешной отправки), либо равен 0
// (признак неудачи при отправке).
// Далее код, который определяет, откуда мы попали в zakaz.php и в соответствие с этим
// либо готовит форму для отправки, либо закрывает окно zakaz.php.
<? if (!isset ($_GET["send"])){?>
<script>
//если мы здесь, $_GET["send"] - пустой, значит мы попали в zakaz.php
// из mail.php и почта отправлена успешно. Информируем и закрываем
//окно с формой.
window.close();
alert("Ваш заказ отправлен.");</script>
<? }
$senddata=$_GET["send"];
if ($senddata == 0){?>
<script>
//если мы здесь, $_GET["send"]==0, значит мы попали в zakaz.php
// из mail.php и при отправке возникли ошибки. Информируем и закрываем
//окно с формой.
window.close();
alert("Не удалось отправить заказ.");</script>
<? }
//если мы проскочили через два предыдущих условия, и оказались здесь,
//значит это первое наше попадание в zakaz.php (со страницы index.php)
//$_GET["send"] содержит выбор пользователя, который далее будем оформлять
//и передавать в mail.php для отправки.
|
Тут файл mail.php:
...
...
if (mail("myemail@bk.ru", $subj, $body, $headers)) {
//отправили успешно, вызываем "родительское окно" с пустым send
$ret="Location: zakaz.php";
}
else {
//отправка провалилась, передаем в zakaz.php send==0 (признак неудачи)
$ret="Location: zakaz.php/?send=0";
}
Header($ret);
?>
|
Вот такая несложная схема взаимодействия трех файлов (index.php, zakaz.php, mail.php) | |
| |
|
|
| |
|
|
| |
для: Хулиган
(29.06.2006 в 15:19)
| | | вообщето хорошим тоном считается после отправки заказа (емейла, etc) сказать пользователю что все хорошо и все что должно было уйти ушло, а не молча закрыть окно после отправки, оставляя его в неведеньи | |
| |
|
|
| |
|
|
| |
для: RV
(29.06.2006 в 15:23)
| | | К сожалению, вы опять невнимательно прочитали мой код:) Там есть такие вещи:
alert("Ваш заказ отправлен.")
и
alert("Не удалось отправить заказ.")
Пользователь информируется. Естественно для краткости был опущен полный текст алерта (он растянут со всеми подробностями на 6 строк).
Я понимаю, что у вас такое мнение, что я зелёный новичок и не знаю таких элементарных вещей, как информирование пользователя или замену index.php на zakaz.php :)
В области web-программирования - бесспорно да, никогда раньше не интересовался этой отраслью, а в остальном за 15 лет написал достаточное количество программ, и знаю о взаимодействии с юзером не понаслышке.
Ещё раз спасибо за помощь. | |
| |
|
|
| |
|
|
| |
для: Хулиган
(29.06.2006 в 15:56)
| | | а если у меня js отключены? | |
| |
|
|
| |
|
|
| |
для: RV
(29.06.2006 в 16:13)
| | | а если у вас отключен js, то дальше первой страницы вы не продвинитесь, и информировать вас будет не о чем. | |
| |
|
|