Я абсолютный новичок в PHP, пытаюсь настроить проверку, чтобы остановить внедрение заголовка в контактную форму. Я прочитал много руководств и создал форму, которая должна проверяться, но она не работает... после небольшого исследования здесь кажется, что моя проблема в том, что код, который у меня есть, использует eregi (старый учебник), который должен быть preg_match в эти дни. Я использовал preg_match для проверки формата адреса электронной почты, но я хочу убедиться, что никакие разрывы строк, cc, bcc и т. д. не могут быть скрыты где угодно. Это функция, которая у меня есть сейчас:
function spamcheck($field) {
if(eregi("to:",$field) || eregi("cc:",$field) || eregi("Content-Type:",$field) || eregi("bcc:",$field) || eregi("%0D",$field) || eregi("\r",$field) || eregi("\n",$field) || eregi("%0A",$field)){
$possiblespam = TRUE;
}else $possiblespam = FALSE;
if ($possiblespam) {
die("Possible spam attempt detected. If this is not the case, please edit the content of the contact form and try again.");
return 1;
}
}
Теперь я не уверен, смогу ли я просто заменить eregi на preg_match вот так:
if(preg_match("/to:/i",$field)
// and so on for each string I want to catch
Я прочитал здесь, что preg_match нуждается в разделителях, не уверен, правильно ли я их использовал. Кроме того, должен быть чувствителен к регистру, поэтому я добавил флаг i (без уверенности). Тем не менее, нет реальной идеи, действительно ли вышеизложенное будет правильным. Это кажется безопасным? Еще раз прошу прощения за незнание PHP. Этот тип функций довольно часто встречается в онлайн-учебниках, но с использованием eregi, а не preg_match.