формы — PHP, если оператор не работает должным образом с filter_var

У меня есть форма, которая отправляет переменные в сценарий обработки PHP.

Перед началом сценария обработки я хотел бы очистить опубликованные переменные:

$Contact_Name = filter_var($_POST['contactName'], FILTER_SANITIZE_STRING);
$Company = filter_var($_POST['company'], FILTER_SANITIZE_STRING);
$Telephone = filter_var($_POST['telephone'],FILTER_SANITIZE_NUMBER_INT);

До сих пор. Настолько хорошо.

Но очистка и проверка электронной почты — это настоящая боль.

$Email = $_POST['email'];
$Sanitised_Email = filter_var($Email, FILTER_SANITIZE_EMAIL);
$Email_is_valid = filter_var($Email, FILTER_VALIDATE_EMAIL);

Если $Sanitised_Email не то же самое, что $EmailЯ хочу вернуться на страницу формы:

if ($Sanitised_Email != $Email) {
header('Location: http://'.$_SERVER['HTTP_HOST'].'/form.php');
}

Если $Email_is_valid является falseЯ хочу вернуться на страницу формы:

if ($Email_is_valid == FALSE) {
header('Location: http://'.$_SERVER['HTTP_HOST'].'/form.php');
}

Ни один из этих двух if Заявления работают, когда я ввожу письмо, которое является недействительным и нуждается в дезинфекции, например:

i.am.(totally)invalid@asanemailaddress

Что я делаю неправильно? Я где-то испортил свой синтаксис?

1

Решение

Синтаксис кажется хорошим. Я думаю, что ваша проблема в том, что вы не заканчиваете свой скрипт после установки заголовка. Измените это на:

if (condition) {
header('Location: www.example.com');
exit();
}

Узнайте, как отлаживать свой код, вы можете просто повторить что-то, чтобы знать, вводите ли вы структуру или нет. Хорошей практикой также является создание функции для перенаправления страниц, она быстрая, чистая и сохраняет несколько строк:

function redirect($page){
header('Location: http://'.$_SERVER['HTTP_HOST']."/$page.php");
exit();
}
2

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

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

По вопросам рекламы [email protected]