開發Web應用程式中Cookie使用的問題 (轉)

worldblog發表於2007-12-04
開發Web應用程式中Cookie使用的問題 (轉)[@more@] 

問:我想在一個Actionitem中增加cookie,然後sendredirect到另一個actionitem在那裡驗證cookie,有cookie這顯示一個頁面,否則返回。但我發現增加完cookie後,如果馬上sendredirect則另一個actionitem取不到cookie值(說明cookie增加不成功),若不馬上sendredirect而是response.content:='某一頁面內容',然後點選連結到另一ActionItem則可以成功讀出cookie。:namespace prefix = o ns = "urn:schemas--com::office" />

答:Cookie是一個Response的頭(header)部分,必須在正文之前設定。如果用SendRedirect,只有新頁面才會傳送,SendRedirect之前設定的Response會取消,導致Cookie不能加到新頁面的頭部分,所以設定Cookie不成功!解決辦法是:永遠不要在設定Cookie後再用SendRedirect。你所說的問題可以這樣解決:在HTML中可以加入程式碼自動轉到另外一個頁面,我們可以在ActionItem的OnAction事件中寫入:

Response.Content:=''+

  '

你的回覆已經新增到論壇中了'+

  '
兩秒鐘後回到論壇首頁

';

就可以自動返回URL指向的地址了。

 

問:我先在Cookie中設定了一個值,然後想修改它,該如何做?

答:首先刪除原來的Cookie中的值,方法是將Cookie的Expires設定為必現在時間早的時間,然後在設定。例如:

//將原來Cookie中的記錄刪除

  With Response..Add do begin

  Name := 'NickName';

  Value := Request.ContentFields.Values['NickName'];

  Secure := False;

  Expires := Now-1;

  end;

 

  //將註冊的使用者名稱作為Cookie中的內容

  With Response.Cookies.Add do begin

  Name := 'NickName';

  Value := Request.ContentFields.Values['NickName'];

  Secure := False;

  Expires := Now+100;

end;

 

問:如何透過Cookie儲存臨時資訊?象一些論壇,在一次瀏覽過程中。當你第一次發言時,需要輸入密碼,而以後發言就不需要輸入密碼。而當斷開後再次瀏覽就還需要輸入密碼,這樣即方便又保證了性.

答:設定這樣的Cookie的方法是不要設定Expires。例如:

//設定臨時Cookies

  with Response.Cookies.Add do begin

  Name := 'TempPass';

  Value:=sPassword;

end;

 

另外我們也可以一些專用的設定和讀取Cookie的,這些控制元件支援在Web應用中加入類似的Session的功能。下載地址是:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988026/,如需轉載,請註明出處,否則將追究法律責任。

相關文章