zoukankan      html  css  js  c++  java
  • 防采集第一招

    用Persistence为静态页面增加session功能   

    一般来说,只有服务器端的CGI程序(ASP、PHP、JSP)具有session会话功能,用来保存用户在网站期间(会话)的活动数据信息,而对于数量众多的静态页面(HTML)来说,只能使用客户端的cookies来保存临时活动数据,但对于cookies的操作是个很烦琐的过程,远没有对于session操作那样简便。为此,本文向读者推荐一种在DHTML中的解决方案“Persistence技术”,使得在静态页面中也能使用session会话功能。

    Microsoft Internet Explorer 5浏览器和以后的版本都支持使用状态保持(Persistence)技术,让我们能够在当前会话过程中保存一些数据对象到客户端,减少了对服务器的访问请求,充分发挥了客户端计算机的数据处理能力,从而也整体提升了页面显示效率。

    Persistence技术有以下几种行为可供调用:

    · saveFavorite—当页面被添加到收藏夹时保存页面状态和信息
    · saveHistory—在当前会话中保存页面状态和信息
    · saveSnapshot—当页面被保存到硬盘时,保存页面状态和信息
    · userData—在当前会话中用XML格式保存页面状态和信息
    Persistence技术打破了以前使用cookies和session的传统,继承了cookies的一些安全策略,同时也增加了存储和管理数据的能力。我们的每个页面有64KB的用户数据存储容量,对于每个站点总计有640KB的存储上限。

    Persistence技术存储的数据格式符合XML标准,所以可以使用DOM技术中的getAttribute和setAttribute方法来存取数据。

    下面是一个Persistence技术的典型应用,通过对Persistence存储数据的分析,使得静态页面具有验证功能。

    实际判断过程是这样的:

    1.有三个对象:游客V、导航页面A、内容页面C
    2.游客V只能通过导航页面A的链接才能看到内容页面C;
    3.如果游客V是通过其它途径来访问内容页面C(比如通过其它网站的超链接、直接在IE地址栏中输入网址访问等),内容页面C将自动提示版权信息,显示空白页。
    具体实现步骤:

    · 在“导航页面”中加入一个STYLE用来定义persistent类,同时加入存储函数fnSave用来授权。
    <STYLE>
    .userData {behavior:url(#default#userdata);}
    </STYLE>
    <SCRIPT language=Javascript>
    function fnSave(){
    oPersistDiv.setAttribute("bIsValid","true");
    oPersistDiv.save("oXMLStore");
    }
    </SCRIPT>

    · 在“导航页面”的<body>和</body>区域中定义一个层用来标识Persistence对象
    <DIV CLASS=userData ID="oPersistDiv"></DIV>

    · 在“导航页面”的超链接属性中加入一条语句用来调用函数fnSave:
    <a href='redhat2.htm' onmousedown="fnSave()">

    接下来,为“内容页面”加入验证功能。

    · 在“内容页面”中加入一个STYLE用来定义persistent类,同时加入存储函数fnLoad用来判断合法性。
    <STYLE>
    .userData {behavior:url(#default#userdata);}
    </STYLE>
    <SCRIPT>
    var bPageValid=false;
    function fnLoad(){
    oPersistDiv.load("oXMLStore");
    if((oPersistDiv.getAttribute("bIsValid"))&&
    (oPersistDiv.getAttribute("bIsValid")=="true")){
    bPass=true;
    }
    else{
    bPass=false;
    }
    oPersistDiv.setAttribute("bIsValid","false");
    oPersistDiv.save("oXMLStore");
    if(bPass==false){
    var sError="来源不明,请您通过授权网站访问我们.";
    alert(sError);
    location.href="about:blank";
    }
    } </SCRIPT>

    · 修改“内容页面”的区域如下:
    <BODY onload="fnLoad()">
    <DIV CLASS=userData ID="oPersistDiv"></DIV>

    ***插入以上代码的页面需在同一个文件夹下,否则会出错。
    从以上范例可看出,通过persistence的使用,使得普通的静态内容页面具有了session功能,一般的不敏感信息完全可以通过session保存在客户端。

    使用多个带有session功能的静态页面可以完成众多复杂任务,如虚拟购物车,高级搜索引擎等。同时,由于将以前服务器端承担的部分session任务转移到客户端,减少了数据交互量,大大降低了服务器的负担。

  • 相关阅读:
    Java的静态块与实例块(转)
    Programming Ability Test学习 1031. Hello World for U (20)
    Programming Ability Test学习 1011. World Cup Betting (20)
    Programming Ability Test学习 1027. Colors in Mars (20)
    Programming Ability Test学习 1064. Complete Binary Search Tree (30)
    Programming Ability Test学习 1008. Elevator (20)
    【maven详解-生命周期】Maven的生命周期和插件
    【maven详解-插件】maven插件学习之源码插件Source Xref
    $(document).ready(){}、$(fucntion(){})、(function(){})(jQuery)onload()的区别
    你还没真的努力过,就轻易输给了懒惰
  • 原文地址:https://www.cnblogs.com/MaxIE/p/323723.html
Copyright © 2011-2022 走看看