search

Home  >  Q&A  >  body text

php - 手机号码注册思路

最近在做网站手机号码注册,就是用户提交手机号码,服务端生成验证码发给用户手机,用户提交验证码比较,服务端生成的验证码应不应该存储在数据库里?还是有更好的办法,比如Session之类的。

PHP中文网PHP中文网2897 days ago1093

reply all(12)I'll reply

  • 阿神

    阿神2017-04-10 14:46:45

    最好的方法是存在内存 设置过期时间60秒左右
    可以使用memcache

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 14:46:45

    其实平常我们使用的手机验证功能已经很多了
    点击短信验证,发送短信,倒计时开始,在倒计时期限里面,用户可能因为各种原因没有收到短信,提供一个重新发送短信的接口

    可见短信验证码是不需要持久化存储的,这个东西放在内存中设定精确的过期时间是很好的解决方案,session的过期时间并不是严格的,比如设定60s,但是不一定会在60s的时候清除。redis,memcache都可以实现验证码内存存储自动过期功能。

    在数据库里,只要一个字段,标识用户是否经过手机短信认证了

    当然如果你的应用从一开始,不经过短信认证就无法,注册,这个标识字段就没有多大意义了

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 14:46:45

    建议还是存储在数据库,并且设定一个字段是是否验证。这样,可能更方便你去操作。

    reply
    0
  • 阿神

    阿神2017-04-10 14:46:45

    个人觉得点击发送验证码后,服务器端生成验证码和时间,存储在session里即可,提交后比对验证码和时间戳即可,即便是内在内在里也最好存储上时间,毕竟缓存时间不会太精确。

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 14:46:45

    建议保存数据库,可以做更多的事情,例如:

    1. 验证发送验证码次数
    2. 今日验证码错误次数

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 14:46:45

    短信接口是否提供真实的消息到达通知?
    短信发送记录建议持久化保存.
    1、避免短信轰炸 你懂的;
    2、短信发送不是免费的吧。

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 14:46:45

    用REDIS吧,设置一个key的有效时间即可

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 14:46:45

    重点是短信服务商。。。。。。。40分钟。。才收到验证码的时候,你就呕血

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 14:46:45

    ajax验证,放在缓存中,设置过期时间,缓存判断取code进行验证

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 14:46:45

    验证码使用缓存,数据库中增加验证字段,设置个过期时间就可以,错误次数等都可以写在缓存里。

    reply
    0
  • Cancelreply