在websnap技术中,当访问者登陆了网站后,如何设置session呢?我又该如何知道在线人数呢?当然我知道书上有过这样的介绍,但我觉得太不适合实际情况了,请高手帮忙。
首先,“访问者”要对数据库验证,验证正确后如何设置session,
第二,我又该如何知道当前的在线人数,
第三,若该“访问者”不能查看该网页,又该如何设置该网页不能被查看呢?
第四,当“访问者”退出后又该如何删除session呢?当然我也在其他书籍中查看过关于这方面的资料,但我总觉得书上的例子
太不适合实际,也太“格式化”了,
更本不适合灵活多变的网页访问要求,故想问一下大家,关于这方面理解,和使用
怎样的技术及代码。

解决方案 »

  1.   

    首先要放置 SessionsService 组件
    1 如果用的自动登录验证,则不需要你设置。
    如果自己做的,则可用 WebContext.Session.Values['Logged']:=True/False 来设置,以后自己判断这个值。2 在线人数要用一个全局变量由程序来统计。可在 SessionsService 的 OnStartSession OnEndSession 中进行。3 第一种方法是 WebSnap 中文手册 中“访问权限”部分所讲。
     第二种方法由你控制,在 BeforeDispatchPage 事件设置 Handled:=True ,则此页不再响应到客户端;你也可以用 SendRedirect, DispatchPageName,RedirectToPageName 转到指定的页4 如 1 所述
      

  2.   

    session可以说是Websnap技术中的重要性占了70%,掌握好session,自我认为
    就已经是网站开发熟手了,
    不过如果是数据库管理类型的就要还要继续学一段时间了,
    多谢大师指点,
    让我再考虑一下细节问题,
    总之,是决对不能使用书本上的介绍的例子,那样的话,就没有把websnap技术
    发挥出来了。随便问一下花大师,你除了会websnap技术外还会什么网页技术呢?
    是JSP,是ASP,是WEBSERVER,是…………?
      

  3.   

    问楼主个问题
    我也是用WEBSNAP做B/S模式的管理系统
    可是我点击管理信息时常出来这样的提示
    人尚没有调用coinitialize
    请高手说一下问什么
    我用的是IIS
    2000 SERVER系统
      

  4.   

    这个问题已有很多人问过,是因为你使用了ADO驱动引擎,
    D6中用Websnap技术使用ADO不会出问题,
    D7中用Websnap技术使用ADO会出问题,是因为微软的ADO有一个非常强大的功能那就是DCOM协议,而自从D7推出后对ADO的支持弱化了,因此变成现在这样,
    当D8推出时,ADO已经不在出现在D8中,这个过程很明显是要突出Delphi自己数据库驱动引擎
    那就是DBExpress,
    在我的各方面的测试中,DBExpress确实可以,有很多地方超出了ADO的性能,在此已经可以说明垄断不得人心,人们需要的是可以跨平台的操作系统,我们也需要UNIX、Luinx……等稳定性安全性高的操作系统,在我使用中UNIX真的太稳定了,开机一年也未重启过,
    在未来的网页中还是要在这样的系统中运行。
    因此我建议你使用DBExpress,
    如果你一定要使用ADO话,你需要修改一下代码了:use activex
    ……
    procedure  WebPageModuleCreate(sender:TObject);
    begin
     coinitialize(nil)
    end;