qnixnet
@qnixnet

Достаточно ли такой проверки почтового ящика?

Господа знатоки, просьба уточнить. Отсеет ли filter_input() возможные передачи инъекций в БД вместе с почтой или лучше добавить еще htmlspecialchars()?

Из офф сайта:
FILTER_VALIDATE_EMAIL - "Проверяет, что значение является корректным e-mail. В целом, происходит проверка синтаксиса адреса в соответствии с RFC 822, за исключением того, что не поддерживаются комментарии, схлопывание пробельных символов и доменные имена без точек."

Проверка при авторизации:
if( isset($_POST['email']) ){
            $email['email'] = filter_input( INPUT_POST, 'email', FILTER_VALIDATE_EMAIL );
            $email['email'] = htmlspecialchars( $email['email'], ENT_QUOTES );

            if( $email['email'] ){
                $email['email'] = strtolower($email['email']);
                $result_query = $mysqli->query( "SELECT `username` FROM `mailbox` WHERE `username`='".$email['email']."'" );

                if( !$result_query ){
                    $error_message->getErrorMessage( 'Ошибка запроса при проверке имени пользователя в базе данных' );
                }else{
                    if($result_query->num_rows != 1){
                        $error_message->getErrorMessage('Такой пользователь не зарегистрирован');
                    }

                    $result_query->close();
                }
            }else{
                $error_message->getErrorMessage('Имя пользователя указано неверно');
            }
        }else{
            $error_message->getErrorMessage('Отсутствует поле имени пользователя');
        }
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
@galaxy
"Рубанком обстрогал, но точно ли дрова будут хорошо гореть в печке? Может, пару гвоздей вбить?"

Что за вопросы, блин?

1. Чтобы не было SQL-инъекций, используй mysqli::prepare + execute(). На худой конец mysqli_real_escape_string().

2. htmlspecialchars вообще нужна при выводе строк в браузер, тут она просто данные испортить может.

3. FILTER_VALIDATE_EMAIL проверяет валидность емейл адреса (хоть и, как они честно пишут, не по совсем канону). Этой проверки в 99% достаточно, существование конкретного email так все равно не проверить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы