2013-10-04 67 views
1

有一段時間了一個真正的問題,並且無法弄清楚。 基本上下面的代碼是一個功能的一部分,我檢查,沒有輸出打印到瀏覽器:該功能的與頭重定向問題的協助

case 'Failed': // if it fails... 
     switch ($unencrypted_values['Status']) { 
      case 'NOTAUTHED': 
      case 'REJECTED': 
      case 'MALFORMED': 
      case 'INVALID': 
      case 'ABORT': 
      case 'ERROR': 
       $purchase_log = new WPSC_Purchase_Log($unencrypted_values['VendorTxCode'], 'sessionid'); 
       $purchase_log->set(array(
        'processed' => WPSC_Purchase_Log::INCOMPLETE_SALE, 
        'notes'  => 'SagePay Status: ' . $unencrypted_values['Status'], 
       )); 
       $purchase_log->save(); 
       // if it fails redirect to the shopping cart page with the error 
       // redirect to checkout page with an error 
       $error_messages = wpsc_get_customer_meta('checkout_misc_error_messages'); 
       if (! is_array($error_messages)) 
        $error_messages = array(); 
       $error_messages[] = '<strong style="color:red">' . $unencrypted_values['StatusDetail'] . ' </strong>'; 
       wpsc_update_customer_meta('checkout_misc_error_messages', $error_messages); 
       $checkout_page_url = get_option('shopping_cart_url'); 
       if ($checkout_page_url) { 
        header('Location: '.$checkout_page_url); 
        exit(); 
       } 
       break; 
     } 
     break; 

這就是一部分,但是當我運行我的腳本,我收到錯誤消息:

Warning: Cannot modify header information - headers already sent by (output started at  /home/******/public_html/wp-content/themes/reallywildflowers/header.php:13) in  /home/reallyw/public_html/wp-content/plugins/myplugin/merchants/sagepay.php on line 598 - See more at: http://website.com/products-page/transaction-results/?crypt=NzsPDC0yayoLATltUScRGBA6HTw9NTcCJXMqezgmMVkJKh0LOSYzSy4rBVwFFREcAG8MAXgSPwY8IgpNGAZDLwEhChcqFS4oJioOBEZFUkhXd15Ab3ZiX31oPWkkIB0wAHIVT2B3YCl8d1sUQURXSUl7LzpgbBdTDwpGCkA1XUAlCVtObnBlFm8PBlYCGhFEUHxATX4AADgKGFkENjgpWSkOOjsQZxcPLTwOSgQmAAoRIxpFFQACKAELLx8nGxYNJyAKHQokJR4lOlZ0NiAmMSELSDsOcwQOOjsHTUo5JC0nBys8fgY/DT0PAl1KRENKIBwLGy0zMzg9Lx9MBEkqMkIMLy4OfBslHhg8ekM8LTUtfyc6GXBmPR15L3pRNwQLABsXCD18ACIaD011FgcRTSAmCREsMmtcfX5Z 

線598是這樣一個從代碼:

header('Location: '.$checkout_page_url); 
+1

*我檢查,沒有輸出打印到瀏覽器* - 再次檢查 - 也許有一個空白之前,你的第一個PHP標籤? – 1615903

+0

我檢查並重新檢查它..沒有什麼打印到瀏覽器..無空格。 – misulicus

+0

它說輸出是由第13行的header.php發送的。你檢查了嗎?也許有一個結束標記「?>」和一些換行符或那裏的東西。如果是這樣,刪除標籤,這是不需要的。 –

回答

0

,如果您有重定向之前的一些事情印刷這個錯誤通常出現。

最簡單的修復,解決你的問題是

如果你有機會改變你的php.ini配置文件,你可以找到和更改或添加以下

output_buffering = On 

或致電

ob_start() 

重定向前

有幾個SO張貼說明這個問題,我經常問這個問題時,我正在評估一個PHP開發人員,同時聘請:)

Headers already Sent

希望這有助於

0

檢查文件在你的腳本的開頭任何空間。

否則試試下面能幫上忙,

ob_start(); 
header('Location: '.$checkout_page_url); 
ob_flush(); 
0

呼叫ob_start();或將@session_start@session_start

替代解決方案是

<script type="text/javascript"> 
window.location.href = '<?php echo $checkout_page_url; ?>'; 
</script>