Делимся секретами создания сайтов

форма заказа

Здравствуйте! У меня есть вопрос. Я написал форму обратной связи, и мне надо что бы кода отсылалось письмо, оно перенаправлялось на определенную страницу. как это сделать?
Вот мой исходный код html файла
<form action="send.php" method="post" name="zakaz" >
<p>Введите ФИО <font class="font-red">*</font>:<br><input type="text" name="name" size="49"></p>
<p>E-mail: <font class="font-red">*</font><br><input type="text" name="email" size="49"></p>
<p>Телефон:<br><input type="text" name="Tel" size="49"></p>
<p>Skype:<br><input type="text" name="Skype" size="49"></p>
<p>ISQ:<br><input type="text" name="ICQ" size="49"></p>
<p>Тип услуги: <font class="font-red">*</font></p>
<select name="prod" >
<option>
<option>Анимированный баннер (88 x 31) (GIF)
<option>Анимированный баннер (120 x 60) (GIF)
<option>Анимированный баннер (100 x 100) (GIF)
<option>Анимированный баннер (468 x 60) (GIF)
<option>Анимированный баннер (120 x 600)(GIF)
<option>Анимированный баннер (728 x 90) (GIF)
<option>Анимированный баннер (Другие размеры) (GIF)
<option>Статичный баннер (88 x 31)
<option>Статичный баннер (120 x 60)
<option>Статичный баннер (100 x 100)
<option>Статичный баннер (468 x 60)
<option>Статичный баннер (120 x 600)
<option>Статичный баннер (728 x 90)
<option>Статичный баннер (Другие размеры)
<option>favicon.ico
<option>Headers ("шапки")
<option>Аватарка
<option>Другие услуги
</select>
</br>
<p>Описание: <font class="font-red">*</font><br>
<textarea name="message" rows="8" cols="36"></textarea>
<br>

<br>
<input type="submit" value="Заказать" style="width:200x"></p>
</form>

Ответы: 21 → “форма заказа”

  1. Антон Дятлов Ответить

    И php файла

    <?php

    if (isset($_POST['$name'])) {$name = $_POST['$name'];}
    if (isset($_POST['$email'])) {$email = $_POST['$email'];}
    if (isset($_POST['$Tel'])) {$Tel = $_POST['$Tel'];}
    if (isset($_POST['$Skype'])) {$Skype = $_POST['$Skype'];}
    if (isset($_POST['$ICQ'])) {$ICQ = $_POST['$ICQ'];}
    if (isset($_POST['$prod'])) {$prod = $_POST['$prod'];}
    if (isset($_POST['$message'])) {$message = $_POST['$message'];}

    $address = 'mail@mail.net';
    $sub = "Заказ";
    $mes = "Автор назвался: ".$_POST['name']." \nУказал свой адрес: ".$_POST['email']." \nУказал свой телефон: ".$_POST['Tel']." \nУказал свой Skype: ".$_POST['Skype']." \nУказал свой ICQ: ".$_POST['ICQ']." \nЗаказал: ".$_POST['prod']." \nОписание заказа: ".$_POST['message']."";
    $verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
    if ($verify == 'true')
    {
    echo "<p>Сообщение отправлено";
    }
    else
    {
    echo "<p>Сообщение не отправлено";
    }
    ?>

  2. Артём Викторович Ответить

    Редирект на сколько я понял тебе нужен…
    die('<meta http-equiv="Refresh" content="0; URL='.$url.'">');
    например так…

    0-таймер в секундах
    $url – сцылка

  3. Алексей Сонькин Ответить

    лучше header("Location: somepath", true, 302);

    в зависимости от условий перенаправляем на разные странички

  4. Антон Дятлов Ответить

    <?php

    if (isset($_POST['$name'])) {$name = $_POST['$name'];}
    if (isset($_POST['$email'])) {$email = $_POST['$email'];}
    if (isset($_POST['$Tel'])) {$Tel = $_POST['$Tel'];}
    if (isset($_POST['$Skype'])) {$Skype = $_POST['$Skype'];}
    if (isset($_POST['$ICQ'])) {$ICQ = $_POST['$ICQ'];}
    if (isset($_POST['$prod'])) {$prod = $_POST['$prod'];}
    if (isset($_POST['$message'])) {$message = $_POST['$message'];}

    $address = 'dantal@zeos.net';
    $sub = "Заказ";
    $mes = "Автор назвался: ".$_POST['name']." \nУказал свой адрес: ".$_POST['email']." \nУказал свой телефон: ".$_POST['Tel']." \nУказал свой Skype: ".$_POST['Skype']." \nУказал свой ICQ: ".$_POST['ICQ']." \nЗаказал: ".$_POST['prod']." \nОписание заказа: ".$_POST['message']."";
    $verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
    header('Location: http://www.mail.ru/');
    die()
    ?>

    Вот так работает, но меня настораживает, что нет проверок.
    Как туда вписать проверку ппеременной $verify ъ
    А то я вписую, и мне выдает ошибку(

  5. Антон Дятлов Ответить

    или может так:
    header('Location: http://www.mail.ru/, true');
    header('Location: http://www.mail.ru/, false');
    die()

    ???????????

  6. Алексей Сонькин Ответить

    Ну, во-первых, стоило бы почитать описание подобных функций. мануал есть и на русском.
    меняйте тут только путь, не трогая остальные параметры.
    header("Location: somepath", true, 302);

    да так же, как и всё остальное оО if
    if ($verify == true)
    {
    header('Location: http://www.mail.ru/1', true,302);
    }
    else
    {
    header('Location: http://www.mail.ru/2', true,302);
    }

    >
    header('Location: http://www.mail.ru/, true');
    header('Location: http://www.mail.ru/, true');
    die()
    не надо таких предположений <<

  7. Антон Дятлов Ответить

    Огромное спасибо!)))

  8. Антон Дятлов Ответить

    еще один вопрос)
    За что овечает число 302 после true
    ???

  9. Алексей Сонькин Ответить

    и да, 'true' надо бы не в кавычках)

    Почитайте какой-нибудь учебник по РНР…

    302 – если бы погуглили, узнали, что это код состояния http.
    http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%8...

  10. Антон Дятлов Ответить

    аааааа, до меня дошло)))))))))))))))))
    еще раз спс)) очень помог) А то сайт не мог запустить из за этой проблемки)

  11. Илья Антипенко Ответить

    Похоже, что про фильтрацию данных, пришедших от пользователя, на этом сайте и речи быть не может….

    >
    if (isset($_POST['$name'])) {$name = $_POST['$name'];}
    if (isset($_POST['$email'])) {$email = $_POST['$email'];}
    if (isset($_POST['$Tel'])) {$Tel = $_POST['$Tel'];}
    if (isset($_POST['$Skype'])) {$Skype = $_POST['$Skype'];}
    if (isset($_POST['$ICQ'])) {$ICQ = $_POST['$ICQ'];}
    if (isset($_POST['$prod'])) {$prod = $_POST['$prod'];}
    if (isset($_POST['$message'])) {$message = $_POST['$message'];}

    Ппц. Зачем присваивать переменным значения, если при отправке вы все равно используете $_POST ?

  12. Алексей Сонькин Ответить

    подозреваю копипасту)

    http://phpforum.ru/index.php?showtopic=17405 – вот похожий текст, тока там посты заменены на переменные.

    Но лучше взять копипасты… да, с проверками^^" или переписать самому.

    Кстати, хочу заметить, я удивлюсь, если это будет работать. $Skype, $name – таких полей в запросе просто не будет. Будут 'name','email' и т.д.

  13. Антон Дятлов Ответить

    Та все работает)))) Я сто раз провирял.) Только была проблема с переодресацией)

  14. Илья Антипенко Ответить

    Таких горе-разработчиков стрелять надо…
    Зачем писать то, что вы не понимаете?

    >if (isset($_POST['$name'])) {$name = $_POST['$name'];}
    Это уже полнейший маразм!

  15. Илья Антипенко Ответить

    Алексей [Йа НяшкО XD] Сонькин, работать оно будет т.к. в mail используются $_POST['name'] а не тот бред из ифов.

  16. Алексей Сонькин Ответить

    а, я туда не посмотрел =D

  17. Артём Викторович Ответить

    Антон Дятлов, если я впишу в поле "имя" что-то ~ вроде <script>alert('Ляля');</script>, ты это без проверки запишешь в базу, потом выведешь на страницу… Получится, мягко говоря, некрасиво.

    По теме, "хэдэр" сработает только если на странице ничего не выведено до его вызова, с тэгом "мета" можно редиректнуть после, и с таймером, но если до вывода "хэдэр" используй.

  18. Антон Дятлов Ответить

    Есть одна проблемка) Когда отсылаю с формы заказа на gmail то русский язык нормально отображается, но когда отсылаю в почту на хосте, ты приходит:
    Àâòîð íàçâàëñÿ: Äÿòëîâ
    Óêàçàë ñâîé àäðåñ: …l@zeos.net
    Óêàçàë ñâîé òåëåôîí: 65745684566
    Óêàçàë ñâîé Skype: dan
    Óêàçàë ñâîé ICQ: 65834608764867
    Çàêàçàë: Ñòàòè÷íûé áàííåð (120 x 600)
    Îïèñàíèå çàêàçà: ÷òî áû áûëî êðóòî)
    Какпонял это чето с кодировками (но не почти, а самой формы, потому что с почты на почту отсылается норм)
    Можно ли прописать <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> в php???

  19. Артём Викторович Ответить

    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> прописывай в теле письма, между тэгов хэд.

  20. Антон Дятлов Ответить

    ты не понял не в html странице, а в php. У меня не распознается не на странице, а текст письма который приходит на почту…..

  21. Антон Дятлов Ответить

    Мне предложили прописать в php
    header( "Content-type: text/html; charset=\"windows-1251\"" );

    Но не чего не помогло………..

Ответить