2010-01-08 68 views
0

我有一個HTML表單,通過AJAX(jQuery表單插件)提交給我的服務器上的PHP Web代理。 Web代理使用curl將POST發送給第三方腳本。

我的html表單有p [fname],p [lname],c [name],p [loc],p [loc] [email],p [loc] [email] [detail] 。名稱由第三方應用程序指定。

當我使用GET的形式提交給Web代理,我可以簡單地做以下成功發送表單數據的第三方腳本的捲曲請求裏面:

$postvars = $_SERVER['QUERY_STRING']; 
curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars); 

問題1:使用GET將表單數據提交給我的Web代理服務器有什麼「錯誤」?正如我提到的,它工作正常,並且需要更少的編碼。 $ _SERVER ['QUERY_STRING']具有我需要通過POST傳遞給第三方的完全正確格式的數據。

問題2:如果有令人信服的理由使用POST提交給我的Web代理,那麼循環遍歷$ _POST中的多維關聯數組以便動態構建$ postvars的最佳方式是什麼?編碼任何關鍵值?

注意:html表單不是關鍵任務,它提交的數據會進入第三方服務的批准提示。它不會直接插入生產數據中。

回答

0

正如名字已經說了,GET應該使用,如果你只想獲得數據不改變在服務器端數據。
如果請求在服務器端更改數據,則應使用相同方法,POST

所以你應該根據你的要求選擇方法。另請注意,網址的長度有限,因此您無法將例如將任意數量的文本轉換爲GET參數。

完全讀完你的問題(:-D)後,似乎你的請求改變了(在這種情況下,增加了)數據,這意味着使用POST是更正確的方法。但是,因爲您只能通過GET將其發送到您的代理,然後通過10發送給其他應用,只要它可以工作,就沒問題。
它只取決於你發送什麼類型的數據。

+0

謝謝!我熟悉何時使用GET和POST的一般規則。由於GET-> POST在這裏工作,並且需要較少的代碼,所以我想獲得一些意見: 1.在這種情況下是否可以打破此規則。 2.是否有真正令人信服的理由(例如安全),我應該堅持POST而不是GET在這種情況下。 – Tex 2010-01-08 13:59:10

+0

正如我在你的情況說,它可能只取決於你發送的數據類型(URL的長度)。關於安全性:POST不比GET更安全。如果攔截HTTP請求,則無論是POST還是GET,都可以讀取每個數據。你也可以篡改POST數據,Firefox有插件。所以沒有太大的區別。 – 2010-01-08 14:18:04