Оператор else
, который содержит код отправки электронного письма, связан только с оператором предыдущий if
.Это означает, что единственный раз, когда он будет не вызван, это если $secword == $_SESSION['instance']
оценивается как false
.Не имеет значения, успешны ли другие проверки правильности или нет.
Одна стратегия состоит в том, чтобы отслеживать все ошибки, которые произошли, сохраняя их в массиве.Если массив пуст, то вы знаете, что все поля в порядке и отправка электронного письма безопасна:
$errors = array();
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
$errors[] = 'invalid email address';
}
if (strlen($firstname < 2)) {
$errors[] = 'Please enter your first name';
}
//...
if (count($errors) == 0){
//send the email
mail(...);
} else {
//display the error messages
}
В противном случае ваш код выглядит довольно хорошо!Вот некоторые другие предложения:
Чтобы использовать сеансы в PHP, вы должны сначала вызвать функцию session_start()
.Это должно быть самое первое, что делает ваш PHP-скрипт.
Функция ereg()
устарела в последней версии PHP.Это означает, что функция может быть удалена в будущей версии PHP.Вместо этого рекомендуется использовать функцию preg_match()
(обратите внимание, что при preg_match()
строка регулярного выражения должна начинаться и заканчиваться символом /
).