Phpcmsv9升级后验证码不显示的解决一 例

     决定到这里开一个博客,把最近和将来遇到的技术问题经验积累起来。也将把相关的知识留存备记备用。半路出家搞网站技术,也算记录技术学习过程吧

      网站采用Phpcmsv9,版本还是2013年5月以前的。中午点击升级,提示升级成功。但在验证环节,提出超过40秒出错。考虑自己有更改代码 。就没有管。退出。


     不久,编辑就反应,后台无法登陆了。验证码不显示。

     当然是到网上找解决方案。网上的方案文章不少,大致是以下三个解决方法。

方法一:检查主机环境,是否已经开启gd库。

可以用探针,或者检查php.ini文件,搜索extension=php_gd2.dll,检查前面是否有注释符号,去掉即可。

方法二:检查配置文件是否正确。

打开配置文件:cache/configs/system.php,检查有关路径设置的地方:

//网站路径

'web_path' => '/网站所在的路径/'

如果网站安装在根目录(比如虚拟主机www、public_html、htdocs这类目录下),那么应该设置为:'web_path' => '/';如果安装在目录/blog/下,那么应该设置为:'web_path' => '/blog/' 。

方法三:检查配置文件的编码格式。

主要检查cache/configs/system.php和api/checkcode.php两个文件的文件编码是否一直,比如程序版本为utf-8版本,那么保存的时候都选择utf-8编码格式。

修改这些文件时,建议使用editplus、EmEditor、Sublime Text 等专业文本编辑器,避免使用text默认本文编辑器。同时注意是否带有BOM签名,需要去掉一些编辑器默认的BOM签名。

这个方法同样对于Phpcms 2008适用,之前碰到过,修改include/config.inc.php和checkcode.php文件编码都为ANSI编码格式(或者utf-8编码格式)就好了。


第一个因为我知道开启了。

第二条,网站位于根目录。

'web_path' => '/';这个也是对的。


第三条,两个文章均是UTF8,编码二者一致。仍然解决不了。


编辑急着工作。于是临时取消验证码。

phpcms v9 后台登陆取消验证码

主要更改以下文件
phpcms/modules/admin/index.php-------后台登陆界面主文件{【取消了验证码】}
phpcms/modules/admin/templates/login.tpl.php----------后台登陆界面模板文件

第一步
找到文件phpcms\modules\admin\index.php
注释掉第32行到第35行
$code = isset($_POST['code']) &&trim($_POST['code']) ?trim($_POST['code']) :showmessage(L('input_code'), HTTP_REFERER);
if ($_SESSION['code'] != strtolower($code)) {
showmessage(L('code_error'), HTTP_REFERER);
}
第二步
找到文件phpcms\modules\admin\templates\login.tpl.php
注释掉第38行
<label><?php echoL('security_code')?>:</label><inputname="code"type="text" class="ipt

ipt_reg"οnfοcus="document.getElementByIdx_x('yzm').style.display='block'"/>
注释掉第39行
<div id="yzm"class="yzm"><?phpechoform::checkcode('code_img')?><br/><ahref="javascript:document.getElementByIdx_x

('code_img').src='<?phpechoSITE_PROTOCOL.SITE_URL.WEB_PATH;?>api.php?

op=checkcode&m=admin&c=index&a=checkcode&time='+Math.random();void(0);"><?phpechoL('click_change_validate')?></a></div>


我因为是临时取消验证码,所以只改了第一步。


继续查找原因。点击查看XX的属性,发现指向XXX/api.php?op=checkcode&code_len=4&font_size=20&width=130&height=50&font_color=&background=&0.21347657762694355。

点击运行,居然报错。提示11行,包含文件错误,,找不到/cms/cms_phpcms/base.php。问题找到了!因为这个目录是不存在的。


我的网站根目结构是/cms_phpcms/base.php.    cms/与/cms_phpcms是并列放在根目录上的。(这样做是为了安全,静态文件缓存等放在/cms/目录中,而cms_phpcms/中的程序文件目录单列,不允许写。)

    查看PAI文件

define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
include PHPCMS_PATH.'cms_phpcms/base.php';
由于API位于CMS下,于是第二行目录变成了/cms/cms_phpcms/base.php。     
准备直接删除PHPCMS_PATH.写上绝对目录,但考虑通用性和可能转移。

改为include PHPCMS_PATH.'../cms_phpcms/base.php';

目录正常了,验证码显示也正常了。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值