問:我想在一個Actionitem中增加cookie,然後sendredirect到另一個actionitem在那裏驗證cookie,有cookie這顯示一個頁面,否則返回。但我發現增加完cookie後,假如馬上sendredirect則另一個actionitem取不到cookie值(說明cookie增加不成功),若不馬上sendredirect而是response.content:='某一頁面內容',然後用戶點擊連結到另一ActionItem則可以成功讀出cookie。
答: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/
www.applevb.com