天空小小岛技术论坛

 找回密码
 注册
搜索
查看: 4691|回复: 0
打印 上一主题 下一主题

[PHP] phpwind 前台可登录,后台登录不上的问题解决方案(新下载安装的 pw8.7 版)

[复制链接]
跳转到指定楼层
1#
phper 发表于 2013-9-8 21:11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
phpwind8.7 新下载的程序,安装后前台正常登录,后台死活登录不上。
看了一下安装程序之后,终于明白了原因。

分析过程
密码写入过程
install.php 中
  1. InitGP(array('dbhost','dbuser','dbpw','dbname','database','PW','manager','manager_pwd','manager_ckpwd','manager_email'));
复制代码
InitGP 定义在 require/common.php
  1. function InitGP($keys, $method = null, $cvtype = 1) {
  2. S::gp($keys, $method, $cvtype);
  3. }
复制代码
class S 是在 require/security.php
gp 方法调用的是 S::escapeChar
escapeChar 最后调用的是 S::escapeStr
那么具体看一下 escapeStr 这个方法
  1. function escapeStr($string) {
  2. $string = str_replace(array("\0","%00","\r"), '', $string); //modified@2010-7-5
  3. $string = preg_replace(array('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','/&(?!(#[0-9]+|[a-z]+);)/is'), array('', '&'), $string);
  4. $string = str_replace(array("%3C",'<'), '&lt;', $string);
  5. $string = str_replace(array("%3E",'>'), '&gt;', $string);
  6. $string = str_replace(array('"',"'","\t",'  '), array('&quot;','&#39;','    ','&nbsp;&nbsp;'), $string);
  7. return $string;
  8. }
复制代码
这里有进行一些替换操作,例如
  1. &
复制代码
会被替换成
  1. &amp;
复制代码
所以,密码里如果有类似 & > < 等将会被替换

密码校验过程
a、前台校验
login.php 中接受参数和安装过程中写入时接受时相同,都做了替换
  1. S::gp(array('pwuser','pwpwd','question','customquest','answer','cktime','hideid','jumpurl','lgt','keepyear', 'ajax', 'ajaxstep'),'P');
复制代码
b、后台校验
admin/admincp.php 接受参数对密码并未替换,而是直接使用 $_POST['admin_pwd']
  1. $CK = array($timestamp,$_POST['admin_name'],md5(PwdCode(md5($_POST['admin_pwd'])).$timestamp.getHashSegment()),$safecv);
复制代码
所以后台登录不上。

解决方案
方案一、调整文件记录的 md5 码,好处:以后升级不会再次出现后台登录不上,不方便:需要找个地方生成 md5 码
操作
打开 http://www.cmd5.com/
在 密文 栏输入密码,下方出现 md5(1>,32) =
复制32位的 md5 码
打开 data/sql_config.php
找到
  1. $manager_pwd = array('*********');
复制代码
将两个单引号内容替换成刚才生成的 md5

方案二、临时修改,让后台的校验和前台的一样
打开 admin/admincp.php
找到
  1. if ($_POST['admin_pwd'] && $_POST['admin_name']) {
复制代码
在下面加一行
  1. S::gp('admin_pwd');$_POST['admin_pwd'] = $admin_pwd;
复制代码
最后
还是建议 phpwind 将两处校验修改成一样的方式,以避免今后带来的不便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|天空小小岛  |京ICP备2025130156号|

GMT+8, 2025-6-22 03:54 , Processed in 0.083977 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表