当前位置:首页 > 软件开发 > dev
firefox

开发Web应用程序中Cookie使用的问题

问:我想在一个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中的值,方法是将cookieexpires设定为必现在时间早的时间,然后在设定。例如:

//将原来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应用程序中加入类似aspsession的功能。下载地址是:http://codecentral.borland.com/

www.applevb.com

 ↓相关文章:
© 2006-2008 All Rights Reserved