2013-04-08 112 views
1
其他頁面

我有HTML表單,我必須提交相同的頁面上的形式,其中的那種形式,添加POST變量,然後所有的變量傳遞到下一個頁面。我嘗試這樣做:PHP着POST變量

 <form method="POST" action=""> 
     <input type="TEXT" name="names" /> 
     <input type="TEXT" name="email" /> 
     <input type="submit" name="send" /> 
    </form> 

,然後這個PHP代碼:

if($_POST['send']){ 

    $_POST['digest'] = "someText here"; 
    header("HTTP/1.0 307 Temporary redirect"); 
    header("Location:https://nextpage.com/form"); 

} 

但是當我重定向到另一個網頁,所有的POST數據,不同的是 「$ _ POST [ '消化']」 發..我該怎麼辦 ?

感謝,併爲英語不好對不起。

+0

你不得不添加'digest'到URL(這當然會變成一個GET變量,有長度的限制等),我不認爲有一種方法做你想要的東西。 (其實我很驚訝,瀏覽器重新發布POST數據到新的URL。這是記錄/預期?) – 2013-04-08 18:49:30

+0

看http://stackoverflow.com/questions/653090/how-do-you-post-to- a-page-using-php-header-function – Heberfa 2013-04-08 18:51:48

+1

@Pekka웃:它可能因瀏覽器而異。看到這個帖子:http://stackoverflow.com/questions/46582/response-redirect-with-post-instead-of-get – Alekc 2013-04-08 18:52:00

回答

2

你需要通過變量要重定向到URL的查詢字符串。

http://www.php.net/manual/en/function.http-build-query.php

+0

這不是我需要的。我必須重定向到下一頁.. – 2013-04-08 18:51:59

+1

@哈里斯爲什麼它不是你所需要的?它可以幫助您爲下一頁構建一個URL – 2013-04-08 18:54:46

+1

@Haris無法將POST數據添加到來自PHP端的瀏覽器請求中。您必須先與Alekc的解決方法一起使用。 – 2013-04-08 18:58:00

2

如果你正在使用PHP的頭功能時無法通過POST重新發送您的變數。

你有2個方案在這裏:在$ _GET

  1. 轉換$ _ POST(例如http_build_query)
  2. ,如果它是必不可少的,你有這樣的數據作爲POST傳輸,你可以創建一個空白頁面包含輸入類型=「隱藏」的表單,然後用javascript提交。有點醜,但應該工作。
2

你需要使用捲曲這一點。

$fields_string = "name=".$_POST['name']."&email=.$_POST['email']; 
    $url = "the website you want to post to"; 
    $cx = curl_init(); 
     curl_setopt($cx, CURLOPT_URL,$url); 
     curl_setopt($cx, CURLOPT_POST, true); 
     curl_setopt($cx, CURLOPT_POSTFIELDS,$fields_string); 
     curl_setopt($cx, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($cx, CURLOPT_SSL_VERIFYHOST, FALSE); 
     curl_setopt($cx, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($cx, CURLOPT_FOLLOWLOCATION, FALSE); 
    $init_response = curl_exec($cx); 
    curl_close($cx); 

http://php.net/manual/en/book.curl.php

+0

這將從根本上改變OP正在做的事情。將不再有任何瀏覽器的上下文(開放會話,餅乾,客戶端IP,用戶代理...) – 2013-04-08 18:51:59

+0

@Pekka웃爲什麼不會有?下一頁的內容存儲在一個變量中,您可以按需要顯示它。什麼阻止你把'session_start();'放在那個頁面的頂部?我真的不明白你的反對意見。 – 2013-04-08 19:00:11

+0

with curl,*您的服務器*發出請求,而不是客戶端的瀏覽器。 Curl作爲一個獨立的客戶端,與用戶的瀏覽器無關。無論是否存在'session_start()',用戶的會話ID都無法捲曲。 – 2013-04-08 19:01:12