У меня есть форма на моей домашней странице, которая при отправке запускает внешний файл form.php, содержащий код ниже. Я тестирую MAMP, и перенаправление заголовка, похоже, не работает. URL-адрес просто застрял на URL-адресе form.php? Раньше у меня была функция эха, которая работала нормально !? Что я делаю не так? Пожалуйста, помогите, большое спасибо заранее
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$company = $_POST['company'];
$robots = $_POST['robots'];
$from = 'From: Blah Register Form';
$to = '[email protected]';
$subject = 'Blah Lead';
$body = "From: $name\n E-Mail: $email\n company: $company\n ";
if ($_POST['submit'] && $robots == '') {
if (mail ($to, $subject, $body, $from)) {
header("Location: http://google.com");
exit;
}
else {
echo '<p>Something went wrong, please try again</p>';
}
}
else if ($_POST['submit'] && $robots != '') {
echo 'Sorry, we don\'t like spammers here!';
}
?>
Вы условие не всегда будет разрешено true в обоих сценариях. Поэтому, если вы точно не знаете, что отправляется электронное письмо, вы не знаете, вызван ли какой-либо код. Это немного подтягивает его:
if($_POST['submit']) {
if ($robots == '') {
if (mail($to, $subject, $body, $from)) {
header("Location: http://google.com");
} else {
echo 'Something went wrong, please try again';
}
} else {
echo 'Sorry, we don\'t like spammers here!';
}
} else {
echo "submit was not set";
}
Потому что прямо сейчас у вас есть:
if ($_POST['submit'] && $robots == '') {
// send the email or whatever
} else if ($_POST['submit'] && $robots != '') {
echo 'Sorry, we don\'t like spammers here!';
}
это означает, что если $_POST['submit']
не задано, ни одно условие не будет истинным.
Я вижу пространство перед первым тегом php, и вы также не должны закрывать теги php. Это пространство означает, что контент отправляется перед заголовком.
Тем не менее, ваш оператор заголовка может быть неисправен по нескольким причинам (уже отправленные заголовки, предупреждение и т.д.). Одним быстрым грязным обходным путем является использование javascript для этого:
if (mail ($to, $subject, $body, $from)) {
echo '<script>location.href="http://www.google.com";</script>';
exit;
}
Надеюсь, что это сработает:
<?php
if($_POST) {
$name = mysql_real_escape_string(strip_tags($_POST['name']));
$email = mysql_real_escape_string(strip_tags($_POST['email']));
$company = mysql_real_escape_string(strip_tags($_POST['company']));
$robots = mysql_real_escape_string(strip_tags($_POST['robots']));
$from = 'From: Blah Register Form';
$to = '[email protected]';
$subject = 'Blah Lead';
$body = "From: $name\n E-Mail: $email\n company: $company\n ";
if($robots == '') {
$mail = mail($to, $subject, $body, $from);
if($mail) {
header('Location: http://google.com');
exit();
} else {
echo '<p>Something went wrong, please try again</p>';
}
} else if($robost != '') {
echo 'Sorry, we don\'t like spammers here!';
}
}
?>
Прежде всего напишите error_reporting(E_ALL);
то вы можете увидеть точную ошибку на странице.
Также, как я могу видеть почту, это должна быть mail( $to, $subject, $message, $additional_headers )
Я думаю, что есть ошибка в почтовой функции, поэтому функция заголовка не работает