关于tp3.2实现redis做图形验证码的经验总结

最近遇到一个问题,就是跨域会丢失session的问题,然后一开始想到的就是用token做,但是后来做忘记密码这个功能,涉及到的类文件库里面有session,会丢失导致验证一直失败,思路就变了。也是查阅了很多资料,借鉴了很多前辈的经验,经过不断测试,终于解决了这个问题。

这里是把tp自带的verify类改写成redis方式实现的。这个可以查看我上一篇文章。

一开始是redis 类没有建立。然后我看了下,TP是自带的。我就在想是不是文件引入问题,后来发现怎么修改也不对。于是继续查资料。继续测试,总是redis sever went away。百度后,解决办法是 先看redis是否能开启,防火墙问题,redis端口问题。但是无论怎么弄依旧是没有解决。很恼火。

然后就自己写了个demo,发现系统不存在redis.于是就百度找。需要安装redis拓展,php_igbinary.dllphp_redis.dll。然后

将里面的php_igbinary.dll和php_redis.dll放置到wampserver\wamp\bin\php\php5.5.12\ext中。

同时,在文件wampserver\wamp\bin\php\php5.5.12\php.ini中,添加上:

;redis
extension=php_igbinary.dll
extension=php_redis.dll

这里涉及到2个问题,一个是下载的时候,先用phpinfo查看一下自己的信息

然后找到对应的去下载。具体操作可以看我下面的链接,别人写的很详细。然后,下载redis,解压后放到一个盘下,我是放到D盘的,这个无所谓。然后在cmd中的redis目录下输入

redis-server.exe redis.windows.conf

如果展示如下信息,则说明已启动成功

                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.503 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 4080
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[4080] 27 Aug 21:45:53.723 # Server started, Redis version 3.0.503
[4080] 27 Aug 21:45:53.724 * DB loaded from disk: 0.000 seconds
[4080] 27 Aug 21:45:53.724 * The server is now ready to accept connections on port 6379

看到上图,就说明安装成功了,这里切记,一定不要关闭这个,否则Redis没法使用。

直到我测试成功,回想一下,问题的根源是我的验证码类文件无法读取到config配置,导致根本就没链接上redis,所以无法使用。这里也是我自己写死值测试才发现的。

这期间还设计到一个问题,就是tp自带的redis类文件,百度说是有Bug的,因为它继承了Cache类文件,这个类文件中的getInstance方法中,获取实例导致链接过多。to_guid_string方法获取唯一值方法没错,错误在使用$options直接获取,而$options中带有缓存key,所以,每次cache调用的时候,就重新连接redis一次。改为

不过,我发现我没改也没影响,这个大家可以自己测测看。还有个就是AUTH,这个其实就是个密码,更加安全。

这次遇到这个问题,还是自己经验不够,经过查资料解决问题后,也学到了知识,感谢前辈留下的资料。自己写这篇文章给自己做个笔记的同时,也给后来的人少走点弯路,节省点时间吧。

参考资料链接:

https://www.xiabingbao.com/php/2017/08/27/window-php-redis.html

http://www.thinkphp.cn/bug/3491.html

https://blog.csdn.net/sobeautiy/article/details/49450417

https://my.oschina.net/swingcoder/blog/1942445

https://blog.csdn.net/dengjiexian123/article/details/53047486

https://blog.csdn.net/weixin_42261421/article/details/83215436

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值