Вот весьма простое воплощение того, что я объяснял:
<?php // удаление всех глобальных переменных, созданных register_globals=on while ( list( $global ) = each( $GLOBALS ) ) { if ( !preg_match( '/^(_POST|_GET|_COOKIE|_SERVER|_FILES|GLOBALS|HTTP.*|_REQUEST)$/', $global ) ) { unset( $$global ); } } unset($global); // проверка на наличие аргументов if ( !isset( $_POST['field1'] ) || !isset( $_POST['field2'] ) ) { die( "Недостаточно параметров." ); } // для простоты $f1 = $_POST['field1']; $f2 = $_POST['field2']; /* проверка на формат аргументов '/^[a-zа-я0-9_\s]{1,200}$/i': регистронезависимо, русские и латинские буквы, цифры, подчеркивание и пробельные символы, длина от 1 до 200 символов */ if ( !preg_match( '/^[a-zа-я0-9_\s]{1,200}$/i', $f1 ) || !preg_match( '/^[a-zа-я0-9_\s]{1,200}$/i', $f2 ) ) { die( "Неверный формат параметров." ); } // составление письма $msg = "Field1: $f1\nField2: $f2"; $msg = wordwrap( $msg, 70 ); // посылка письма if ( !mail( 'Somebody <smbdy@domain.ru>', 'Subject', $msg, 'From: noreply@domain.ru' ) ) { die( "Ошибка при отправке e-mail." ); } // редирект, если все хорошо // (если нет, то до сюда бы не дошло) header( 'Location: /mailsent.html' );
Ток предупреждаю, сам я это не запускал , но все должно быть ок.
Конкретно в этом случае форма отправки будет типа того:
<form action="mail.php" method="post"> <input type="text" name="field1" /><br /> <input type="text" name="field2" /><br /> <input type="submit" value="Send" /> </form>
Если скрипт оставлять как есть (ну не считая полей), то по-хорошему надо javascript'ом проверять данные в форме перед отправкой. Потому что если что-то не так, юзер увидит просто пустой экран с сообщением об ошибке.
Также можно изменить показ ошибки отправления письма, вместо die() сделать:
header( 'Location: /mailerr.html' ); exit();