Помогите плиз.
Имеется форма обратной связи (сontact.html) и обработчик (contact.php). Все работает.
Теперь появилась новая задача: существует 2 страницы с продукцией (product.html и product_2.html), рядом с каждым продуктом стоит check box и ссылка для запроса доп. информации
Вопрос: как сделать чтобы посетитель отметив необходимый артикул (один или несколько, на одной страницы или на двух) при нажатии ссылки переходил бы на страницу формы обратной связи на которой уже автоматичеки было бы заполнено поле Тема (в зависимости от выбранных артикулов) и сообщение отправлялось бы на другой почтовый ящик. (т.е. если посетитель входит на форму обр. связи на прямую = посылаем на почт. ящик1 и тему вводит сам, И если входит на форму через страницы с продукцией = посылаем на почт. ящик 2 и тема вставляется автоматически).
Если эта тема уже обсуждалась то дайте пожалуйста линк.
Заранее спасибо
Спустя 23 минуты, 39 секунд (4.12.2009 - 17:07) ApuktaChehov написал(а):
<form method="post" action="">
<input type="checkbox" name="artc[]" value="яблоки">
<input type="checkbox" name="artc[]" value="грушы">
<input type="submit">
</form>
//тема сообщения $title
$str = implode(", ", $_POST['artc']);
$title = "Я хочу купит у Вас следующие фрукты:" . $str;
Спустя 9 минут, 21 секунда (4.12.2009 - 17:17) Krevedko написал(а):
угу...только перед всем этим if (isset... надо написать
Спустя 2 минуты, 1 секунда (4.12.2009 - 17:19) ApuktaChehov написал(а):
Сам догадается
, я пример привел как можно сделать, а не готовый скрипт.

Спустя 9 минут, 16 секунд (4.12.2009 - 17:28) Krevedko написал(а):
вот это правильно !

Спустя 10 минут, 39 секунд (4.12.2009 - 17:39) ApuktaChehov написал(а):
Опа, а я оказывается раскрыл только пол темы.
Продолжаю...
Продолжаю...
//$_SERVER['HTTP_REFERER'] - содержит имя страницы, с которой пришел юзер
//Если юзер пришел с product.html или product_2.html
if($_SERVER['HTTP_REFERER'] == "product.html" || $_SERVER['HTTP_REFERER'] == "product_2.html")
{
//тогда почта у нас будет ткакая
$mail = "mail1@xxxxxxxx.xx";
//Заполняем поле тема, артикулами которые выбрал юзер
$title = "Я хочу купит у Вас следующие фрукты:" . $str;
}
else
//А если он пришел с какой-нибудт другой страницы, почта будет такой
{
$mail = "mail2@xxxxxxxx.xx";
//Поле "тема", осталвяем пустое.
$title = NULL;
}
Спустя 22 часа, 11 минут, 14 секунд (5.12.2009 - 15:50) sokpet написал(а):
Всем спасибо. Получился следующий код, но все равно шлет только на первый ящик (неважно откуда пришел посетитель). Как исправить?
Это код на который ссылается форма обратной связи.
По поводу subject понял что вы имели ввиду, но нужно немного другое исполнение, т.е.:
когда выбирают продукт на странице product.html и переходят по ссылки (запросить инфо) то автоматически вставляется value checkbox в поле $fields{"Subject"} = "Subject";
Нужно ли создать новый файл subject.php и запускать его в файле product.html?
Или можно как-то по другому привязать?
Поле темы из формы обратной связи:
<input name="Subject" type="text" id="Subject" value="должно печататься автоматом на основании выбора клиента, если клиент пришел с product.html" />[b]
Заранее спасибо
Это код на который ссылается форма обратной связи.
<?php
if (($_SERVER['HTTP_REFERER'] == "http://xxx/product.html") or ($_SERVER['HTTP_REFERER'] == "http://xxx/product_2.html") )
{$to = "email_1@gmail.com";
}
else
{$to = "email_2@gmail.com";}
$from = $_POST['Email'] ;
$name = $_POST['Name'] ;
$headers = "De: $from";
$subject = "Contact via WEB";
$fields = array();
$fields{"Company_name"} = "Company_name";
$fields{"Name"} = "Name";
$fields{"Email"} = "Email";
$fields{"Subject"} = "Subject";
$fields{"Message"} = "Message";
$body = "We have received the following message:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%20s: %s\n",$b,$_POST[$a]); }
$headers2 = "De: noreply@noreply.com";
$subject2 = "Thanks for contacting us";
$autoreply = "Thanks for contacting us. We will responde you within 24 hours";
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: [URL=http://xxx/thankyou.html"]http://xxx/thankyou.html"[/URL] );}
else
{print "We could not send your mail"; }
?>
По поводу subject понял что вы имели ввиду, но нужно немного другое исполнение, т.е.:
когда выбирают продукт на странице product.html и переходят по ссылки (запросить инфо) то автоматически вставляется value checkbox в поле $fields{"Subject"} = "Subject";
Нужно ли создать новый файл subject.php и запускать его в файле product.html?
<form action="" method="post"></form>
<input type="checkbox" name="product1" class="free" value="product1"/>
</form>
Или можно как-то по другому привязать?
Поле темы из формы обратной связи:
<input name="Subject" type="text" id="Subject" value="должно печататься автоматом на основании выбора клиента, если клиент пришел с product.html" />[b]
Заранее спасибо
Спустя 1 час, 12 минут, 22 секунды (5.12.2009 - 17:02) sokpet написал(а):
Посмотрите код плиз. Что-то ничего не работает как надо.
Спустя 11 минут, 59 секунд (5.12.2009 - 17:14) Ka4_0k написал(а):
$fields{"Company_name"}
Первый раз такое вижу. Обычно вродь
$fields["Company_name"]
А вообще посмотри что находится в $_SERVER['HTTP_REFERER'].
Спустя 55 минут, 13 секунд (5.12.2009 - 18:09) ApuktaChehov написал(а):
Я описал верную конструкцию, ее не нужно было переделывать.
$_SERVER['HTTP_REFERER'] - хранить только имя станицы с который пришел юзер, никаких http:// и доменов там не содержится!
А что это за синтаксис такой? Работает? Первый раз вижу:
Убери лишние скобки, и в место or поставь ||
$fields{"Company_name"} - это тоже что то непонятное.
$_SERVER['HTTP_REFERER'] == "product.html" || $_SERVER['HTTP_REFERER'] == "product_2.html"
$_SERVER['HTTP_REFERER'] - хранить только имя станицы с который пришел юзер, никаких http:// и доменов там не содержится!
А что это за синтаксис такой? Работает? Первый раз вижу:
if(($_SERVER['HTTP_REFERER'] == "http://xxx/product.html") or ($_SERVER['HTTP_REFERER'] == "http://xxx/product_2.html") )
Убери лишние скобки, и в место or поставь ||
$fields{"Company_name"} - это тоже что то непонятное.
Спустя 22 минуты, 44 секунды (5.12.2009 - 18:32) sokpet написал(а):
<?php
if($_SERVER['HTTP_REFERER'] == "http://www.XXX/product.html" || $_SERVER['HTTP_REFERER'] == "http://www.XXX/product_2.html")
{$to = "mail1@gmail.com";}
else
{$to = "mail2@gmail.com";}
$from = $_POST['Email'] ;
$name = $_POST['Nombre'] ;
$headers = "De: $from";
$subject = "Contact via WEB";
$fields = array();
$fields["Company_name"] = "Company_name";
$fields["Name"] = "Name";
$fields["Email"] = "Email";
$fields["Subject"] = "Subject";
$fields["Message"] = "Message";
$body = "We have received the following message:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%20s: %s\n",$b,$_POST[$a]); }
$headers2 = "De: noreply@noreply.com";
$subject2 = "Thanks for contacting us";
$autoreply = "Thanks for contacting us. We will responde you within 24 hours";
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: [URL=http://www.XXX/thankyou.html"]http://www.XXX/thankyou.html"[/URL] );}
else
{print "We could not send your mail"; }
?>
Вот в таком виде работает, но все идет на второй ящик (всегда). Может в страницу product.html что-то дабавить нужно?
Что не так с кодом?
Спустя 5 минут, 52 секунды (5.12.2009 - 18:38) Ka4_0k написал(а):
Да выведи var_dump() что именно конкретно у тебя попадает в $_SERVER['HTTP_REFERER']
Спустя 6 минут, 31 секунда (5.12.2009 - 18:44) Krevedko написал(а):
а можно еще вместо $_SERVER проверять наличие передачи чекбоксов через пост ....но с $_SERVER более правильно
Спустя 1 час, 19 минут, 42 секунды (5.12.2009 - 20:04) ApuktaChehov написал(а):
опа...
оказывается я тут ошибся:
$_SERVER['HTTP_REFERER'] - хранить только имя станицы с который пришел юзер, никаких http:// и доменов там не содержится!
Это не верно, она и в правду содержит полный пусть...
Я посмотрел твой скрипт. Все должно работать, посмотри что у тебя в $_SERVER['HTTP_REFERER'] попадает.
оказывается я тут ошибся:
$_SERVER['HTTP_REFERER'] - хранить только имя станицы с который пришел юзер, никаких http:// и доменов там не содержится!
Это не верно, она и в правду содержит полный пусть...
Я посмотрел твой скрипт. Все должно работать, посмотри что у тебя в $_SERVER['HTTP_REFERER'] попадает.
Спустя 1 час, 1 минута, 13 секунд (5.12.2009 - 21:05) sokpet написал(а):
Простите не понял, что значит что попадает? Где это проверять?
Пока все работает, но к сожалению только на второй ящик.
Нет, ну можно конечно ерундой заняться и сделать для каждого ящика свой contact.html и contact.php. Но хотелось бы добиться чтобы PHP начал IF выполнять
Может быть REFERER не читается из-за файервола?
Пока все работает, но к сожалению только на второй ящик.
Нет, ну можно конечно ерундой заняться и сделать для каждого ящика свой contact.html и contact.php. Но хотелось бы добиться чтобы PHP начал IF выполнять
if($_SERVER['HTTP_REFERER'] == "http://www.XXX/product.html" || $_SERVER['HTTP_REFERER'] == "http://www.XXX/product_2.html")
{$to = "mail1@gmail.com";}
else
{$to = "mail2@gmail.com";}
Может быть REFERER не читается из-за файервола?
Спустя 59 минут, 23 секунды (5.12.2009 - 22:05) ApuktaChehov написал(а):
напиши:
И посмотри что в нее попадает.
echo($_SERVER['HTTP_REFERER']);
И посмотри что в нее попадает.
Спустя 1 час, 2 минуты, 46 секунд (5.12.2009 - 23:07) sokpet написал(а):
Проверил, ссылка в $_SERVER['HTTP_REFERER'] правильная. Может в product.html нужно прописать какой нибудь action в форме с чекбоксами? потому что до этого я пробовал приходить на contact.html по простой ссылке со страницы product.html.
Т.е. когда запускаешь Отправить на странице contacts.html срабатывает файл contact.php и так как он при отправки почты отсылает на thankyou.html, то Referer который он видет это contact.html. (А хочется чтоб он product.html увидел)
Конечно наверное можно запихнуть код contact.php в contact.html и переименовать его в один contact.php, тогда скорее всего PHP увидит последний правильный referer. Но хочется сделать двумя файлами.
Вообщем чего-то не хватает.
Т.е. когда запускаешь Отправить на странице contacts.html срабатывает файл contact.php и так как он при отправки почты отсылает на thankyou.html, то Referer который он видет это contact.html. (А хочется чтоб он product.html увидел)
Конечно наверное можно запихнуть код contact.php в contact.html и переименовать его в один contact.php, тогда скорее всего PHP увидит последний правильный referer. Но хочется сделать двумя файлами.
Вообщем чего-то не хватает.
Спустя 11 часов, 33 минуты, 31 секунда (6.12.2009 - 10:41) ApuktaChehov написал(а):
Сделай вот что:
перед условием, где определяется почта поставь echo($_SERVER['HTTP_REFERER']);
и сразу же после:
echo($to);
Если $to всегда одна и та же, значит у тебя проблема с условием.
У меня твое условие работает.
перед условием, где определяется почта поставь echo($_SERVER['HTTP_REFERER']);
и сразу же после:
echo($to);
Если $to всегда одна и та же, значит у тебя проблема с условием.
У меня твое условие работает.
Спустя 8 часов, 26 секунд (6.12.2009 - 18:41) sokpet написал(а):
Сделал... в REFERER попадает только contact.html
а в $to только второй ящик. В упор не хочет видеть product.html
Еще есть варианты?
а в $to только второй ящик. В упор не хочет видеть product.html
Еще есть варианты?
Спустя 2 часа, 42 минуты, 7 секунд (6.12.2009 - 21:24) ApuktaChehov написал(а):
А ты с какой страницы переходишь?
Если в REFERER только contact.html, значит ты с этой страницы и переходишь.
Если в REFERER только contact.html, значит ты с этой страницы и переходишь.
Спустя 3 часа, 36 минут (7.12.2009 - 01:00) sokpet написал(а):
я перехожу со страницы product.html>contact.html>contact.php.
может на product.html чего-то не хватает? В общем логично что последняя страница до запуска PHP это contact.html
может в product.html тоже должна быть кнопка submit с запуском contact.php? (но тогда как будут попадать в форму обратной связи?)
а вместо REFERER можно какой-то вариант придумать?
может на product.html чего-то не хватает? В общем логично что последняя страница до запуска PHP это contact.html
может в product.html тоже должна быть кнопка submit с запуском contact.php? (но тогда как будут попадать в форму обратной связи?)
а вместо REFERER можно какой-то вариант придумать?
Спустя 7 часов, 58 минут, 42 секунды (7.12.2009 - 08:58) ApuktaChehov написал(а):
Тогда все ясно. Ты бы сам посмотрел по поводу REFERER, ясно же написано, что в ней хранится адрес страницы, с которой пришел юзер.Ты приходишь с
contact.html, по этому и ничего не работает.
Ееще вариант? Можно проверять были ли отмечены какие то пункты, если были, то переадресовывать на нужную страницу. Тут уже об этом упоминалось.
contact.html, по этому и ничего не работает.
Ееще вариант? Можно проверять были ли отмечены какие то пункты, если были, то переадресовывать на нужную страницу. Тут уже об этом упоминалось.
Спустя 5 часов, 15 минут, 48 секунд (7.12.2009 - 14:14) Gabriel написал(а):
и работать небудет до тех пор пока рефевер не будет сохраняться либо в скрытое поле либо в сесию либо еще как-то, или-же сделать форму и обработчик одним файлом, или сделать так:
contact.html переделать в .php и в начале переделаного contact.html так
вродь как вполне сносно.
contact.html переделать в .php и в начале переделаного contact.html так
<?php include('обработчик.php'); ?>
вродь как вполне сносно.
Спустя 7 дней, 1 час, 49 минут, 26 секунд (14.12.2009 - 16:03) sokpet написал(а):
Вставил
[php]<?php include('обработчик.php'); ?>
только теперь он отправляет почту и не показывает саму форму, т.е при переходе на contactos.php срабатывает скрипт и перекидывает на страницу thanks.html
Как это исправить?
[php]<?php include('обработчик.php'); ?>
только теперь он отправляет почту и не показывает саму форму, т.е при переходе на contactos.php срабатывает скрипт и перекидывает на страницу thanks.html
Как это исправить?