2008-10-13 101 views
0

海!形式和沒有餅乾 - 優雅的方式提交表格

我有一個表格希望提交,但我需要添加PHPSESSID,因爲有些客戶端不允許cookies。

我的頁面上有幾個JavaScript函數,它們顯示用戶列表(搜索,排序,打開詳細信息),頁面由PHP生成。

現在我正在尋找一種優雅的方式,讓我的表單每次提交都包含PHPSESSID - 這需要在多個頁面上完成,所以我希望有一個簡單的解決方案。將PHPSESSID添加到操作或隱藏字段中無法正常工作。

或者這個問題位於其他地方?它可能是客戶端在太嚴格的防火牆之後。任何想法(尤其是解決方案;-))在這個方向也是受歡迎的!

實施例的代碼(極度簡化):

<form name="userlist" method="POST" action="./myuserlist.php"> 
[...some formfields and stuff..] 
</form> 

<script> 
//one example function, there are several on my page 
function next_page() 
{ 
    //set some hidden field to get the next page 
    document.forms[0].submit(); 
} 
</script> 

提前感謝!

再見, Basty

[編輯] session.use_trans_sid指定設置爲true

回答

2

使用隱藏字段應該努力 - 如果它不那麼session.use_trans_sid指定可能是關閉你的php.ini中

你可以把它添加到一個隱藏字段,然後說

if (!empty($_POST['PHPSESSID'])) 
    session_start($_POST['PHPSESSID']); 
else 
    session_start(); 
+0

Hoi! 「隱藏領域應該工作」 - 這裏的關鍵是「應該」;)可悲的是它不。但我會嘗試使用POST參數啓動會話。 – bastiandoeen 2008-10-13 15:32:11

2

當你說把它放到一個隱藏的領域是行不通的,你能詳細說明一下什麼對它不起作用嗎?

當面對每個(或很多)表單提交需要傳遞一些狀態信息的情況時,輸入類型=隱藏字段是執行此操作的規範方法。

只是在這裏黑暗中猜測。你是在做一些類似於style =「display:none」或類似的輸入嗎?如果是這樣,請將其改爲真正的< input type =「hidden」>標記。很多瀏覽器不會提交通過顯示隱藏的表單域:無。

黑暗中的另一個刺:你是否通過JavaScript添加隱藏窗體到頁面?像foo.innerHTML調用一樣?同樣,一些瀏覽器不會正確處理以這種方式添加到頁面的表單字段。您需要從一開始就將sessionid放在那裏,或者重寫您的ajax方法,該方法處理從服務器返回的數據以通過dom操作而不是innerHTML插入輸入字段。