2013-08-30 93 views
-1

我正在爲我的個人網站提供簡單的反饋提交表單。我收到以下錯誤PHP5 - 無法修改標題信息

警告:不能更改頭信息 - 已經 發送頭(輸出開始 /home/content/92/9339092/html/Pages/ArabicRootMachine/feedbackTEST.php:200)在線 在 /home/content/92/9339092/html/Pages/ArabicRootMachine/feedbackTEST.php 226 *

我試着加入ob_start()來緩衝任何輸出,但沒有工作。如果我將header()調用放在php腳本的開頭,表單工作併發送電子郵件,但它不會重定向到謝謝頁面。你們中的任何一位優秀的哺乳動物願意通過微風來查看是否有任何明顯的東西可能會引發這種錯誤?

注意:第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 = '[email protected]'; 
    $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<[email protected]>\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文件,請讓我知道。我非常感謝任何幫助。

+0

前200行是什麼?它是HTML的內容? – mbouzahir

回答

0

,如果你這樣做是

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

一旦你已經發送了頭你不能做到這一點

header('Location: ... 

,PHP函數header不能使用。

請記住,必須在發送任何實際輸出之前調用header(),可以使用普通HTML標記,文件中的空行或PHP發送。使用include或require函數或其他文件訪問函數讀取代碼並在調用header()之前輸出空格或空行是非常常見的錯誤。

Documentation

+0

謝謝Stack Overflow的新鮮王子。我正在使用模板在Dreamweaver中構建它。事實上,我的PHP腳本之前已經有一些HTML/CSS受到歡迎。我只是剪下整個劇本並放在<!DOCTYPE之前......很好用。謝謝。 – Bonedancer

0

你有或需要使用頭文件之前,可以發送實際輸出。 「

」請記住,必須在發送任何實際輸出之前調用header(),或者通過普通的HTML標記,文件中的空行或PHP來發送。使用include或require來讀取代碼是一個非常常見的錯誤,函數或其他文件訪問函數,並且在調用header()之前輸出空格或空行,使用單個PHP/HTML文件時也存在同樣的問題。「 PHP.NET在http://php.net/manual/en/function.header.php

0
header("Location: link") 

應該是之前的任何HTML內容或功能顯示內容(回聲,打印..)

此舉將電子郵件發送給你頁面的頂部它的強制性內容。

+0

本質上,任何輸出什麼都如此 –

+0

是的,謝謝。這就是我所做的,它的工作。 – Bonedancer