За последние 24 часа нас посетили 96770 программистов и 7975 роботов. Сейчас ищут 2016 программистов ...

форма отправки письма

Тема в разделе "PHP для новичков", создана пользователем natalya.jpg, 16 фев 2018.

  1. natalya.jpg

    natalya.jpg Новичок

    С нами с:
    16 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте, помогите написать php файл для формы отправки письма. Я скачала шаблон сайта, все получилось, но не получается отправку сообщений наладить. Вот html код

    <form name="contactForm" id="contactForm" method="post" action="" novalidate="novalidate">
    <fieldset>

    <div class="form-field">
    <input name="contactName" type="text" id="contactName" placeholder="Your Name" value="" minlength="2" required="" aria-required="true" class="full-width">
    </div>
    <div class="form-field">
    <input name="contactEmail" type="email" id="contactEmail" placeholder="Your Email" value="" required="" aria-required="true" class="full-width">
    </div>
    <div class="form-field">
    <input name="contactSubject" type="text" id="contactSubject" placeholder="Subject" value="" class="full-width">
    </div>
    <div class="form-field">
    <textarea name="contactMessage" id="contactMessage" placeholder="Your Message" rows="10" cols="50" required="" aria-required="true" class="full-width"></textarea>
    </div>
    <div class="form-field">
    <button class="full-width btn--primary">Submit</button>
    <div class="submit-loader">
    <div class="text-loader">Sending...</div>
    <div class="s-loader">
    <div class="bounce1"></div>
    <div class="bounce2"></div>
    <div class="bounce3"></div>
    </div>
    </div>
    </div>

    </fieldset>
    </form>
     
  2. gruth

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

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    В action в теге form нужно указать путь к скрипту обработки запроса, если ни чего не ставить то будет отправлять на себя же.
    В твоем случае это скорее всего html файл а нужен php
     
  3. natalya.jpg

    natalya.jpg Новичок

    С нами с:
    16 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    у меня вот такой есть скрипт, его можно исправить для этой формы?

    <?php

    //чтение данныйх из формы
    $header = $name = $_POST['name']; //имя
    $email = $_POST['email']; //e-mail
    //$phone = $_POST['phone']; телефон
    //$header = $address = $_POST['address']; адрес
    //$length = $_POST['length']; Длина помещения, м
    //$width = $_POST['width']; Ширина помещения, м
    //$height = $_POST['height']; Высота помещения, м
    $message = $_POST['message']; //тело сообщения

    //-----------------------------------------------

    function _mail ($from, $to, $subj, $what)
    {
    mail($to, $subj, $what,
    "From: $from
    Reply-To: $from
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8bit"
    );
    }

    $text = "Имя: " . $name . "\r\n";
    $text .= "e-mail: " . $email . "\r\n";
    //$text .= "телефон: " . $phone . "\r\n";
    //$text .= "Адрес: " . $address . "\r\n";
    //$text .= "Длина помещения, м: " . $length . "\r\n";
    //$text .= "Ширина помещения, м: " . $width . "\r\n";
    //$text .= "Высота помещения, м: " . $height . "\r\n";
    $text .= $message;

    //echo $text;

    _mail ('natalya.jpg@ayayayay.ru', 'natalya.jpg@гугугугуг.ru', $header, $text);



    ?>
     
  4. gruth

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

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    В инпутах есть тег name, он передается в пост массив как ключ, а value как значение. Так что да, вполне можно переделать
     
  5. Рихард

    Рихард Новичок

    С нами с:
    13 янв 2018
    Сообщения:
    84
    Симпатии:
    6
    Тут надо Вам HTML изучать основы а потом уже о функции mail думать, откуда вы отправляете, с локального или хоста.как настроен сервер и тп.
    --- Добавлено ---
    надо в начале правильно принимать данные с формы HTML:
    1. Указать правильные данные для тега action
    2. Имена в тегах инпут должны совпадать с именами глобального массива в PHP скрипте
    3. Присвоить данным с метода пост глобального массива переменным которые твоей душе угодно.
    4. настроить сервер если с локального отправляешь и проверить функцию включена ли она у тебя вообще
     
  6. natalya.jpg

    natalya.jpg Новичок

    С нами с:
    16 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    Рихард, gruth, спасибо ответ, я знаю основы html, а где можно почитать на эту тему хорошую статью или небольшую книгу? Я по специальности художник, но все время мне приходится иметь дело с подобными проблемами, весь язык php мне сложно будет выучить.
     
  7. Рихард

    Рихард Новичок

    С нами с:
    13 янв 2018
    Сообщения:
    84
    Симпатии:
    6
    https://php.ru/manual/function.mail.html
    Прежде чем приступать к функции самой в скрипте <?php ?> приведите в порядок вашу
    HTML форму:
    1. В теге action = " Укажите где будет приниматься для обработки данные переданные с формы"
    То есть Если у Вас сценарий находится в файле index.php то пишите action="index.php" при условии что и форма и сценарий находятся в одной папке, но лучше в этом теге писать так
    action=$_SERVER['PHP_SELF']
    2. То что вы отправляли с формы примерно в таком теге <input name = "Имя"
    В PHP значение которые вы ввели в форму под названием <input name = "Имя" будет содержатся
    в такой штуке под названием массив как $_POST['имя']
    3. ЧТоб ы по человечески использоваться функцию вы должны отправленные инфо с первой формы упаковать в ящики
    под названием перменные взяв предварительно это с такой штуки как массив
    ТО есть схема такова
    <input name="имя">
    превращается в PHP в такую штуку
    <?php $_POST['имя'] ?>
    а потом в самом PHP упаковываете ее в ящики переменные
    <?php $name=$_POST['Имя'] ?>
    А потом уже читаете вот эту штуку
    https://php.ru/manual/function.mail.html
    Чтобы знать какой ящик (переменную в какое место функции вводить)
    Если все равно не запускается то вообще интересно стоит ли у вас вообще PHP и откуда вообще вы отправляете с локального компа или с хоста сайта, настроиваете вебсервер проверяете включена ли у вас эта функция и тп
     
  8. natalya.jpg

    natalya.jpg Новичок

    С нами с:
    16 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    Понятно, что ничего не понятно, все равно спасибо! :)
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @Рихард, нафиг пустое переприсваивание делать? Лучше бы существование POST-параметра проверили.

    @natalya.jpg, это вам не яичницу поджарить. Обратитесь к специалисту или становитесь им сами, если есть несколько лет в запасе.
     
  10. natalya.jpg

    natalya.jpg Новичок

    С нами с:
    16 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    У меня кроме яичницы еще 2 высших образования) обращусь куда мне нужно без ваших цу.

    Более не нужно писать в эту тему.
     
    #10 natalya.jpg, 19 фев 2018
    Последнее редактирование: 19 фев 2018
  11. Рихард

    Рихард Новичок

    С нами с:
    13 янв 2018
    Сообщения:
    84
    Симпатии:
    6
    согласен что должно быть
    if(isset($_POST['submit']) перед присваиванием.

    Просто моя запись сводилась к тому что перед этими проверками надо еще логически форму HTML соединить со скриптом.
    Так как по выше написано я понял что задающий этот вопрос не может этого сделать
    а в идеале то можно еще так:
    сырой вариант
    <?php
    class form{

    public $name;

    public $lastname;

    public function validation(){
    if(isset($_POST['submit'])) {
    ......Валидация
    }
    }

    public function prisvaivanie(){
    if($this->validayion()){
    ..присваивание если валидация в норме
    }
    }

    public function otpravka($name,$lastname,$to,$from){
    if($this->prisvaivanie){
    mail();.... Отправка если присваивание прошло
    }

    }

    $form=new page();
    $form->otpravka;
    --- Добавлено ---
    а вы не обижайтесь,тут люди разные бывают .
    странно только почему опытные разработчики молчат