0

私のウェブサイトでは、お問い合わせフォームを使用しているため、多くの問題が発生します。私はすでにmail()exim4を使用して64ビットDebianでPHP関数を実際に動作させることにある程度の時間を費やしましたが、ついにそれを実行し、メールが送信されます。

今、私は別の問題を経験していますが、それを解決する方法がわかりません。まず第一に、コード。

<?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()機能するので、ヘッダーを実行する必要があります。ファイルをローカルでテストすると、リダイレクトが発生します。

お問い合わせフォームをテストしたい場合は、ここで行うことができます。

ファイルコード全体は次のとおりです

EDIT2:

現在、リダイレクトを機能させた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 に答える