Лендинг, php скрипт отправки почты

136
11 марта 2019, 11:00

Возник вопрос как реализовать правильно функционал.

У меня имеется страница html с формой.

<div class="inner cover">
        <form role="form" action="send.php" method="post">
            <div class="form-group">
                <label>ФИО</label>
                <input class="form-control" type="text" name="fio" placeholder="Укажите ФИО" required>
            </div>
            <div class="form-group">
                <label>Телефон</label>
                <input class="form-control" type="text" name="telephone" placeholder="Укажите телефон" required>
            </div>
            <button type="submit" class="btn btn-default">Отправить</button>
        </form>
      </div>

Файл send.php содержит тестовый код:

<?php
  $fio = $_POST['fio'];
  $telephone = $_POST['telephone'];
  $fio = htmlspecialchars($fio);
  $telephone = htmlspecialchars($telephone);
  $fio = urldecode($fio);
  $telephone = urldecode($telephone);
  $fio = trim($fio);
  $telephone = trim($telephone);
  mail("mail@example.com", "Заявка с сайта", "ФИО:".$fio.". Телефон: ".$telephone ,"From: mail@example.com \r\n");

readfile('index.html')?>

При нажатии на отправить, url c host:/ меняется на host:/send.php

Как избавиться от этого перехода?

Я вижу решение в виде написания js, который по нажатию на "отправить" пошлет post запрос в send.php, который вернет в свою очередь json и на странице отображу результат операции (пока уведомления не прописывал).

Может есть более нормальные варианты? Как будет лучше реализовать данную идею?

Answer 1

В form не указывать:

action="send.php" 

Решить можно через ajax:

$('.btn-default').on('click',function(){
    let in_1 = $('input[name="fio"]').val();
    let in_2 = $('input[name="telephone"]').val();
    $.post(url,{fio:in_1,tel:in_2},function(data){ 
     //do something
    });
});

Как то так)

Отловить нажатие кнопки:

if (isset($_POST["submit"])){
    // do somthing
}
READ ALSO
Как добавить текст через js в html

Как добавить текст через js в html

Мне нужно в пустой элемент p с классом country вставить текст через jsТакой код почему то не работает:

207
Сравнение высоты и ширины элемента

Сравнение высоты и ширины элемента

Хочу сделать условие, при котором в консоль браузера будет выводиться текст в зависимости от ориентации изображения

134