Перенаправление формы PHP (заголовка) во внешний php файл не работает

0

У меня есть форма на моей домашней странице, которая при отправке запускает внешний файл 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!';
 }
 ?>
  • 0
    Это весь код на этой странице?
  • 0
    Несвязанный: Пожалуйста, продезинфицируйте ваш код перед использованием в производстве.
Показать ещё 3 комментария
Теги:
forms
redirect

4 ответа

0
Лучший ответ

Вы условие не всегда будет разрешено 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'] не задано, ни одно условие не будет истинным.

1

Я вижу пространство перед первым тегом php, и вы также не должны закрывать теги php. Это пространство означает, что контент отправляется перед заголовком.

Тем не менее, ваш оператор заголовка может быть неисправен по нескольким причинам (уже отправленные заголовки, предупреждение и т.д.). Одним быстрым грязным обходным путем является использование javascript для этого:

if (mail ($to, $subject, $body, $from)) { 
    echo '<script>location.href="http://www.google.com";</script>';
    exit;
} 
  • 0
    Если он удалит пробел, скорее всего, заголовок будет работать, поэтому ему не нужно будет использовать JS.
  • 0
    функция почты имеет ошибку, как я вижу
Показать ещё 2 комментария
0

Надеюсь, что это сработает:

<?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!';
    }
}
?>
0

Прежде всего напишите error_reporting(E_ALL); то вы можете увидеть точную ошибку на странице.

Также, как я могу видеть почту, это должна быть mail( $to, $subject, $message, $additional_headers )

Я думаю, что есть ошибка в почтовой функции, поэтому функция заголовка не работает

  • 0
    Почему вы проголосовали отрицательно. Как я вижу, есть проблема с функцией почты.
  • 2
    Я ненавижу, когда downvoters не заботятся о комментариях. Имейте +1 для солидарности. Однако «From: [email protected]» является допустимым параметром $ дополнительный _header, поэтому здесь нет ошибок.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню