0

在我的网站上,我使用了联系表格,这给我带来了很多麻烦。我已经花了一些时间在mail()使用 exim4 使 PHP 函数在 64 位 Debian 上运行,但我终于做到了,并且发送了邮件。

现在我遇到了另一个问题,我不知道如何解决。首先是代码。

<?php
$your_email = 'blahblah@gmail.com';
session_start();
$errors        = '';
$name          = '';
$visitor_email = '';
$user_message  = '';

if (isset($_POST['submit'])) {
    $name          = $_POST['name'];
    $visitor_email = $_POST['email'];
    $user_message  = $_POST['message'];
    ///------------Do Validations-------------
    if (empty($name) || empty($visitor_email)) {
        $errors .= "\n Name and Email are required fields. ";
    }
    if (IsInjected($visitor_email)) {
        $errors .= "\n Bad email value!";
    }
    if (empty($_SESSION['6_letters_code']) || strcmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0) {
        //Note: the captcha code is compared case insensitively.
        //if you want case sensitive match, update the check above to
        // strcmp()
        $errors .= "\n The captcha code does not match!";
    }

    if (empty($errors)) {
        //send the email
        $to      = $your_email;
        $subject = "New form submission";
        $from    = $your_email;

        $body = "A user  $name submitted the contact form:\n" . "Name: $name\n" . "Email: $visitor_email \n" . "Message: \n " . "$user_message\n";

        $headers = "From: $from \r\n";
        $headers .= "Reply-To: $visitor_email \r\n";

        if (mail($to, $subject, $body, $headers)) {
            header('Location: http://www.lolstreamgallery.net/thank-you.html');
        } else {
            $errors .= "\n E-Mail coulnd be sent!";
        }
    }
}

问题是标头重定向不起作用。确实有效,因此mail()应该执行标题。当我在本地测试文件时,确实会发生重定向。

如果您想测试联系表,可以在这里进行。

是整个文件代码:

编辑2:

我现在正在使用 Ian Brindley 的功能,它使重定向工作,但不是标头功能。标题之前似乎有一些输出。

4

1 回答 1

1

乍一看,我在 header() 调用之前看不到任何输出。

如果没有更好的选择,这是我不久前发现的一个函数,我现在几乎所有的重定向都使用它。

function redirect($url){
    if (!headers_sent()){    
        header('Location: '.$url);
        exit;
    }
    else {  
        echo '<script type="text/javascript">';
        echo 'window.location.href="'.$url.'";';
        echo '</script>';
        echo '<noscript>';
        echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
        echo '</noscript>'; exit;
    }
}

我知道非服务器端重定向并不理想。

于 2013-01-21T21:17:55.473 回答