新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → ASP编程入门进阶(连载)[转帖] 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 65966 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: ASP编程入门进阶(连载)[转帖] 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 Dot NET,C#,ASP,VB 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客楼主
    发贴心情 

    (六):Cookies讲座

    什么是 Cookie?Cookie 其实是一个标签,经常可能听到的中文翻译:小舔饼。当你访问一个需要唯一标识你的站址的 WEB 站点时,它会在你的硬盘上留下一个标记,下一次你访问同一个站点时,站点的页面会查找这个标记。

    每个 WEB 站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面完成。每个站点的Cookie与其他所有站点的Cookie存在同一文件夹中的不同文件内(你可以在 win98 的 Windows 目录下的 Cookie 文件夹中找到它们,而 win2k 则在 Documents and Settings 文件夹下特定用户的 cookies 文件夹中)。

    一个 Cookie 就是一个唯一标识客户的标记,Cookie 可以包含在一个对话期或几个对话期之间某个 WEB 站点的所有页面共享的信息,使用 Cookie 还可以在页面之间交换信息。这项功能经常被使用在要求认证客户密码以及电子公告板、WEB 聊天室等 ASP 程序中。

    尽管现在听起来cookie没有什么激动人心的,但实际上利用它,你能实现许多有意义的功能!比如说:你可以在站点上放置一个调查问答表,询问访问者最喜欢的颜色和字体,然后根据这些定制用户的web界面。并且,你还可以保存访问者的登录密码,这样,当访问者再次访问这个站点时,不用再输入密码进行登录。

    当然,cookie也有一些不足。首先,由于利用cookie的功能可以编程实现一些不良企图,所以大多数的浏览器中都有安全设定,其中可以设置是否允许或者接受cookie(IE浏览器中“工具”--“Internet选项...”--“安全”--“自定义级别”--“Cookie的使用”;Netscape浏览器中“工具”--“Cookie管理器”--“管理贮存的Cookie”即可),因此这就不能保证随时能使用cookie。再者,访问者可能有意或者无意地删除cookie。当访问者的机器遇到“蓝屏”死机时,或者重新格式化硬盘、安装系统后,原来保存的cookie将全部丢失。最后一点,有一些最初始的浏览器并不能支持cookie。


    ◆ 怎样利用cooklie?
    有2种使用cookie的基本方式:
    1、将cookie写入访问者的计算机(使用 Response 命令)
    2、从访问者的计算机中取回cookie(使用 Request 命令)

    ◆ 创建cookie的基本语法: Response.Cookies(cookie)[(key)|.attribute]=value
    这里的 cookie 是指定 cookie 的名称。
    而如果指定了 key,则该 cookie 就是一个字典。
    (测试一cookie是否为一个字典可用后面代码显示布尔值:<%=Request.Cookies("cookiename").HasKeys%>。为true是字典,false则不是。 )
    Attribute 指定 cookie 自身的有关信息。Attribute 参数可以是下列之一 :

    ①Domain 若被指定,则 cookie 将被发送到对该域的请求中去。域属性表明cookie由哪个网站产生或者读取,默认情况下,cookie的域属性设置为产生它的网站,但你也可以根据需要改变它。(Response.Cookies("CookieName").Domain = "www.mydomain.com")

    ②Path 为一路径属性,该属性可以实现更多的安全要求,通过设置网站上精确的路径,就能限制cookie的使用范围。如果未设置该属性,则使用应用程序的路径。(Response.Cookies("CookieName").Path = "/maindir/subdir/path" )

    ③Expires 指定 cookie 的过期日期。为了在会话结束后将 cookie 存储在客户端磁盘上,或在许多时候,我们希望能更长时间地在访问者的计算机上保存cookie。必须设置该日期。若此项属性的设置未超过当前日期,则在任务结束后 cookie 将到期。

    后面的代码,就可以设置cookie的使用到期时间为“2010年1月1日”: Response.Cookies("CookieName").Expires=#January 01, 2010#
    后面的代码,将设定cookie的过期时间为“cookie的创建时间+365天”:Response.Cookies("CookieName").Expires=Date+365
    但最好不要随便写 Response.Cookies("CookieName").Expires=Date,这样页面之间的调用时值会为空。


    执行下面的代码将会在访问者的计算机中创建一个cookie,名字=VisitorName,值=Ken :
    Response.Cookies("VisitorName")="Ken"
    执行下面的代码将会在访问者的计算机中创建一个cookie,名字=VisitorName,值=表单中UserName的值
    Response.Cookies("VisitorName")=Request.Form("UserName")
    你可以扩展下面的代码成为Cookie子关键值(CookieSubName),即cookie字典的生成。代码如下:
    Response.Cookies("VisitorName")("FirstName")="Ken"
    Response.Cookies("VisitorName")("LastName")="Baumbach"

    ◆ 读取cookie的基本语法:Request.Cookies(cookie)[(key)|.attribute]
    cookie 指定要检索其值的 cookie。
    key 可选参数,用于从 cookie 字典中检索子关键字的值。
    attribe 指定 cookie 自身的有关信息。如:HasKeys 只读,指定 cookie 是否包含关键字。
    如果客户端浏览器发送了两个同名的 cookie,那么 Request.Cookie 将返回其中路径结构较深的一个。例如,如果有两个同名的的 cookie,但其中一个的路径属性为 /www/ 而另一个为 /www/home/,客户端浏览器同时将两个 cookie 都发送到 /www/home/ 目录中,那么 Request.Cookie 将只返回第二个 cookie。

    案例分析:

    ◆ num.asp(通过留在本地磁盘上的cookie记录一年内访问本站的次数,第一次显示“首次访问”,以后显示“第几次访问”)


    <%
    dim num
    num=request.cookies("visitnum")
    if num > "0" then
    num=num+1
    Response.write "您已是第"&num&"次访问本站点了。"
    else
    Response.write "欢迎您首次访问本站。"
    num=1
    end if
    response.cookies("visitnum")=num
    response.cookies("visitnum").expires=date+365
    %>


    ◆ showcookie.asp(从Cookies文件夹中遍历出浏览器所有的Cookie name,以及相关的字典Cookie的显示(蓝字显示))


    <%
    For each cookie in Request.Cookies
    if Request.cookies(cookie).HasKeys =false then
    Response.write cookie & "=" & Request.Cookies(cookie)
    Response.write ("<br>")
    Else
    for each key in Request.Cookies(cookie)
    Response.write ("<font color=blue>")
    Response.write cookie & ".("&key&")" & "=" & Request.Cookies(cookie)(key)
    Response.write ("</font><br>")
    next
    end if
    next
    %>


    ◆ check.asp
    '首先,设置页面。然后,检查表单变量(在同一个页面中)。如果表单变量存在,就创建cookie,并设置到期时间。


    <%@ LANGUAGE="VBSCRIPT" %>
    <%
    bgcolor = Request.Form("bgcolor")
    fgcolor = Request.Form("fgcolor")
    pwd = Request.form("pwd")

    If bgcolor <>"" or fgcolor <>"" then
    Response.cookies("check")("bgcolor") = bgcolor
    Response.Cookies("check")("fgcolor") = fgcolor
    Response.Cookies("check")("pwd") = pwd
    Response.Cookies("check").Expires=#may 01, 2004#
    End if
    '接着,读取cookie
    bgcolor = request.cookies("check")("bgcolor")
    fgcolor = request.cookies("check")("fgcolor")
    pwd = request.cookies("check")("pwd")
    '如果cookie在访问者的计算机上不存在,就创建一个表单,询问相关信息
    If bgcolor ="" and fgcolor ="" and pwd="" then
    %>
    <HTML>
    <HEAD> </HEAD>
    <body>
    <DIV ALIGN="CENTER" >
    <Form action="check.asp" method="POST">
    Bgcolor: <input type="text" name="bgcolor"><BR>
    Fgcolor: <input type="text" name="fgcolor"><BR>
    Password:<input type="password" name="pwd"><BR>
    <input type="submit" value="Submit">
    </Form>
    </DIV>
    </BODY>
    <%
    End if
    '如果cookie已经存在,并且bgcolor存在,就跳转到color.asp。
    If bgcolor <> "" then
    Response.Redirect "color.asp"
    End if
    %>


    ◆ color.asp(显示用户爱好颜色的页面特性)


    <%
    bgcolor=request.cookies("check")("bgcolor")
    fgcolor=request.cookies("check")("fgcolor")
    pwd=request.cookies("check")("pwd")
    %>
    <%response.write("<body bgcolor="&bgcolor&"><font color="&fgcolor&">")%>
    你的密码是:
    <%response.write(" "&pwd&" ")%>

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/1/14 13:29:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/10 11:37:17

    本主题贴数30,分页: [1] [2] [3]

     *树形目录 (最近20个回帖) 顶端 
    主题:  ASP编程入门进阶(连载)[转帖](3629字) - Qr,2005年1月14日
        回复:  需要操作系统的安装盘的(22字) - galen,2006年3月24日
        回复:  需要将windows xp professional service pack 2 CD ..(267字) - 串烧,2006年2月21日
        回复:  (十二)缺(8字) - Qr,2005年1月14日
            回复:  [B](十三):Ad & Content Rotator[/B]ASP的强大不仅仅局限于接受..(9020字) - Qr,2005年1月14日
                回复:  [B](十四):Browser & Linking[/B]Browser Capabilit..(6449字) - Qr,2005年1月14日
                    回复:  [B](十五):组件Counters[/B]该组件用于创建一个或多个计数器,这些计数器用于跟..(4411字) - Qr,2005年1月14日
                        回复:  [B](十六):FSO组件之驱动器操作[/B]FSO,正如UFO般令人激动、令人神往,当然更..(4195字) - Qr,2005年1月14日
                            回复:  [B](十七):FSO组件之文件夹操作[/B]操作完驱动器,接着就是来操作文件夹了。其中包括..(4476字) - Qr,2005年1月14日
                                回复:  [B](十八):FSO组件之文件操作(上)[/B]FSO中除了可以对驱动器、文件夹的操作以外..(4246字) - Qr,2005年1月14日
                                    回复:  [B](十八):FSO组件之文件操作(中)[/B]学会了FSO提取文件值,也学会了将信息输入..(7381字) - Qr,2005年1月14日
                                        回复:  [B](十八):FSO组件之文件操作(下)[/B]一,fso.GetFile 提取文件相..(2638字) - Qr,2005年1月14日
                                            回复:  [B](二十):ADO组件之插入数据记录[/B]简单的显示记录已经掌握,现在需要的就是通过A..(5899字) - Qr,2005年1月14日
                                            回复:  [B](二十):ADO组件之显示数据记录[/B]学习ASP的万里长征就快到终点了:等把AS..(7065字) - Qr,2005年1月14日
                                            回复:  [B](十九):ASP技巧累加(二)[/B]严格控制Session 可以将不需要Sess..(2901字) - Qr,2005年1月14日
        回复:  认识表单(7832字) - Qr,2005年1月14日
            回复:  [B](三):接触脚本程序[/B]有了前面的html中关于form的强化知识,是不是在想,下面..(10511字) - Qr,2005年1月14日
                回复:  [B](四):内置对象Request[/B]系统学习ASP,就是先从ASP的几大内置对象开始的..(7333字) - Qr,2005年1月14日
                    回复:  [B](五):内置对象Response[/B]通过对Request对象的学习,可以了解到,Req..(8632字) - Qr,2005年1月14日
                        回复:  [B](六):Cookies讲座[/B]什么是 Cookie?Cookie 其实是一个标签,经..(6636字) - Qr,2005年1月14日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    109.375ms