怎样设计密码重设功能
2013-10-01

当我们设计一个带有用户注册/登录功能的网站的时候,一个必须的功能就是重设密码。 重设密码功能有很多种设计方式,比如发送一个新密码到用户邮箱等。不过今天我要介绍一个我经常用实现方式。

用户流程:

  1. 用户忘记密码,来到密码重设界面
  2. 用户输入Email地址,点击重设密码按钮
  3. 用户收到一封密码重设邮件,里面有重设密码的链接,此链接有过期时间
  4. 用户点击链接,来到密码重设页面,输入新密码,完成

这个流程并没有什么创新,很多网站都是用这套流程

后端实现方式:

  1. 当用户输入Email地址后,验证这个Email,如果存在于数据库,那么取得用户的user_id
  2. 将user_id和当前时间戳编码成HASH,需要提前准备好一个KEY,并且这个KEY只存在服务器上。  HASH = md5 ( user_id + timestamp + KEY )
  3. 生成一个URL,并且附带刚刚生成的HASH和用户id以及timestamp,比如 http://domain.com/reset-password.php?hash=HASH&user_id=123&timestamp=1392121211
  4. 当用户访问这个URL, 检查HASH是否合法: HASH == MD5 ( user_id + timestamp + KEY)
  5. 检查 timestamp 是不是过期了
  6. 如果所有检查通过,那么显示一个新密码表单给用户

这种方式的好处:

  1. 不需要额外的数据表
  2. 不用担心参数被用户恶意修改,因为要检查hash是不是等于那几个参数的md5
  3. 密码重设URL自带时间戳
  4. 只要KEY设置的足够长足够复杂,那么可以认为HASH是绝对安全的

更详细的样例代码可以参考这里:http://jszen.com/reset-password-system.6.html

完。

3739 read 5 comment(s)
最方便的纯文本编辑器Mac Only
2013-07-25

    Mac操作系统里面有个好用的东西叫做Dashboard,Windows的桌面小工具就是抄的Dashboard。   Dashboard里面的Widget都是用网页技术做的(HTML, Javascript 等),Dashboard仅仅是提供一个透明的window来显示widget的网页而已。

    Mac操作系统自带的Widgets里面就有一个叫做“便签”的东西,可以实现类似记事本的功能,但是记录的文本有限,不能超过便签窗口的大小,实际使用起来十分蛋疼。

    我这个小东西的特点是这样的:

  • 提供一个白底黑字的文本框显示在dashboard界面
  • 文本框使用textarea控件,里面的文字保证没有任何格式
  • 理论上可以在里面输入无限制长度的字符
  • 关闭dashboard界面的时候,文本框里面的文字内容自动保存到硬盘
  • 窗口大小可以自由调节
  • 支持添加多个窗口到dashboard

 

    下载: here    源代码:Github page

完。

3628 read 1 comment(s)
原创jQuery插件: Date Range Picker
2013-07-23

某些时候,我们需要用户输入一个日期范围,比较直观的想法是用两个date picker控件。但是两个date picker给用户带来的体验并不好。于是我搞了个jQuery插件,可以实现在一个界面里面选择日期范围,并且将选择的值输出到一个input框中。

  • 依赖 jQuery 1.3+, Moment 2.0.0+
  • 支持 IE6+, Firefox, Chrome, Safari 等浏览器
  • 支持多语言
  • 界面完全CSS可控

文档以及代码见我的英文博客:http://jszen.com/jquery-date-range-picker-plugin.4.html

下载:https://github.com/longbill/jquery-date-range-picker

完。

3839 read 2 comment(s)
关于电池容量你应该知道的
2013-01-29

    直到今天才发现一个惊人的事情:iPad3的电池容量是11666mAh,而macbook pro的电池容量才5000多mAh。为什么iPad3那么小的体积内可以装下比mbp更多的电池容量呢?难道采用了什么新的科技?

    于是google了下,又发现一个惊人的事情:一般电池上标的容量单位是mAh,但是学过物理的都知道,电流乘以时间不是一个能量单位,还少了一个电压。相信跟我一样到现在才发现这个问题的同学还有很多,那么我就普及下高中物理知识:

  • 电流单位A(安培),  1000mA = 1A
  • 电压单位V(福特)
  • 功率单位W(瓦特)  
  • 能量单位J(焦耳),但是在电子产品的电池上很少用这个单位。一般用Whr(瓦时)表示能量。

 

  • 能量=功率x时间
  • 功率=电压x电流
  • 能量=电压x电流x时间

    综上,mAh并不是一个准确的表示电池容量的单位,它的出现应该同时标明电压(大部分手机等电子设备是固定的3.7V)。Whr是能量单位,可以表示电池的容量。

    所以,在比较电池容量的时候,请先确定电压是否一样。如果不一样,就要乘以各自的电压转换成Whr再比较。

    所以,mbp的电池上标明容量是60Whr,电压大约10.95V(算得mAh表示法大约5480mAh)。而iPad3的11666mAh大约工作在3.7V的电压下,算得大约43Whr。所以iPad3的电池是没有比mbp电池容量大的。

完。

5660 read 5 comment(s)
记一次海淘经历
2013-01-09

很喜欢hollister这个牌子,但是国内貌似只有深圳上海北京有店。这马上就要回成都了,买不到了。于是就去他们官方网站看看。

国内IP访问他们网站会被强制跳转到香港站。衣服的价格是港币,标价跟深圳的店差不多。对比起来网购没什么优势啊,就一个港币汇率8折。于是放大招,通过IP位于日本的代理再次访问他们网站。哇,出来了。美元标价换算成人民币相当于只要六七折啊,而且这圣诞新年打折更便宜啊。在深圳店里面1600不打折的羽绒服,美元只要139刀啊。接近5折了!而且美国版网站跟香港版网站同样支持送货到国内地址的。 

于是选购了两百多刀的各种东西,给了20刀的邮费,感觉就算完事了,坐等收货。看来还是想太简单了。没过几天,fedex给我电话说让我报税。还非得按invoice上的价格来报,20%的税率。折腾了几次打印扫描后总算也把入关手续弄好了。交了310人民币的税。 从美国发货到我收到货大概七八天吧。现在算来,加上邮费加上缴税,还是比实体店便宜不少,甚至比香港人通过网站买还便宜不少。。。

衣服貌似有些是越南产的,有些是中国产的。自己地方产的东西到美国去走一圈,价值就翻了那么多。更可恶的是他们还歧视中国人啊,默认访问的香港版网站卖的价格还更贵。

PS. 喜欢这个牌子是因为无意间逛到了深圳的实体店,店内很有风格,服务员都是帅哥美女尤其是那个收银的小妹。。。。服务员还满口英语,感觉很洋盘的样子。还有店的味道很不错。总的说来就是一次很愉快的经历。让我第一次觉得逛街其实也可以很享受嘛。 

另外,不知道有没有什么办法可以免去这个关税。知道的同学支个招呗。

完。

5732 read 2 comment(s)
[1] 2 3 4 ...35 下一页
Copyright © Longbill 2008-2014 , Designed by EndTo , Powered by EndCMS