@VMorello

Как изменить универсальную форму отправки писем?

Здравствуйте!

Есть стандартная и большинству известная форма обратной связи для отправки писем, выглядит она так:

HTML
<form class="message__form" action="mail" method="post">
        <!-- Hidden Required Fields -->
      		<input type="hidden" name="project_name" value="Site Name">
      		<input type="hidden" name="admin_email" value="......@gmail.com">
      		<input type="hidden" name="form_subject" value="Form Subject">
    		<!-- END Hidden Required Fields -->
        <p>
          <label class="visually-hidden" for="name">Ваше имя</label>
          <input class="name" id="name" type="text" name="name" value="" placeholder="Ваше имя" required>
        </p>
        <p>
          <label class="visually-hidden" for="phone">Ваше телефон</label>
          <input class="phone" id="phone" type="text" name="phone" value="" placeholder="Ваше телефон" required>
        </p>
        <button class="button-send button" type="submit" name="button">Отправить</button>
      </form>


JS
$("form").submit(function() { //Change
    var th = $(this);
    $.ajax({
      type: "POST",
      url: "mail.php", //Change
      data: th.serialize()
    }).done(function() {
      alert("Thank you!");
      setTimeout(function() {
        // Done Functions
        th.trigger("reset");
      }, 1000);
    });
    return false;
  });


PHP
<?php
$method = $_SERVER['REQUEST_METHOD'];
//Script Foreach
$c = true;
if ( $method === 'POST' ) {
  $project_name = trim($_POST["project_name"]);
  $admin_email  = trim($_POST["admin_email"]);
  $form_subject = trim($_POST["form_subject"]);
  foreach ( $_POST as $key => $value ) {
    if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
      $message .= "
      " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
        <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
        <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
      </tr>
      ";
    }
  }
} else if ( $method === 'GET' ) {
  $project_name = trim($_GET["project_name"]);
  $admin_email  = trim($_GET["admin_email"]);
  $form_subject = trim($_GET["form_subject"]);
  foreach ( $_GET as $key => $value ) {
    if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
      $message .= "
      " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
        <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
        <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
      </tr>
      ";
    }
  }
}
$message = "<table style='width: 100%;'>$message</table>";
function adopt($text) {
  return '=?UTF-8?B?'.Base64_encode($text).'?=';
}
$headers = "MIME-Version: 1.0" . PHP_EOL .
"Content-Type: text/html; charset=utf-8" . PHP_EOL .
'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
'Reply-To: '.$admin_email.'' . PHP_EOL;
mail($admin_email, adopt($form_subject), $message, $headers );


Собственно сам вопрос:

Какие есть варианты переноса данных (val) о: project_name, admin_email, form_subject - с HTML (который просвечивается и можно запросто увидеть почту админа куда приходят сообщения) в PHP код который нельзя вскрыть.

Буду благодарен за ответ!
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 1
Prynik
@Prynik
А зачем хранить вот это на странице?
<input type="hidden" name="project_name" value="Site Name">
<input type="hidden" name="admin_email" value="......@gmail.com">
<input type="hidden" name="form_subject" value="Form Subject">

Можно ведь сразу указать переменные
$project_name = "project_name";
$admin_email  = "e-mail@ex.ru";
$form_subject = "Form_Subject";

Если у вас несколько форм на одном сайте с разными значениями $project_name, $admin_email, $form_subject, то можно указать так
<input type="hidden" name="project_name" value="project_name">

Заранее в БД определить значения $project_name, $admin_email, $form_subject для каждой формы и по значению из project_name доставать необходимые данные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы