程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 開發Web應用程序中Cookie使用的問題

開發Web應用程序中Cookie使用的問題

編輯:Delphi

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

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

Response.Content:='<meta HTTP-EQUIV="REFRESH" CONTENT="1;'+

        'URL=http://chen/dll/chat/chatmain.exe/qtchat">'+

        '<p></p><p align="center">你的回復已經添加到論壇中了'+

        '<br>兩秒鐘後回到論壇首頁</p>';

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

 

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

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

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

    With Response.CookIEs.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 := 'TempPassWord';

      Value:=sPassWord;

end;

 

另外我們也可以下載一些專用的設定和讀取CookIE的控件,這些控件支持在Web應用程序中加入類似ASP的Session的功能。下載地址是:http://codecentral.borland.com/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved