Обучение/Помощь новичкам | FILTER_VALIDATE_EMAIL
Тема закрыта by
SNEG
Нужно экранировать $_POST['email'] перед передачей в бд или выводом в браузер ? Типа echo htmlspecialchars($_POST['email']);
________
посл. ред. 18.12.2023 в 22:29; всего 8 раз(а); by SNEG
php
elseif(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) ________
посл. ред. 18.12.2023 в 22:29; всего 8 раз(а); by SNEG
Нужно экранировать $_POST['email'] перед передачей в бд или выводом в браузер ? Типа echo htmlspecialchars($_POST['email']);
php
elseif(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
Да, нужно экранировать $_POST['email'] перед передачей в бд или выводом в браузер. Экранирование символов предотвращает выполнение вредоносного кода, который может быть введён в форму. В вашем примере, функция htmlspecialchars() экранирует все специальные символы в строке, такие как <, >, &, " и '. Это необходимо, чтобы предотвратить инъекции HTML, JavaScript или других вредоносных кодов в браузер. Функция filter_var() проверяет, является ли строка допустимым адресом электронной почты. Если строка не является допустимым адресом электронной почты, то она не будет экранирована. В идеале, экранирование следует выполнять в обоих случаях, перед передачей в бд и перед выводом в браузер. Вот пример того, как можно экранировать $_POST['email'] перед передачей в бд: Вот пример того, как можно экранировать $_POST['email'] перед выводом в браузер:
php
$email = htmlspecialchars($_POST['email']); // ... // Перед передачей в бд $stmt = $db->prepare("INSERT INTO users (email) VALUES (?)"); $stmt->bind_param("s", $email); $stmt->execute(); php
$email = htmlspecialchars($_POST['email']); // ... // Вывод в браузер echo "Ваш адрес электронной почты: $email"; php
if(mysqli_query($mysqli, "INSERT INTO `".DB_PREFIX."_users` SET `email` = '".$_POST['email']."'"))
php
<?php $email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL); if ($email) { // success } ________
посл. ред. 19.12.2023 в 01:03; всего 2 раз(а); by PTS
php
<?php $email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL); if ($email) { // success } Таким не пользуюсь))