`
xvm03
  • 浏览: 140717 次
  • 来自: ...
社区版块
存档分类
最新评论

注册流程,信息保存--ZT

阅读更多

关于网站注册程序的一个设计问题,郁闷了好久了,请热心人给个答案!



这几天重构公司网站的注册程序。但一个设计问题难为了好几天,到现在仍然没有答案。 


比如有6个子页面,填完一个页面就点“下一步”,然后到下一个页面。。。这个过程中只有最后一步才将数据插入数据库中 

。那么在前几步中,用户的中间数据应该保存到哪呢?原来的注册程序我看了,是保存到session里的,并在开始的时候设 

置了一个session的有效期。至最后一步将session中的数据取出插入数据库中。。。这个方法不知道好不好,但我觉得挺 

简单。但有人说这种方式不好。可能会占用过多的服务器内存?而且是不是一个用户并没有注册,将其信息放到session中 

,这样不符合常规的设计?或者这种方式容易导致程序不稳定?。。。 

我想了另外一种方式,是把每一步的信息都放到request里面,中间的每个servlet(action)处理后dispatch到下一个页面 

,下一个页面的hidden域保存上一个页面的信息,如此类推,但如果注册的分步一多,每一步都要逐级保存更多的信息, 

比如6步,那岂不是很麻烦。。。? 

请问高手哪种方案更好,还有没有其他更好的办法? 
Feedback
Friend:网友(2007-12-17 19:09:04)
该回复于2007-12-24 14:54:30被管理员删除 

Friend:网友(2007-12-18 13:33:29)
写一个cookie到注册人的临时文件夹里,每当点击下一步时在cookies里追加信息,当点击提交时,读取cookies内容并保存到数据库,同时删除cookies文件 只是一种方法 仅供参考 

Friend:网友(2007-12-18 13:50:37)
把所有数据 写到一个 MAP  然后把MAP 存入CACHE  感觉不错 

Friend:网友(2007-12-18 14:05:06)
很想请教一下LS的具体是如何实现? 
如果是我开发的话,我就保存在session中, 
写数据库之后,清理掉session.一点愚见. 

Friend:网友(2007-12-18 20:38:37)
为什么总感觉session 不稳定呢,容易丢失吧?! 
而且session 不容易实现负载均衡吧? 

3楼的做法难道是将临时信息写到ehcache中? 


Friend:网友(2007-12-19 06:31:38)
1 放在session 里面,编程容易,安全性也好控制,毕竟每一步保存进session的都是验证过的 
2 放在cookie里面,可以节省有限的内存,因为cookie有存储限制的。 
3 放在request里面?没想过,呵呵,累人又不安全 

cookie和request页面都是可以伪造的,所以还是服务器端保存验证后的结果比较稳妥。 

建议,保存session里面,而且以整体对象形式保存,不要每个注册数据单独保存。 
<% 
User userNew = (User)session.getAttribute("userNew"); 
if(userNew==null){ 
  // 返回注册的第一页 
  // 或者 
  userNew = new userNew(); 
  session.setAttribute("userNew",userNew); 

... 
%> 


Friend:网友(2008-01-10 15:20:04)
有一个更牛的想法,把这些注册页面写进一个jsp,只是用不同的div来显示,点击下一步只是隐藏相应的div,这样的话岂不是都不用存了? 

Friend:网友(2008-01-10 16:28:51)
session 和DIV(7楼)的办法都可以! 

Friend:网友(2008-01-10 18:43:25)
div的方法不错哦 

Friend:网友(2008-01-10 19:16:16)
用javascript,点击下一步,不刷新页面,就把刚填过的信息隐藏,在把新需要填写的信息显示。 


Friend:网友(2008-01-10 19:29:13)
完善老紫竹 
1   放在session   里面,编程容易,安全性也好控制,毕竟每一步保存进session的都是验证过的,且现在最便宜的就是内存,可能会占用过多的服务器内存?(你的网站一分钟会注册多少人啊?再牛鼻的网站也不可能因为注册而耗尽内存,更何况你的注册信息其实是非常之小的) 
2   放在cookie里面,可以节省有限的内存,因为cookie有存储限制的。 (这个方法有待考虑,不是不可行,经过写cookie这一步,写session比写cookie快多了,而且cookie的大小限制,更何况也没几个人这样用,最多用来存用户名和口令) 
3   放在request里面?(你每一个页面都要从当前页面中将所有数据取出来,经过action处理后,传到下一个页面中,再取出,再传,累不累?)  

再者如果用户不完成注册就结束,你可以将session的时间设小,10分钟足够注册完了,你的网站10分钟,不会有10000人注册吧?那你担心什么! 

4   div隐藏,也是不错的想法 
<div id="div1" style="display:block"> <input ...> </div> 
<div id="div2" style="display:none"> <input ...> </div> 
不过页面要非常复杂和非常大了! 

Friend:网友(2008-02-02 14:37:56)
谢谢大家! 
不过俺最后采用的还是放到request里。 
放到request里面尽管会造成每个页面都加上一些隐藏字段,但后台采用了struts2.0的model driven 模式,所以不用每个action都定义一大堆属性。还好呵呵。不过有人说不够安全,这个我也正在考虑。。。 
请问一下大家能详细讲讲这种方式的不安全之处嘛。。。 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics