回送处理流程图;
图6为数据复原时的处理流程图;
图7为具数据复原功能的用户注销处理流程图;
图8a、图8b为历史资料文件的架构图。
【具体实施方式】
[0023]本发明是提供一种电子商务系统的用户管理方法。为了设计一个可精确掌握使用者状况的使用者管理机制,我们必须在下列时机点上进行必要的管控处理: 使用者登入时:当使用者登入时验证成功后必须将该用户数据记录下来。
[0024]开始执行网页:用以判断使用者是否已登入或使用者是否具备足够的权限以执行这个网页。
[0025]定期回送:已登入使用者的浏览器,必须通过网页请求的方式定期回送到服务端,以定期回送该使用者仍在于线的讯息给服务器,同时更新其存活时间,让服务器知道其仍然上线中。定期回送的数据可以Ajax完成。
[0026]使用者注销:已登入用户相关的登入资料删除的处理。
[0027]图la到图1d为本发明的第较佳实施例,图中粗线部份为服务端的处理,细线灰底部份为浏览器的工作处理,在本实施例中我们在服务端设置如图4的已登入使用者数据表,其至少包括用户账号以记录该联机登入的使用者、Sess1nID用以识别不同的联机及最近存活时间的记录用以记录该联机的最近的回报时间。另外在每个用户联机的Sess 1n对象中储存该用户联机的使用者账号,用以自动提供使用者账号以识别出不同的使用者联机。在成功登入后将用户的账号记录在已登入使用者数据表,并更新其最近存活时间,然后并储存在该使用者联机的Sess1n对象中。由在网页的所有互动皆在浏览器端进行,也就是,网页的进行时程中,大部份时间都在浏览器端进行,因此,为了不被服务端”遗忘”浏览器端使用者联机的存在,浏览器必须利用Ajax技术,每隔回报周期便以网页请求(HTTPRequest)的方式告知服务器该使用者联机仍然上线使用中。而在具安全性考虑的应用系统中在网页请求后,执行该网页前,通常需先检验该联机的使用者是否已登入或其权限是否足够,我们就可利用检查Sess1n对象的用户账号的有无来判断该使用者联机是否已登入,若无者表示未登入,若有者,表示已登入,但仍须利用其储存在已登入使用者数据表的最近存活时间以判定联机的有效性,计算现在时间减去最近存活时间称的为未回报期间,若未回报期间是否大在断线超时时限则表示该联机为无效联机,反的,则为活跃中的联机。而当使用者注销时,则将已登入使用者数据表中该用户的数据删除,并将该用户联机的Sess1n对象中的使用者账号删除。由在HTTP的无状态性及无连接性,为了避免浏览器端关闭浏览器或离开该已登入的网页应用系统到另其他的网页应用系统的状况,因服务端无法察觉前述的浏览器的动作,而造成浏览器端实际上已注销,但服务端的用户登入数据中仍表示为上线中的不致现象,我们也针对浏览器的关闭及网页转向捕捉前述动作所引发的事件,并设定发生该事件时执行注销的动作,以精确掌握使用者的状况。此外,我们也可使用Cookie的功能来取代Sess1n的功能,也即,原来储存在Sess1n物件的使用者账号,可以改成储存在Cookie对象中,当然其他步骤中需要读取使用者账号时,同时改成读取Cookie对象中用户的名称。
[0028]图la为用户登入的处理流程:
第la-Ι步骤:浏览器在使用者输入必要的使用者资讯后,按下登入按钮将数据交付(Submit)传送到服务端。
[0029]第la-2步骤:服务端接收数据后利用用户数据文件进行必要的用户账号与密码的验证作业,若未通过验证则连结到重新登入页面、结束登入作业或进行其他处理,可依网站的设计策略来改变。
[0030]第la-3步骤:在已登入使用者数据表中,新增笔用户记录,并将用户账号及该联机的Sess1nID储存在该笔记录。
[0031]第la-4步骤:将已登入使用者数据表的最近存活时间更新为现在时间。
[0032]第la-5步骤:取代表使用者(如user)的字词当成键值,将用户账号记录在对应在该键值的Sess1n对象中。
[0033]第la-6步骤:执行其他工作或连结到其他网页。
[0034]图lb为对服务端提出网页请求(HTTPRequest)后,若本网页为需登入的网页,则进行该被请求网页的处理流程:
第lb-ι步骤首先判断本网页是否为具安全性需登入的网页,若为否,则直接执行网页,毋须检查使用者是否登入。若为是则继续进行下述的工作。
[0035]第lb-2步骤:以步骤la-5所取的键值,检查对应在该键值的Sess1n对象是否记录用户账号,若为否表示该使用者尚未登入,进行未登入的处理或连结到未登入处理的网页。
[0036]第lb-3步骤:以Sess1nID为键值,在已登入使用者数据表中取出该联机的最近存活时间,计算现在时间减去最近存活时间称的为未回报期间,检查未回报期间是否小于等在断线超时时限,若为否,则表示该使用者已断线,进行未登入的处理或连结到未登入处理的网页。
[0037]第lb-4步骤:进行网页主要的处理部份(如数据库存取计算或报表的编排等工作)。
[0038]第lb-5步骤:待服务端处理完成将网页送到浏览器,以浏览器脚本语言(如javascript或vbscript等)设定捕捉关闭浏览器及浏览器离开该已登入网页的事件(如body标签的onunload事件),并设定发生该些事件时,即执行注销网页的动作。
[0039]第lb-6步骤:设定浏览器定期回送给服务端的回送周期。此功能使用浏览器脚本语言(如javascript或vbscript等)计时事件(如setTimeout或set Interval)即可完成。
[0040]第^-了步骤:执行剧览器必要执行的其他动作。
[0041]图lc为定期回送的处理流程:
第lc-1步骤:在第lb-6步骤中已设定了浏览器的回报周期,当回报周期时间到,浏览器即使用Ajax技术送出网页请求到服务端。
[0042]第lc-2步骤:以步骤la-5所取的键值,检查对应在该键值的Sess1n对象是否记录用户账号,若为否表示该使用者尚未登入,进行未登入的处理或连结到未登入处理的网页。
[0043]第lc-3步骤:以该联机的Sess1nID为键值,将已登入使用者数据表中该联机的最近存活时间记录更新为现在时间。
[0044]图1d为用户注销的处理流程:
第ld-1步骤:以步骤la-5所取的键值,检查对应在该键值的Sess1n对象是否记录用户账号,若为否表示该使用者尚未登入,进行未登入的处理或连结到未登入处理的网页。
[0045]第ld-2步骤:删除已登入使用者数据表中该用户的数据。
[0046]第ld-3步骤:删除Sess1n对象中用户数据的记录。
[0047]使用图lc的定期回送机制,当网络暂时性发生问题
使得定期回报讯息无法回送到服务端,进行存活时间更新时,Sess1n对象因为网页不动作超时,使得原来存放在Sess1n对象中的用户账号遗失,当网络恢复畅通时,会被认为该联机已断线,因此必须重新登入,但事实是该联机并未断线且用户并继续在使用中,因而造成使用上的不便。图le与图lc同为定期回送的处理流程,但其演算法要比图lc来得更加强健,其主要不同点在于图le的方法不以Sess1n对象是否记录用户账号来判断使用者是否是登入联机中,而是以已登入使用者数据表有无记录该联机的登入信息为判断准则,若有则表示该联机仍然有效,反的,则表示该联机为断线未登入状态,同时,若在该联机仍然有效的情况下且Sess1n对象中的用户帐号已丢失,则读取已登入使用者数据表令该联机的记录并将用户账号记录在服务器的Sess1n对象中,以表示该联机为已登入且为有效的联机,因此图le可克服因为网路暂时的故障,造成Sess1n对象因为网页不动作超时而丢失Sess1n对象的用户数据所造成的假性断线的问题。图le的处理流程为:
第le-Ι步骤:在第lb-5步骤中设定了浏览器的回送周期,当周期时间到,浏览器即利用Ajax技术送出网页请求到服务端。
[0048]第le-2步骤:以该联机的Sess1nID为键值,从已登入使用者数据表读取该联机的登入记录。
[0049]第le-3步骤:若前步骤欲读取的数据不存在,表示该联机为断线未登入状态,并进行未登入的处理。
[0050]第le-4步骤:以现在时间更新已登入使用者数据表的该联机数据中的最近存活时间记录。
[0051]第le-5步骤:判断Sess1n对象中是否记录用户帐号,若有,则结束定期回送作业。
[0052]第le-6步骤:若Sess1n对象中没有记录用户帐号,则将读取到的使用者账号,以步骤la-5所取的键值,记录在服务器的Sess1n对象中。
[0053]为