Я абсолютный новичок в 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 нужны разделители, не уверен, правильно ли я их использовал. Кроме того, должно быть с учетом регистра, поэтому я добавил флаг я (без уверенности). Тем не менее, никакая реальная идея, если выше, на самом деле не будет правильной. Это кажется безопасным? Опять же, извинения за отсутствие знания PHP. Этот тип функций довольно распространен в онлайн-уроках, но с использованием eregi, а не preg_match.