ФорумПрограммированиеPHP для идиотов → Отправка формы заказа с сайта на почт.ящик mail.ru

Отправка формы заказа с сайта на почт.ящик mail.ru

  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 6 декабря 2011 г. 19:15, спустя 32 минуты 16 секунд

    kaylanger, ты лучше отчитайся по-полной как сделал, все ли получилось (в идеале выложи исправленный код, с которым все заработало), а потом уже будешь благодарить.
  • kaylanger

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 6 декабря 2011 г. 20:39, спустя 1 час 24 минуты 21 секунду

    Givi, Сообщения на ящик приходят. только вот в виде иероглифов:

    Reply-To: [email protected]

    Content-Type: text/plain; charset=utf-8

    Content-Transfer-Encoding: 8bit

    п≤п╪я▐ п©п╬я│п╩п╟п╡я┬п╣пЁп╬: п╪п╦я┘п╟п╦п╩ п■п╟п╡я▀п╢п╬п╡
    п╒п╣п╩п╣я└п╬п╫: 89043523200
    п░п╢я─п╣я│:: п я─п╦п╡п╣п╫п╨п╬п╡п╟ 9 - 90
    п°п╣п╫я▌ п≈п╟п╨п╟п╥п╟::
    п▓я─п╣п╪я▐ п╥п╟п╨п╟п╥п╟:: 11.00-12.00

    Плюс, не просчитываются и не выводятся кол-во блюд, которые я отметил галочкой (для примеры вот ссылка на страничку http://kompot-cafe.ru/order.htm).
    я думаю вы поймете, что я имею ввиду.
    Подскажите, пожалуйста, как мне исправить иероглифы на читаемый текст и что можно сделать с выводом блюд, которые просчитываются функцией foreach.

    это тот пример, который вы мне предложили в качестве решения проблемы вывода блюд. он мне не помог.

    $orders = array('order1'=>'Ролл1','order2'=>'Ролл2');
    if (isset($_POST['id'])
    {
       $order = $orders[$_POST['id']; // это если у тебя через $_POST['id'] передается строковая переменная, равная либо "order1" либо "order2"
    }
    else
    {
      exit('Вы, бля, укажите сначала что именно хотите!'); // тут вставишь нужное тебе действие
    }



    Вот полностью отредактированный код

    <?php
    $orders = array(
    'order1'=>'Ролл1',
    'order2'=>'Ролл2'
    );
    $order='';
    foreach($orders as $id=>$title){
    if(isset($_POST[$id]))
    $orders.="\n{$title}";
    }
    if (isset($_POST['name1'])) {$name1 = $_POST['name1'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['adress'])) {$adress = $_POST['adress'];}
    if (empty($name1))
    {
    echo "<b class=style5>Не указано имя!<p>";
    echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>";
    exit;
    }
    if (empty($phone))
    {
    echo "<b class=style5>Не указан телефон!<p>";
    echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>";
    exit;
    }
    if (empty($adress))
    {
    echo "<b class=style5>Не указан адрес!<p>";
    echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>";
    exit;
    }
    else
    echo "<font class=style5>Получен заказ от: </font>".$_POST["name1"];
    echo "<br><br><font class=style5>Контактный телефон: </font>".$_POST["phone"];
    echo "<br><br><font class=style5>Адрес: </font>".$_POST["adress"];
    echo "<br><br><font class=style5>Время доставки: </font>".$_POST["time"];
    if(isset($_POST['order1'])) echo "<br><br><font class=style5>Ролл1</font>";
    if(isset($_POST['order2'])) echo "<br><br><font class=style5>Ролл2</font>";

    if($_POST['submit']) {

           $name1 = htmlspecialchars(substr(trim($_POST['name1']), 0, 100));
    $phone = htmlspecialchars(substr(trim($_POST['phone']), 0, 100));
           $adress = htmlspecialchars(substr(trim($_POST['adress']), 0, 1000));
    $to = "[email protected]"; /*УКАЗАТЬ СВОЙ АДРЕС!*/
    $from = "[email protected]";
    $subject = "Сообщение с вашего сайта";
    $message = "Имя пославшего: $name1 \nТелефон: $phone \nАдрес:: $adress\nМеню Заказа:: $order\nВремя заказа:: $time";
    $verify = mail($to, $subject, $message,
    "From: $from\r\n
    Reply-To: $from\r\n
    Content-Type: text/plain; charset=utf-8\r\n
    Content-Transfer-Encoding: 8bit"
    );
    }
    if ($verify = true)
    {
    echo "<b class=style5><br><br>Спасибо! Скоро Вам перезвонят для подтверждения заказа.<p>";
    echo "<a href=index.htm class=style5>Нажмите,</a> чтобы вернуться на главную страницу";
    }
    else
    {
    echo "<br><br><font class=style5>Ошибка. Сообщение не отправлено!";
    }
    ?>
  • kaylanger

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 6 декабря 2011 г. 20:47, спустя 7 минут 46 секунд

    Givi, Извиняюсь

    if ($verify = true)


    исправил на

    if ($verify === true)


    все равно на почту приходит уведомление ввиде кракозябр, а кол-во блюд не просчитывается.
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 6 декабря 2011 г. 21:11, спустя 23 минуты 55 секунд

    kaylanger, шли письма на английском или транслитом и не парься
    не всё полезно, что в swap полезло
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 6 декабря 2011 г. 21:58, спустя 47 минут 8 секунд

    kaylanger, ошибки не исправят "кракозяблы" в письме. Изначально задача была сделать так, чтоб хоть что-то отправлялось.
    Теперь можно почитать вот это http://www.yaap.info/page/php-mail-otpravka-soobshhenij.
    А по просчету, то уже завтра гляну если сам не сумеешь сделать. Сегодня работать больше желания совсем нет, пора уже посмотреть очередную серийку какого-то Private'овского фильмеца и подро… спать!
  • kaylanger

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 7 декабря 2011 г. 0:50, спустя 2 часа 51 минуту 48 секунд

    Givi, Код немного подправил. Уведомления с сайта теперь приходят в русской кодировке. Вот сообщение

    ЗАКАЗ для Кафе Компот
    От кого: [email protected]
    Кому: [email protected]
    7 декабря 2011, 00:43
    Имя пославшего: Александр
    Телефон: 89601772227
    Адрес: ул. Московская 9 - 99
    Меню Заказа:
    Время заказа: 10.00-11.00

    Как видно из данного сообщения, я так и не разобрался с просчетом и выводом Меню Заказа. Прошу вашей помощи!

    Вот отредактированный код

    <?php
    $orders = array(
    'order1'=>'Ролл1',
    'order2'=>'Ролл2'
    );
    $order='';
    foreach($orders as $id=>$title){
    if(isset($_POST[$id]))
    $orders.="\n{$title}";
    }
    if (isset($_POST['name1'])) {$name1 = $_POST['name1'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['adress'])) {$adress = $_POST['adress'];}
    if (empty($name1))
    {
    echo "<b class=style5>Не указано имя!<p>";
    echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>";
    exit;
    }
    if (empty($phone))
    {
    echo "<b class=style5>Не указан телефон!<p>";
    echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>";
    exit;
    }
    if (empty($adress))
    {
    echo "<b class=style5>Не указан адрес!<p>";
    echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>";
    exit;
    }
    else
    echo "<font class=style5>Получен заказ от: </font>".$_POST["name1"];
    echo "<br><br><font class=style5>Контактный телефон: </font>".$_POST["phone"];
    echo "<br><br><font class=style5>Адрес: </font>".$_POST["adress"];
    echo "<br><br><font class=style5>Время доставки: </font>".$_POST["time"];
    if(isset($_POST['order1'])) echo "<br><br><font class=style5>Ролл1</font>";
    if(isset($_POST['order2'])) echo "<br><br><font class=style5>Ролл2</font>";

    if($_POST['submit']) {

    $name1 = htmlspecialchars(substr(trim($_POST['name1']), 0, 100));
    $phone = htmlspecialchars(substr(trim($_POST['phone']), 0, 100));
    $adress = htmlspecialchars(substr(trim($_POST['adress']), 0, 1000));
    $to = "[email protected]"; /*УКАЗАТЬ СВОЙ АДРЕС!*/
    $from = "[email protected]";
    $subject = "ЗАКАЗ для Кафе Компот";
    $header = "From: \"Кафе Компот \" <[email protected]>\r\n";
    $header = "Content-type: text/plain; charset=\"utf-8\"\r\n";
    $message = "Имя пославшего: $name1 \nТелефон: $phone \nАдрес: $adress\nМеню Заказа: $order\nВремя заказа: $time";
    $verify = mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header,
    "From: <[email protected]>\r\n
    Reply-To: <[email protected]>\r\n
    Content-Type: text/plain; charset=utf-8\r\n
    Content-Transfer-Encoding: 8bit"
    );
    }

    echo "<b class=style5><br><br>Спасибо! Скоро Вам перезвонят для подтверждения заказа.<p>";
    echo "<a href=index.htm class=style5>Нажмите,</a> чтобы вернуться на главную страницу";

    ?>
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 7 декабря 2011 г. 2:03, спустя 1 час 13 минут 27 секунд

    так ёбаный ты ж хуй, ты ж смотри внимательно с какими перепенными ты работаешь.
    <?php
    $orders = array(
    'order1'=>'Ролл1',
    'order2'=>'Ролл2'
    );
    $order='';
    foreach($orders as $id=>$title){
    if(isset($_POST[$id]))
    $orders.="\n{$title}";
    }
    ?>
    естественно, что у тебя ордер пустая строка.
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 7 декабря 2011 г. 13:46, спустя 11 часов 42 минуты 21 секунду

    NRG, да я ему уже вчера об этом написал, но он проебал сделать все по каждому из пунктов. думал как раз сегодня отписаться, ибо если он и дальше будет нихуя сам не делать, то нахуй мне такой цирк :)

    kaylanger, и тот кусок, что NRG указывает исправь, и лишнюю проверку POST-данных убери. И вообще логику скрипта немного пересмотреть бы не помешало, ибо у тебя проверка на наличие "submit" в POST'е идет в конце, в то время когда по сути нужно это в первую очередь проверить, и если она отсутствует (что говорит нам о том, что скрипт запускают напрямую, к примеру, из адресной строки), то сходу слать юзера нах!

Пожалуйста, авторизуйтесь, чтобы написать комментарий!