Если я разрешаю пользователю вводить адрес электронной почты для сохранения в базу данных, следует ли использовать is_email()
или sanitize_email()
?
Ex.
update_user_meta( $user_id, $social_site, sanitize_email( $_POST[$user_input] ) );
is_email()
возьмет предоставленную строку (адрес электронной почты) и проверит ее, чтобы убедиться, что она действительно является адресом электронной почты и что в ней нет незаконных символов. Это просто ничего не изменит в строке, которую вы указали, но верните либо true
если строка передает все проверки функции или false
если это не так.
sanitize_email()
возьмет предоставленную строку и вычеркнет любые символы, которые не разрешены в адресе электронной почты, и возвращают только символы, которые разрешены.
Поэтому, если у вас есть строка, которая должна быть электронной почтой, например: user"!@provider.com
is_email()
возвращает false
поскольку строка содержит символы, которые не разрешены в адресе электронной почты.
sanitize_email()
вернет user!@provider.com
Если вы берете user"!@provider.com
и сначала запускаете его через функцию sanitize_email()
а затем через is_email()
он тогда возвращает true
в этом случае, поскольку все недопустимые символы удаляются из строки, и это позволяет чтобы передать is_email()
.
Я бы предложил использовать оба метода is_email (), чтобы сначала проверить, правильно ли он отправил правильный адрес электронной почты и до того, как он что-либо внес в базу данных, действительно ли это безопасно, выполнив функцию sanitize_email () в самой последней возможной точке вашего скрипта.