2014-05-08 81 views
1

我想貝寶在我的網站整合但之後,我按PayPal按鈕會出現這樣的錯誤:用PHP頭衝突需要

Warning: Cannot modify header information - headers already sent by (output started at X:\home\test\www\view\main.php:29) in X:\home\test\www\view\frontend\paypalfunctions.php on line 377 

負責錯誤的main.php的部分是這樣的:

<div class="container"> 
     <?php require 'view/frontend/'.$tpl.'.php';?> 
</div> 

這行代碼對我整個網站的工作至關重要。它相沖突與PayPal的paypalfunctions.php這個特殊的功能:

function RedirectToPayPal ($token) 
{ 
global $PAYPAL_URL; 

// Redirect to paypal.com here 
$payPalURL = $PAYPAL_URL . $token; 
header("Location: ".$payPalURL); 
exit; 
} 

我仔細看了this question關於這個問題,並嘗試了一些東西,但沒有找到一個解決方案。有什麼我需要改變它的代碼工作?

回答

1

ob_start是一種解決方法。我更喜歡解決實際問題。這通常是一個空白問題。

嘗試調整以下...

<div class="container"> 
     <?php require 'view/frontend/'.$tpl.'.php';?> 
</div> 

<div class="container"> 
<?php require 'view/frontend/'.$tpl.'.php';?> 
</div> 

看看是否有幫助。還要確保你沒有任何額外的空白在包含文件中進行。

2

問題是,您的視圖正在輸出內容和標題。

的溶液是由ob_start和ob_get_contents緩衝()的輸出。 停止查看文件的所有直接輸出。 您可能會在需要時輸出緩衝區。 在通過頭進行PayPal重定向之前,並不需要視圖輸出。

所以邏輯是:渲染視圖緩衝區或做一個頭重定向。