Этот вопрос уже имеет ответ здесь:
Существует ли эквивалент mysql_real_escape_string () для почтовой инжекции? У меня есть форма, где пользователь отправляет их электронную почту. Я боюсь, что кто-то мог вставить список разделенных запятой значений электронных писем и использовать мой сайт для спама.
Вы можете использовать filter_var
, чтобы подтвердить адрес электронной почты:
if (!filter_var($address, FILTER_VALIDATE_EMAIL)) {
// invalid e-mail address
}
Если ваша основная проблема заключается в том, как говорится в вопросе, чтобы убедиться, что пользователи не пытались обманом заставить вас рассылать спам, вводя список адресов, разделенных запятыми, то это не очевидный ответ, чтобы просто проверить, есть ли какие-либо запятые во вводе пользователя ?
Просто проверяйте поле против обычно найденного регулярного выражения для одного адреса электронной почты
function validate_email($e){
return (bool)preg_match("`^[a-z0-9!#$%&'*+\/=?^_\`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_\`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$`i", trim($e));
}