У меня есть форма, которая отправляет переменные в сценарий обработки 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
Что я делаю неправильно? Я где-то испортил свой синтаксис?
Синтаксис кажется хорошим. Я думаю, что ваша проблема в том, что вы не заканчиваете свой скрипт после установки заголовка. Измените это на:
if (condition) {
header('Location: www.example.com');
exit();
}
Узнайте, как отлаживать свой код, вы можете просто повторить что-то, чтобы знать, вводите ли вы структуру или нет. Хорошей практикой также является создание функции для перенаправления страниц, она быстрая, чистая и сохраняет несколько строк:
function redirect($page){
header('Location: http://'.$_SERVER['HTTP_HOST']."/$page.php");
exit();
}
Других решений пока нет …