2011-03-28 71 views
4

如何重定向到一個頁面並添加帶有一些信息的$ _POST變量?

我知道,與$ _GET您必須將變量追加到URL像& VAR = foo的

回答

6
session_start(); 

$_SESSION = $_POST; 

然後,您的POST PARAMS將可通過$ _SESSION。

3

你不能。你的選擇是

一)追加發布變量來重定向URL,然後看看_GET $

B)使用一個會話變量來進行數據一頁一頁。

3

最好的辦法是使用「Apache RewriteRule」將POST數據發送到重寫的腳本。

4

您可以從$_POST提取數據,並將其附加到重定向URL:

header('Location: http://www.yoursite.com/test.php?var=' . urlencode($_POST['var'])); 

如果您有更多的參數,請參見http_build_query(),以幫助構建查詢字符串。


但請注意這test.php頁面會被瀏覽器使用GET方法加載:服務器無法對瀏覽器說來加載使用POST另一頁。

+0

然而,這將不適用於文件字段,並且由於瀏覽器和服務器限制,URL永遠不會大於2-4 k。如果處理大量數據或文件數據,在會話中存儲資料可能是更好的選擇 – 2011-03-28 17:55:37

+1

True;請記住,在同一個網站上打開的所有標籤之間共享的會話 - 所以請確保考慮到這一點。 – 2011-03-28 17:56:59

4

你可以使用表單和一些JavaScript來做到這一點。

下面是一個例子:

<form action="/path/to/redirect/to" id="example-id"> 
    <?php foreach ($_POST as $key => $value): ?> 
    <input type="hidden" name="<?php echo $key ?>" value="<?php echo $value ?>" /> 
    <?php endforeach ?> 
</form> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#example-id").submit(); 
    }); 
</script> 

注意,例如使用JQuery爲JavaScript的一部分。

1

我使用POST表單解決了同樣的問題,並使用JavaScript進行自動驗證。

<?php 
.. blah blah blah my stuff 

$body = "<html><body onload='connexion.submit()'>"; 
$body .= "<form name='connexion' action='$connectURL' method='post'>"; 
$body .= "<input type='hidden' name='username' value='$dataLogin'>"; 
$body .= "<input type='hidden' name='password' value='$dataPassword'>"; 
$body .= "<input type='submit' value='OK' />"; 
$body .= "</form>"; 
$body .= "</body></html>"; 
?> 

如果JavaScript是在客戶端的瀏覽器禁用它失敗(用戶必須手動提交的形式),但它是我的情況可以接受。