Как сделать безопасную отправку почты PHP для HTML-форм?

  • Автор темы megapixel_777
  • 20
  • Обновлено
  • 15, May 2024
  • #1
Привет. У меня есть отвратительный сценарий отправки почты с веб-сайта друга, и я хочу заменить его на безопасную версию. Я просмотрел Google, но из-за большого количества дезинформации не знаю, что делать.

Фактический код:
 

$first_name = $_POST['nombre'];

$email_from = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);

$telephone = $_POST['telefono'];

$comments = $_POST['mensaje'];

$email_message = "Nombre: ". $first_name ."\n";

$email_message .= "Email: ". $email_from ."\n";

$email_message .= "Telephone: ". $telephone ."\n";

$email_message .= "Comments: ". $comments ."\n";

// create email headers

$headers = 'From: '.$email_from."\r\n".

'Reply-To: '.$email_from."\r\n" .

'X-Mailer: PHP/' . phpversion();

@mail($email_to, $email_subject, $email_message, $headers);

Код (разметка): Я добавил эту часть filter_var в $email_from, но хочу знать, как правильно выполнить эту программу.

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

megapixel_777


Рег
01 Jan, 2011

Тем
1

Постов
3

Баллов
13
  • 18, May 2024
  • #2
Пока вы разрешаете пользователям отправлять сообщения на любое электронное письмо, которое может быть использовано для рассылки спама, простого способа обойти эту проблему не существует. reCaptcha, вероятно, лучший инструмент для защиты от спама, но его можно обойти. https://www.google.com/recaptcha/intro/index.html

Но не позволяйте случайным людям решать, куда отправить электронное письмо, особенно если они также могут ввести сообщение. Это приведет только к злоупотреблениям и спаму с вашего сервера.
 

Любовь2


Рег
08 Feb, 2014

Тем
1

Постов
3

Баллов
13
  • 10, Jun 2024
  • #3
HTML-форма и весь сайт – это неизбежная катастрофа, и сайт необходимо уничтожить. Я собираюсь следовать http://cutcodedown.com/tutorial/forms_part1

чтобы сделать форму из stratch, но мне нужно знать, как правильно составить PHP-скрипт. Фактический код с сайта моего друга таков (не мной):
 

<?php

if(isset($_POST['email'])) {

$email_to = "xxxxxxxxxxxxxxxx";

if( !isset($_POST['asunto']) )

$email_subject = "Mail desde xxxxxxxxx";

else

$email_subject = $_POST['asunto'];

function died($error) {

// your error code can go here

echo "We are very sorry, but there were error(s) found with the form you submitted. ";

echo "These errors appear below.<br /><br />";

echo $error."<br /><br />";

echo "Please go back and fix these errors.<br /><br />";

die();

}

$first_name = $_POST['nombre']; // required

$email_from = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); // required

$telephone = $_POST['telefono']; // not required

$comments = $_POST['mensaje']; // required

$email_message = "Nombre: ". $first_name ."\n";

$email_message .= "Email: ". $email_from ."\n";

$email_message .= "Telephone: ". $telephone ."\n";

$email_message .= "Comments: ". $comments ."\n";

// create email headers

$headers = 'From: '.$email_from."\r\n".

'Reply-To: '.$email_from."\r\n" .

'X-Mailer: PHP/' . phpversion();

@mail($email_to, $email_subject, $email_message, $headers);

?>

<!-- include your own success html here -->

Gracias por contactar con nosotros. Te responderemos lo antes posible. Hasta pronto!!

<script language="javascript">

setTimeout("top.location.href = 'index.php'",5000);

</script>

<?php

}

?>

Код (разметка): С точки зрения безопасности, лучше ли использовать Perl-скрипт вместо PHP? Я обдумываю это, поскольку это облегчит системное администрирование.
 

okc04121984


Рег
12 Feb, 2014

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966