HTML-форма, указывающая на файл PHP или включающий файл PHP

Который имеет более высокий уровень безопасности?

Включение файла PHP на веб-странице для использования формы или направление пользователя в файл PHP при нажатии кнопки формы?

Пример 1: включить «имя файла»;
Пример 2: form action = «sendtheuserhere.php» method = «post»

Спасибо

0

Решение

Как правило, не имеет значения, включаете ли вы код PHP, который обрабатывает данные формы, в файл, который содержит форму, или же для этой цели нужен отдельный файл PHP.

Важно то, как вы обрабатываете данные формы. Ниже приведен пример:

form.php — имеет форму HTML

<html>
<head></head>
<body>
<form action="send.php" method="post">
<input name="subject" />
<textarea name="message"></textarea>
<button>Send</button>
</form>
</body>
</html>

send.php — обрабатывает данные формы

<?php

$user_subject = $_POST['subject'];
$user_message = $_POST['message'];

$send_to = 'myemail@gmail.com';

mail($send_to, $user_subject, $subject_message);

?>

Теперь с приведенным выше кодом есть пара вещей, которые вы должны знать.

  1. Файл send.php имеет небезопасный код.
  2. Посещение send.php отправит электронное письмо на адрес $ send_to независимо от того, кто-то заполняет форму или нет.

Теперь, если вам придется разделять файлы, каждый раз, когда вы посещаете файл send.php, будет отправлено электронное письмо. То есть, заполняете ли вы форму или просто заходите по ссылке send.php.

Во-вторых, если вы объедините два файла, вам будет отправляться электронное письмо каждый раз, когда кто-то открывает вашу форму. Это потому что mail(); функция срабатывает каждый раз.

Чтобы бороться с этим, вы должны убедиться, что функция почты срабатывает только при отправке формы. Вы можете сделать это, изменив код в send.php следующим образом:

новый send.php

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") { // checks whether a POST request actually exists or not.

$user_subject = strip_tags(trim($_POST['subject']));
$user_message = strip_tags(trim($_POST['message']));

$send_to = 'myemail@gmail.com';

mail($send_to, $user_subject, $subject_message);

} else {
echo 'form not filled';
}
?>

Теперь, в приведенном выше коде, первое, что мы сделали, это проверили, действительно ли существует запрос POST. Если нет, вы увидите «Форма не заполнена». После этого, чтобы сделать запрос немного более безопасным для любого вида инъекции кода мы использовали PHP trim(); а также strip_tags(); функция.

Вы можете объединить два файла PHP следующим образом:

form.php

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") { // checks whether a POST request actually exists or not.

$user_subject = strip_tags(trim($_POST['subject']));
$user_message = strip_tags(trim($_POST['message']));

$send_to = 'myemail@gmail.com';

mail($send_to, $user_subject, $subject_message);

}

?>

<html>
<head></head>
<body>
<form action="form.php" method="post">
<input name="subject" />
<textarea name="message"></textarea>
<button>Send</button>
</form>
</body>
</html>
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector