2014-11-05 86 views
-2

我有一個註冊和付款頁面。程序流程就像註冊>確認>付款。在註冊頁面進行驗證和計算後,需要進入確認頁面。
我的代碼是活動服務器上的標頭位置不工作

<?php 
ob_start(); 
session_start(); 

include("header.php"); 
include("ini.php"); 
date_default_timezone_set('Asia/Brunei'); 
header('Cache-Control: max-age=900'); 

if (isset($_POST['submit'])) { 
    $error = 0; 
//validations 

if ($error <= 0) { 
//do some calculation 
header('location:confirm.php'); 
} 
} 
<?php 
ob_flush(); 
?> 

控制進入到如果($錯誤< = 0)子句,但留在註冊頁面上。

我嘗試過很多辦法像

header('location:confirm.php', true, 302); 

,而不是

header('location:confirm.php'); 

去除

ob_start() and ob_flush() 



add exit() after header() 

然後去空白頁。

也可以嘗試使用

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

然後控制進入確認頁面,但鏈接似乎是爲和registration.php

但頭( '位置:confirm.php');在我的本地服務器上工作正常。有人請幫我解決這個問題..有什麼替代方式header()。期待你們..謝謝

+1

請停止使用代碼片段PHP代碼之前,任何HTML或空格。 – 2014-11-05 02:20:34

回答

1

記住header()函數發送任何實際輸出之前必須調用,無論是普通的HTML標籤,在一個文件中的空行,或PHP。使用include或require函數或其他文件訪問函數讀取代碼,並在調用header()之前輸出空格或空行是非常常見的錯誤。使用單個PHP/HTML文件時存在同樣的問題。

也試着改變標題('Location:confirm.php'); (注意L是大寫,因爲它在本地服務器上的工作可能會出現嚴格的php類型問題,請嘗試一次)

0
$host = $_SERVER['HTTP_HOST']; 
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$extra = 'confirm.php'; 
header("Location: http://$host$uri/$extra"); 
+0

仍然不能正常工作 – RAWhoLovesMusic 2014-11-05 02:27:03

+0

不知道該告訴你什麼。你的問題是Location需要一個絕對的URI,你不能給它一個路徑。 – 2014-11-05 02:31:58

+0

你爲什麼不迴應$ host和$ uri並告訴我他們說什麼? – 2014-11-05 02:32:45

0

在最後使用ob_end_flush()。這應該像魅力一樣工作。

0

我有同樣的問題多年,但今天,我發現自己不具備有頭字。嘗試出來

相關問題