За последние 24 часа нас посетили 22502 программиста и 1201 робот. Сейчас ищут 725 программистов ...

Некорректно осуществляется вывод информации после отправки

Тема в разделе "PHP для новичков", создана пользователем DimaP, 24 авг 2016.

  1. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    Проблема заключается в следующем: после нажатия кнопки "отправить" на экран выводится информация в неправильном виде (выводится всё сразу, на циклы внимание не обращается). + сообщения об отправке или об ошибке выводятся на отдельной страницу, а не до формы. + не понятно, как делать ссылку "отправить ещё раз"

    HTML:
    1.  
    2. <!DOCTYPE HTML>
    3.  
    4.  
    5.    <meta charset=UTF-8>
    6.    <title>DZ14</title>
    7.    </head>
    8.  
    9.  
    10. <div id="wrap">
    11.  
    12.    <!--Сверстать форму с полями: ваше имя, ваш емейл, ваш телефон (не обязательно), сообщение, отправить. После отправки пользователь видит сообщение об успешной отправке и письмо приходит на емейл, указанный в настройках, например: lamben@ya.ru со всеми введенными данными.
    13.   1. сообщения (об ошибке, об отправке, незаполненных полях) выводить ДО формы
    14.   2. сообщения выводить в красивой рамке (на зеленом фоне успешная отправка, на красном - ошибки)
    15.   3. если отправлено, то не выводить форму, показать сообщение "ваше сообщение успешно отправлено." и ссылку "отправить еще раз"
    16.   4. если отправлено делать редирект, чтобы нажав F5 сообщение не отправилось
    17.   5. проверять введенные данные, даже если атрибут required не поддерживается браузером-->
    18.  
    19.    <div id="form">
    20.    <form method="post" name="form1" action="send.php">
    21.          
    22.      <p>Ваше имя:</p>
    23.      <p><input type="text" name="name" required></p>
    24.                
    25.      <p>Ваш емейл:</p>
    26.      <p><input type="text" name="email" required></p>
    27.                
    28.      <p>Ваш телефон:</p>
    29.      <p><input type="text" name="phone"></p>
    30.        
    31.      <p>Сообщение:</p>
    32.      <p><textarea name="text" required></textarea></p>
    33.  
    34.      <input type="submit" name="send" value="Отправить" id="sub">
    35.  
    36.    </form>
    37.    </div>    
    38. </div>
    39.  
    40. </body>
    41.  
    42. </html>
    43.  
    44.  


    PHP:
    1. <?php
    2.  
    3.  
    4.  
    5. $to  = 'unibix@ya.ru'
    6.  
    7.  
    8. $subject = 'Форма обратной связи';
    9.  
    10.  
    11. $message = 'Имя' . $_POST['name'] . '<br />' . 'Емейл' . $_POST['email'] . '<br/>' . 'Телефон' . $_POST['phone'] . '<br/>' . 'Сообщение' . $_POST['text'];
    12.  
    13.  
    14. $headers  = 'MIME-Version: 1.0' . "\r\n";
    15. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    16.  
    17.  
    18. mail($to, $subject, $message, $headers);
    19.  
    20.  
    21. $mail = mail($to, $subject, $message, $headers);
    22.  
    23. if($mail){
    24.    echo <div class="yes">'Ваше сообщение успешно отправлено.'</div>;
    25. }
    26. else{
    27.    echo <div class="no">'При отправлении письма произошла ошибка. Письмо не доставлено'</div>;
    28. }
    29.  
    30.  
    31. ?>

    Код (CSS):
    1. .yes {
    2.    background:green;
    3.    border:1px solid black;
    4. }
    5.  
    6. .no {
    7.    background:red;
    8.    border:1px solid black;
    9. }
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Чувак. Сиди, пожалуйста, в "новичках". Не лезь в контекстные разделы, пока не понимаешь основ.
     
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @DimaP У тебя здесь нет циклов!

    if/else - это не циклы. Это условные операторы.
    и ещё что это за хрень

    PHP:
    1. mail($to, $subject, $message, $headers);
    2. $mail = mail($to, $subject, $message, $headers);
    Ты пытаешься два раза отправить? Или ты думаешь, а я даже не знаю как местом ты думаешь...
    Смотри внимательно объясняю на пальцах:
    При вызове функции, плевать где: хоть так if(mail()) , хоть так $mail = mail()
    php сначала вызовет функцию, а потом уже сделает последующие действия.
    При этом при вызове процедуры в данном случае будет синтаксическая ошибка, но функции вызывать можно как угодно.

    Откуда ты отправляешь сообщение на почту? С локалки или с хоста?

    Твой php код хранится в файле send.php?

    И ещё заключи весь код в файле send.php в такую вот конструкцию :

    PHP:
    1. if(isset($_POST['send']))
    2. {
    3.        // тут уже делай проверку получаемых данных и их отправку.
    4. }