利用PHP操作POST並同步頁面重導

利用PHP操作POST並同步頁面重導,網路上找了很多討論,很多討論最後都沒有結果,或者是提供cURL或fsockopen等方式,但和主題還是有一些差距,因為cURL和fsockopen並不會進行頁面重導。

這裡找到了一篇討論:POST headers with redirect,該主題發問者在第二篇就回覆了一個作法,應該也是目前一般進行連續POST的作法,也就是輸出隱形表單欄位,再加上javascript自動將表單提交出去。如下例:

<form id=”postfrm” name=”postfrm” action=”xxxx.php”  method=”post”>

<input type=”hidden” name=”data_1″ value=”xxxx”/>

<input type=”hidden” name=”data_2″ value=”xxxx”/>

</form>

<script type=”text/javascript”>

document.postfrm.submit();

</script>

網路上那麼多篇討論都沒有提出一個PHP的適合解決方案,反而是利用這種「技巧」來達成,換句話說,PHP可能無法同時送出POST資料,並且重導頁面。事實上我也覺得好像不太可能,因為「重導頁面」是瀏覽器的動作,而PHP是伺服器端的語言,雖然PHP的header()函數可以進行頁面重導,但PHP對瀏覽器的操作天生就有一些限制在,如果希望PHP能夠同步POST及頁面重導,可能存在兩種狀況:

一個是由PHP進行POST,並告訴瀏覽器配合重導頁面,但PHP和瀏覽器是兩個不同的端點,這裡就假設兩個端點都是瀏覽器,大家試想,兩個不同的瀏覽器怎麼可能看到同樣的頁面(不是相同內容,而是指同一個Request的回應頁面),如果真的存在,那肯定有安全性的問題。

第二個是由PHP告訴瀏覽器進行POST並同步重導,這個方式就可能接近於上述javascript及隱形表單的範例。但是PHP對瀏覽器的操作天生就存在很多限制,例如PHP不能指示瀏覽器產生表單,並加入各種表單項目,唯一的方式就是藉由輸出html來讓瀏覽器解析。

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Proudly using Dynamic Headers by Nicasio WordPress Design