2010-08-11 40 views
-2

一旦通過POST提交了一些數據,是否有可能通過不同的頁面使它們成爲$ _POST,就像$ _SESSION允許我們做的一樣?

回答

1

今天挖一個老問題。但我忘了後我挖了有效的解決方案....

將這個片段在你的每一頁

if(isset($_POST) & count($_POST)) { $_SESSION['post'] = $_POST; } 
if(isset($_SESSION['post']) && count($_SESSION['post'])) { $_POST = $_SESSION['post']; } 
+0

Yikes!最好的只寫編碼。 – TRiG 2012-04-30 18:27:52

1

您需要解析$ _POST中的數據並在表單中重新創建它。你可以用隱藏的字段來做到這一點。

或者,您可以將$ _POST數據保存在用戶會話中,並在需要時將其引用。您必須管理數據的生命週期,以確保它不會停留太久。

+0

我使用的鏈路上發送的查詢字符串的頂部,所以我不使用形式發佈那些 – Starx 2010-08-11 13:49:04

+1

然後你必須將$ _POST解析爲參數並將它們添加到你的鏈接中。它們將在$ _GET和$ _REQUEST中可用於您的腳本。 – 2010-08-11 13:54:19

+0

治療方法甚至比疾病還要嚴重。如果存在大量文本或密碼等敏感信息會怎麼樣? – 2010-08-11 14:52:40

0

問題是您要通過存儲在$ _GET變量中的URL發送數據,而不是$ _POST。如果您希望以任一格式提交數據,請改用$ _REQUEST。

關於是否使用$ _REQUEST是一個好主意,有一點爭議,但如果你正在做一個簡單的網站,那就沒什麼問題了。

如果你寧願不使用$ _REQUEST,那麼你可以使用每個變量下面的代碼你期望:

if (!empty($_GET['foo'])) { 
    $foo = $_GET['foo']; 
} elseif (!empty($_POST['foo'])) { 
    $foo = $_POST['foo']; 
} else { 
    die("Foo not submitted"); 
}