Семейство функций ereg()
устарело. используйте вместо этого preg_...()
эквиваленты. Они работают практически одинаково, за исключением необходимости использовать разделители вокруг шаблонов совпадений.
Также не используйте PHP_SELF
в своей форме. Это значение представляет собой необработанные данные, предоставленные пользователем, и может быть тривиально извращено для атаки XSS.
Проверка определенного поля формы, чтобы увидеть, является ли возникновение POST несколько ненадежным - вы можете изменить имя поля позже, и ваша проверка не удастся. Тем не менее, это
if ($_SERVER['REQUEST_METHOD'] == 'POST) { ... }
всегда будет работать, независимо от того, сколько или мало полей в форме, до тех пор, пока форма фактически была отправлена.
Что касается реальной проблемы, я предполагаю, что почта отправляется, или вы бы пожаловались на это. Это означает, что ваши переменные не заполняются должным образом. Вместо того, чтобы просто отправлять почту, выводите различные переменные по мере их создания, что-то вроде:
echo 'Checking name';
if ($_POST['name'] .....) {
echo 'name is blank';
} else {
$name = ...;
echo "Found name=$name";
}
По сути, ваш код стал очень "болтливым" и сообщал вам, что он делает на каждом этапе.