-1

個人用サイトの簡単なフィードバック送信フォームに取り組んでいます。次のエラーが表示されます

警告: ヘッダー情報を変更できません - /home/content/92/9339092/html/Pages/ の (/home/content/92/9339092/html/Pages/ArabicRootMachine/feedbackTEST.php:200 で開始された出力) によって既に送信されたヘッダー226 行目の ArabicRootMachine/feedbackTEST.php*

出力をバッファリングするために ob_start() を追加しようとしましたが、うまくいきませんでした。PHP スクリプトの先頭に header() 呼び出しを配置すると、フォームは機能して電子メールを送信しますが、サンキュー ページにリダイレクトされません。このエラーをスローする可能性のある明白な何かがあるかどうかを確認することをいとわない優れた哺乳動物はいますか?

注: 行 200 はスクリプトの開始 (php 開始タグ)、行 226 はヘッダー呼び出しです。

<?php
include('./includes/title.inc.php'); 
require_once('./includes/recaptchalib.php'); 
$public_key = '****************************************'; 
$private_key = '****************************************'; 
$errors = array(); 
$missing = array(); 
// check if the form has been submitted 
if (isset($_POST['send'])) { 
    // email processing script
    $to = 'blahblah@gmail.com';
    $subject = 'Feedback on Root Machine'; 
    // list expected fields 
    $expected = array('name', 'email', 'comments'); 
    // set required fields 
    $required = array('name', 'email', 'comments'); 
    // create additional headers 
    $headers = "From: My Next Bit<feedback@mynextbit.com>\r\n"; 
    $headers .= 'Content-Type: text/plain; charset=utf-8';
    $response = recaptcha_check_answer($private_key, $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']);
    if (!$response->is_valid) { 
        $errors['recaptcha'] = true; 
    } 
    require('./includes/processmail.inc.php');
    if ($mailSent) {
        header('Location: http://www.mynextbit.com/Pages/ArabicRootMachine/thank_you.php'); 
    exit(); 
    }
}
?>

**.inc.php ファイルのいずれかが必要な場合はお知らせください。どんな助けにも感謝します。

4

3 に答える 3

0

これはできません

header('Location: ... 

あなたがこれをしているなら

include('./includes/title.inc.php');

ヘッダーを送信すると、PHP 関数headerは使用できなくなります。

header()実際の出力が送信される前に、通常の HTML タグ、ファイル内の空白行、または PHP から を呼び出す必要があることに注意してください。include 関数、require 関数、または別のファイル アクセス関数を使用してコードを読み取り、header()が呼び出される前に出力されるスペースまたは空行があることは、非常に一般的なエラーです。

ドキュメンテーション

于 2013-08-30T00:16:51.260 に答える
0

include ファイルまたは require ファイルは、ヘッダーが使用される前に実際の出力を送信している可能性があります。

「header() は、実際の出力が送信される前に、通常の HTML タグ、ファイル内の空白行、または PHP から呼び出される必要があることに注意してください。別のファイル アクセス関数を使用しており、header() が呼び出される前に出力されるスペースまたは空行があります。単一の PHP/HTML ファイルを使用する場合、同じ問題が存在します。」PHP.NET ( http://php.net/manual/en/function.header.php )

于 2013-08-30T00:19:32.657 に答える