点击 Sign In / Join Free 链接注册用户时,填完信息后。验证码永远是错的。必须手动点一下验证码换新的才可以注册

bug问题 · myred08 · 于 5年前 发布 · 3245 次阅读

点击 Sign In / Join Free 链接注册用户时,填完信息后。验证码永远是错的。必须手动点一下验证码换新的才可以注册

\vendor\fancyecommerce\fecshop\app\appfront\theme\base\front\customer\account\register.php

<?php $this->endBlock(); ?>  
</script>
<?php echo \Yii::$service->session->get("captcha_session_key")." sesionnnnnnnnnnn";?>

输出的结果显示,session的值 和图片的不一致

点击刷新,点快点发现。 captcha_session_key的值 不会变。 验证码图的一直在变。 大约要过几十秒才会变化。 点手动点验证码的图片后,刷新发现captcha_session_key的值才和图的一致。

共收到 6 条回复
myred08#15年前 0 个赞

redis-server -v

[root@localhost fecshop]# redis-server -v
Redis server v=4.0.9 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=fe3b40b8e2693845

发现论坛里有人和我的情况一样 http://www.fecshop.com/topic/499

打开 @app/web/index.php,显示//ini_set('session.cookie_domain', '.fancyecommerce.com'); 这行为注释状态。

<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_COMPILE_WARNING ); //除去 E_NOTICE E_COMPILE_WARNING 之外的所有错误信息
//ini_set('session.cookie_domain', '.fancyecommerce.com'); //初始化域名,
Terry#25年前 0 个赞

@myred08 [#1楼](#comment1) 嗯,你的版本比较老一点吧?

这个在新版本中都默认注释掉了,这行代码只能按照自己的域名,进行设置,目的是为了子域名多语言商城, 譬如 www.fecshop.com en.fecshop.com cn.fecshop.com这种不同子域之间共享session

https://github.com/fecshop/yii2_fecshop_app_advanced/blob/master/environments/prod/appfront/web/index.php

https://github.com/fecshop/yii2_fecshop_app_advanced/blob/master/environments/dev/appfront/web/index.php

myred08#35年前 0 个赞

@Terry #2楼 不是redis的问题。 我安装的版本是最新版的。 我用 360和火狐注册没有问题。但用google浏览器注册有问题。 那么问题来了。360浏览器的内核是用google的。 所以BUG就有点怪了。 (有问题的chrome 版本Version 66.0.3359.139 (Official Build) (64-bit))。 再有就是我用这个浏览器去 http://fecshop.appfront.fancyecommerce.com/customer/account/register 作者demo站测试又没有问题。坛子里有人也有这个问题。所以想了一个法子,如果有其他的人问题和我一样试试用我的方法处理看看。

\vendor\fancyecommerce\fecshop\app\appfront\theme\base\front\customer\account\register.php

<img class="login-captcha-img"  title="click refresh" src="<?= Yii::$service->url->getUrl('site/helper/captcha');?>" align="absbottom" onclick="this.src='<?= Yii::$service->url->getUrl('site/helper/captcha'); ?>?'+Math.random();"></img>
改成
<img class="login-captcha-img"  title="click refresh" src="<?= Yii::$service->url->getUrl('site/helper/captcha');?>?<?php echo md5(time() . mt_rand(1,1000000));?>" align="absbottom" onclick="this.src='<?= Yii::$service->url->getUrl('site/helper/captcha'); ?>?'+Math.random();"></img>

修改完用三个浏览器测试,都没有问题了。

myred08#45年前 0 个赞

如果你有这问题。请在这里留言。有问题的人多了,建议作者大大修改代码喽。

Fecmall#55年前 0 个赞

@myred08 [#4楼](#comment4)

这个是某些浏览器缓存问题,导致验证码图片没有加载导致的问题,你的解决方式是不错的,加一个随机url后缀

另外,除了注册,还有好几处验证码的地方都需要修改,譬如评论,contacts,login,忘记密码等

已经修复这个bug:

https://github.com/fecshop/yii2_fecshop/commit/ffd62208ca333a77f273fb246b9ab2834dc84b66

myred08#65年前 0 个赞

@Fecshop #5楼 感谢作者采纳!:)

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics