2010-08-14 72 views
0

編輯:我可以簡化問這個問題是有沒有辦法做這樣的事情header('Location: /msg_form.php?error=3')除了通過郵寄錯誤= 3和所有其他形式的信息。我認爲簡短的回答是否定的,但是有其他方法可以做事。如何將POST數據傳送到PHP中的新頁面而沒有表單?


我綜合信息系統進入我的網站,該網站使用GET的一切,但我需要將消息發送到大批人名單,所以我不得不切換到使用POST。但是,當您提交消息表單並且出現錯誤時,這會導致系統崩潰。表單提交到一個處理頁面,如果有錯誤,它應該重定向回表單頁面,但現在可以轉儲所有的POST信息。 :(

是不是有一些方法可以讓我模擬PHP處理頁面的表單提交?我認爲curl可以爲我做到這一點,但到目前爲止,它似乎只是發送郵件到下層而不是實際上重定向瀏覽器

我想我可以打印出一個帶有隱藏變量的表單,然後用html或javascript重定向,但這看起來很愚蠢,我也可以將處理器集成到表單頁面中,這樣做,但我寧願不重新安排太多的東西。

回答

4

通常情況下,我將使用相同的頁面表單錄入和表格處理。在頁面的頂部,你檢查的POST變量和過程雅高dingly。我建立一個任何錯誤的字符串。然後在處理代碼結束時,如果出現錯誤,請重新顯示包含錯誤的入口頁面。否則,重定向或顯示一個感謝頁面等。

你也可以使用jQuery,提交表單,而留在頁面上,並處理響應(顯示錯誤,回來,或重定向)..有有很多方法可以解決你的問題。

3

以及..我不知道你想做什麼..但如果你需要從PHP發送POST你可以像這樣的東西,捲曲做到這一點:

<?php 
$ch = curl_init('http://mysite.com/index.php'); 
curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, "option=com_content&task=blogcategory&id=24&Itemid=55"); 
curl_exec ($ch); 
curl_close ($ch); 
?> 
+0

但這並不重定向瀏覽器,它只是掛在處理網頁上我。 – Moss 2010-08-15 01:43:58

+1

這是因爲捲曲不用於重定向,它的作用是調用URL,並打印出結果,無論如何..如果你需要使用捲曲到您的網站中調用的頁面時,我會說,你有一個設計問題有,你可能想要使用另一種方法。通常,當表單出現錯誤時,處理頁面將不會重定向瀏覽器,而是使用$ _POST重新創建表單以填充表單並指明發現的錯誤。 – pleasedontbelong 2010-08-15 12:11:00

+0

curl應該打印出來的頁面的結果,它叫做回聲,就像一個AJAX調用?因爲我得到的只是一個空白頁面。 – Moss 2010-08-15 17:27:13

0

你可以使用會話,這是由使用cookie的服務器提供的服務。或者你可以發送與HTTP傳輸(較長的解決方案)的信息...

+0

您對http傳輸有何意義?或者是一些不切實際的事情? – Moss 2010-08-16 22:42:39

+0

POST數據以與GET不同的方式發送。看看這裏(http://developers.sun。com/mobility/midp/ttips/HTTPPost /) 理論上,如果您不想使用表單,您的php代碼可以將POST數據寫入HTTP通信中。 – Charlie 2010-08-17 21:45:45

2

你可以保留POST數據會話變量。

0

你可以保持在一個cookie中的POST數據。

相關問題