2012-01-07 93 views
0

我有一個表單,該表單應該被重定向到點擊提交按鈕後才能成功頁面。 我試着使用hearder(),但是頭部已經發送錯誤了。沒辦法,我可以把它放在php文件的頂部,因爲如果提交的表單有錯誤,我必須重定向到舊的訂單頁面。表單成功提交後,重定向到訂單成功頁面

有沒有其他方法可以做到這一點?

還有一個疑問, 目前我正在使用以下來清除所有會話!

<?php session_start(); 
    session_unset(); 
    session_destroy(); 
    session_write_close(); 
    setcookie(session_name(),'',0,'/'); 
    session_regenerate_id(true); ?> 

所以我必須,如果我打算使用會話在同一個頁面上面得到N碼後的形式再次使用該<?php session_start(); ?>

回答

2

你可以做幾件事情,

  1. 使用javascript通過輸出重定向用戶<script type="text/javascript">parent.location.href = 'nextpage.php';</script>
  2. 您可以使用Output Buffering在輸出後發送HTTP標頭。

    當輸出緩衝處於活動狀態時,腳本(標題除外)不發送輸出,而是將輸出存儲在內部緩衝區中。

  3. 你可以添加一個元刷新<meta http-equiv="refresh" content="0;url=nextPage.php">
  4. 您可以向用戶顯示一個鏈接到下一個頁面,讓他點擊它自己。

+0

這不是真正得到這個問題,但確定+票;) – Prof83 2012-01-07 11:49:06

+0

怎麼這麼沒有得到這個問題? :)他詢問重定向。雖然我確實忘了會議的事情,但你已經照顧了;​​-) – 2012-01-07 11:50:25

+0

如果他不知道爲什麼標題被髮送出去,它有點混亂,這可能是無意的,如果他發現它是故意的,那麼是的,你的解決方案是好的,因此+投票...然而,這不是幫助找出爲什麼標題發送? – Prof83 2012-01-07 11:53:35

1

您正在發送內容被髮送到瀏覽器的標頭,換句話說,在嘗試header()之前已經回顯了一些內容。

找出什麼,退出;之前你想header();嘗試找出問題

我絕不會通常表明這一點,因爲這將是非常糟糕的做法,而是要迫使它:

ob_clean(); // Cleans the output buffer 
header("Location: redirect-url"); 

要清除會話:

$_SESSION = array(); 
session_destroy(); 

更新

是的,你必須我們Ësession_start();再次重新發起新的會話,但要記住你摧毀舊的,因此數據將被清除 - 一個新的會話=空會話

+0

@oDx如果這些問題的答案幫助你,請註明其中一個爲正確答案;) – Prof83 2012-01-07 11:59:48