За последние 24 часа нас посетили 18832 программиста и 1708 роботов. Сейчас ищут 892 программиста ...

Пара вопросов по форме обратной связи.

Тема в разделе "PHP для новичков", создана пользователем CraftLawrence, 12 ноя 2014.

  1. CraftLawrence

    CraftLawrence Новичок

    С нами с:
    12 ноя 2014
    Сообщения:
    40
    Симпатии:
    0
    Есть рабочая форма обратной связи в всплывающем окне. Код самого обработчика ниже:
    Код (PHP):
    1. <?
    2. $kuda='mymail@mail.ru';
    3. $zagolovok='MAILFROMSITE';
    4. $headers='Content-type: text; charset="windows-1251";';
    5.  
    6. if (isset($_POST['ok'])){
    7.  
    8. $fio=$_POST['fio'];
    9. $email=$_POST['email'];
    10. $tel=$_POST['tel'];
    11. $text=$_POST['text'];
    12.  
    13. $messages=$fio."\n".$tel."\n".$email."\n".$text;
    14.  
    15. }
    16. ?>
    1) Как сделать чтобы письмо приходило с определенного ящика? На указанный адрес приходит письмо от отправителя с доменом хостинга. Мне нужно, чтобы отображалось, будто письмо пришло от адреса, к примеру, mail@site.ru

    2) Как показать пользователю, что сообщение отправилось самым простым способом? Echo не вариант, ибо переадрессация на пустую страницу с одной строчкой текста - не красиво.
    Пробовал alert - пишет ошибку.
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Не вижу в коде собственно отправки, но если через mail, там можно задать дополнительные заголовки в последнем параметре, в том числе и From. На странице документации такой был
    Естественно пишет ошибку. Почитайте phpfaq.ru/na_tanke. Здесь хороший вариант, если вызываемый по ajax скрипт будет возвращать json, а js код на основе возвращённого json будет решать, отправилось письмо или нет
     
  3. CraftLawrence

    CraftLawrence Новичок

    С нами с:
    12 ноя 2014
    Сообщения:
    40
    Симпатии:
    0
    Да, случайно забыл вставить. Отправка происходит строчкой
    Код (Text):
    1. mail($kuda,$zagolovok,$messages,$headers)
    Так что, сделать
    Код (Text):
    1. mail($kuda,$zagolovok,$messages,$headers,$From)
    ?
    Потому что я пробовал так, и в итоге просто в текст письма в конце добавлялся указанный емейл, вместо отображения его в строчке "От".

    И это простой вариант?) Мне бы просто value кнопки поменять, или алерт вывести)
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    1) http://php.net/manual/ru/function.mail

    2) не хочешь "на пустую страницу с одной строчкой текста", переадресуй на непустую страницу, например снова на ту где форма, а на ней проверяй состояние отправки. при удаче выводи свой alert.
     
  5. CraftLawrence

    CraftLawrence Новичок

    С нами с:
    12 ноя 2014
    Сообщения:
    40
    Симпатии:
    0
    Ответ нашел на постороннем форуме, спасибо.
    Вы подкинули мне отличную идею, спасибо!
    Но не подскажете, как мне сразу после отправки письма делать переход на указанную ссылку, к примеру, на http://www.google.ru? Чтобы не ссылку выводило на страницу, а сразу редирект шел.
    Код примерно таков:
    Код (Text):
    1. if (mail($kuda,$zagolovok,$messages,$headers)){
    2.         echo '<a href="http://www.google.ru"></a>';
    3.     }
    Но понятное дело не работает.
     
  6. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Пере направление можно сделать через отправку http заголовка location через php функцию header до вывода данных
    14.30 Location http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
    php.net/manual/ru/function.header.php
     
  7. CraftLawrence

    CraftLawrence Новичок

    С нами с:
    12 ноя 2014
    Сообщения:
    40
    Симпатии:
    0
    Ну я как не пытался сделать, все равно ошибка. Делал так:
    Код (Text):
    1. Location       = "Location" ":" www.google.ru;
    Код (Text):
    1. Location       = "Location" ":" "www.google.ru";
    Что не так тут?
     
  8. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Почитайте моё сообщение ещё раз, потом посмотрите 2 ссылки которые я дал,
    в первой почитать достаточно один раздел 14.30 во второй всё
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну вы не прочитали отдельный документ описывающий принятый мета-язык рфц.
    в двух ваших записях, которые вы не понимаете, речь идет о том как может выглядеть заголовок Location (левая часть до равно) и дается два варианта полного текста заголовка (правая часть после равно):
    Location: http://www.google.ru
    Location: "www.google.ru"

    то есть в заголовке вы можете обрамить двойными кавычками адрес локации или не обрамлять. на ваш выбор.
    соответственно запись заголовка ответа в поток средствами пхп будет выглядеть
    header('Location: http://www.google.ru'); или header('Location: "www.google.ru"');

    собственно вы сходили посмотрели рфц - это хорошо. а ман по функции header не посмотрели - это плохо. ведь там есть примеры header+location.
     
  10. CraftLawrence

    CraftLawrence Новичок

    С нами с:
    12 ноя 2014
    Сообщения:
    40
    Симпатии:
    0
    Спасибо большое. Слишком длинный мануал, к тому же не был уверен, что именно он мне поможет, потому проглянул быстро и продолжил гуглить. Ваша строчка кода заработала без проблем.