如何修改源代码——记如何屏蔽phpcms邮箱验证

本文详细描述了在phpcms用户注册过程中遇到邮箱验证问题的解决方案,包括屏蔽不必要的验证函数、修改关键代码以实现正常注册流程,并解释了为何不同操作系统环境下表现不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

既然题目说的这么大,那就从头开始说。
phpcms用户注册中,是要求填写邮箱的。如何屏蔽掉费了不少脑细胞。不错,百度,google是最好的老师。不过,这个老师对于这些商业性的东西还是知之甚少。
比如这个问题,搜来搜去就搜到几个帖子。
其中一个是这么说的:
在member - index - register函数中,有这么一句
………………………………
if(pc_base::load_config('system', 'phpsso')) {
                                $this->_init_phpsso();
                                $status = $this->client->ps_member_register($userinfo['username'], $userinfo['password'], $userinfo['email'], $userinfo['regip'], $userinfo['encrypt']);

                          if($status > 0) {
…… ……………………
因为email验证不通过,下面的代码无法进行,这么,他提出了:将status强制赋值为1,问题解决。
我用这个方法改完后,在win7下确实解决了问题。(后来才知道我那个真是莫名其妙)
但是,在ubuntu下的服务器就没那么幸运了,这样确实能注册,但是注册完毕后,  v9_member`    这个表里面,phpssouid这个字段所有的值都是1.
仔细查看代码:
131行:$userinfo['phpssouid'] = $status;      也就是说,这个字段决定了phpssouid值,但是这个值又决定着登录时的搜索。

所以,我们的方法是不行的。

<!-----------------相信大家都认识我,我是淫荡的分割线---------------->

既然之前的方法是不行的,那么我们就刨根问底,看看$status是怎么来的。
$status = $this->client->ps_member_register($userinfo['username'], $userinfo['password'], $userinfo['email'], $userinfo['regip'], $userinfo['encrypt']);
那么,我们去找这个函数去。$this->client->ps_member_register说明它在
\phpcms\modules\member\classes\client.class.php中。查找它在第26行。
这里和email有关的有两个:
一个是_is_email,会返回-3,一个是_ps_send函数。
直接查找  _is_email函数,在445行,直接return true算了。(其实更好的是将_is_email函数屏蔽)。
那看下return $this->_ps_send('register', array('username'=>$username, 'password'=>$password, 'email'=>$email, 'regip'=>$regip, 'random'=>$random));
        
继续查找_ps_send,314行,好吧,看一眼就知道,我们还得查两个,一个是_ps_post,330行,单纯的post。
还有一个就是/index.php?m=phpsso&c=index&a=".$action  ,也就是说,send也是一个基本函数。去找action吧。
//m=phpsso&c=index&a=register
打开\modules\phpsso\index.php,找到register函数。
很明显,54行有个check email函数。上面的注释也说的很明白,返回-2,为邮箱重复,查找返回-2的。
525行,查找函数注释:返回-1为邮箱存在。
从头看这个函数,开始的时候,验证,为空则返回重复-1.
最后有个数据库检查$r = $this->db->get_one(array('email'=>$this->email));
有则为-1.
由于这里改动较多,而且我们的需求是不要邮箱验证。那么,从上面去掉注册时的检查就好了。
还记得么,刚才的那个函数,54行check email,注释掉吧,这样,邮箱验证ok。

由于原电脑不在身边,至今不知道为什么原系统能正常注册……

转载于:https://my.oschina.net/u/246088/blog/101996

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值