Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[转换] 关于自行修改logging.php文件[转换论坛密码为16位加密的替代文件]

[复制链接]
longaqiu 发表于 2008-6-22 21:55:21 | 显示全部楼层 |阅读模式
因为我的论坛会员密码格式有大部分是16位md5加密.使用正式版的logging很多会员无法登录论坛

以下是我替换的文件地址:

Discuz! 6.1 正式版-logging.php for 转换过来的论坛
https://discuz.dismall.com/thread-908246-1-1.html


使用的是这个压缩包

16位 md5 加密的论坛有: dvbbs, 94kk, bbsxp(5.0以下开始使用的), dvphp, dxbbs, joekoe, 乐学迷你bbs,  teambbs, 乔客论坛, cpb

注:该文件替换的是 uc_client 文件夹中的文件。而且您的UC和DZ必须在同一台服务器才可以~

logging for 16md5.zip (3.79 KB)  logging for 16md5.zip (3.79 KB)
下载次数: 965


替换后以上文件后,原来无法登录的会员统统都可以登录了.但是这个文件虽然可以使用,但是却导致了论坛会员无法上传头像的问题.替换之前使用的原版文件是可以上传头像的.我自己在本地也测试过了.只要替换logging压缩包文件,就无法上传头像..(我观察帖子,发现上面的帖子写明[ 本帖最后由 ted1006 于 2008-5-5 16:20 编辑 ]) 因为DISCUZ论坛在0606有一次更新,那么,这份替换文件也就是没有被更新过的.

我使用文件对比工具,对其进行了对比.发现了部分代码跟原版有区别,以下就是所有不同的位置,我记录下来:

第一个文件位置[\uc_client\control\user.php],所有不同的位置罗列如下(上行为替换的文件,下行为最新原版的文件,里面开头的数字为行数):
  1. 33

  2.                 if(!$ignoreoldpw && $email && ($status = $this->_check_email($email)) < 0) {

  3. 33

  4.                 if(!$ignoreoldpw && $email && ($status = $this->_check_email($email, $username)) < 0) {
复制代码
  1. 54

  2.                 } elseif($user['password'] != md5(md5($password).$user['salt']) && $user['password'] != md5(substr(md5($password),8,16).$user['salt'])) {

  3. 54

  4.                 } elseif($user['password'] != md5(md5($password).$user['salt'])) {
复制代码
  1. 57(此为替换的logging文件多余的内容,原版的没有)

  2.                                 if ($user['password'] == md5(substr(md5($password),8,16).$user['salt'])) {
  3.                                         $this->db->query("UPDATE ".UC_DBTABLEPRE."members SET password='".md5(md5($password).$user['salt'])."' WHERE username='$username'");
  4.                                 }
复制代码
  1. 138

  2.         function _check_email($email) {

  3. 135

  4.         function _check_email($email, $username) {
复制代码
  1. 147

  2.                 } elseif(!$this->settings['doublee'] && $_ENV['user']->check_emailexists($email)) {

  3. 144

  4.                 } elseif(!$this->settings['doublee'] && $_ENV['user']->check_emailexists($email, $username)) {
复制代码
结束!




第二个文件位置[\uc_client\model\user.php],所有不同的位置罗列如下(上行为替换的文件,下行为最新原版的文件,里面开头的数字为行数):
  1. 86

  2.         function check_emailexists($email) {
  3.                 $email = $this->db->result_first("SELECT email FROM  ".UC_DBTABLEPRE."members WHERE email='$email'");

  4. 86

  5.         function check_emailexists($email, $username = '') {
  6.                 $sqladd = $username !== '' ? "AND username<>'$username'" : '';
  7.                 $email = $this->db->result_first("SELECT email FROM  ".UC_DBTABLEPRE."members WHERE email='$email' $sqladd");
复制代码

  1. 95

  2.                 } elseif($user['password'] != md5(md5($password).$user['salt']) && $user['password'] != md5(substr(md5($password),8,16).$user['salt'])) {


  3. 96

  4.                 } elseif($user['password'] != md5(md5($password).$user['salt'])) {
复制代码
  1. 98(此为替换的logging文件多余的内容,原版的没有)

  2.                         if ($user['password'] == md5(substr(md5($password),8,16).$user['salt'])) {
  3.                                 $this->db->query("UPDATE ".UC_DBTABLEPRE."members SET password='".md5(md5($password).$user['salt'])."' WHERE username='$username'");
  4.                         }
复制代码
完毕!

以上就是有所不同的代码对比.
请问,替换的文件哪些代码有问题.应该怎么参照原版文件修改?

比如:
替换的文件内只有($email),而DZ最新版文件却是($email, $username)
这两个有什么区别吗?替换文件是否也要改为($email, $username)

[ 本帖最后由 longaqiu 于 2008-6-22 22:04 编辑 ]
 楼主| longaqiu 发表于 2008-6-22 22:12:06 | 显示全部楼层
与原版进行比较,看来需要修改的位置并不多.我尝试把原版的代码替换到那份替换文件里面.

原先有关于($email)的,我都改为($email, $username).有关md5的内容我都没有动过(我想关于md5的内容是会员能够登录的关键代码).

可惜修改失败了,头像依然无法上传.按道理讲,原版的代码不可能有错误(因为原版文件可以上传头像).

[ 本帖最后由 longaqiu 于 2008-6-22 22:15 编辑 ]
回复

使用道具 举报

 楼主| longaqiu 发表于 2008-6-22 23:21:10 | 显示全部楼层
暂时确定的是,uc_client文件中只对email的验证没有问题.这可以改为跟原版一样的内容.
那么问题的根本原因就是md5相关的代码了.为什么这些md5相关代码影响了头像上传???

所有的md5代码:


  1.                 } elseif($user['password'] != md5(md5($password).$user['salt']) && $user['password'] != md5(substr(md5($password),8,16).$user['salt'])) {
复制代码


  1.                         if ($user['password'] == md5(substr(md5($password),8,16).$user['salt'])) {
  2.                                 $this->db->query("UPDATE ".UC_DBTABLEPRE."members SET password='".md5(md5($password).$user['salt'])."' WHERE username='$username'");
  3.                         }
复制代码
请版主测试一下,把这个文件替换uc_client文件夹中相关的文件:

https://discuz.dismall.com/attach ... 98&t=1214144109


[ 本帖最后由 longaqiu 于 2008-6-22 23:27 编辑 ]
回复

使用道具 举报

 楼主| longaqiu 发表于 2008-6-23 12:50:31 | 显示全部楼层
3楼的问题谁可以解决。。我论坛因为替换uc_client文件,一直都无法上传头像。
不替换又不行。
回复

使用道具 举报

 楼主| longaqiu 发表于 2008-6-23 18:57:15 | 显示全部楼层
3楼的代码到底是怎么样的情况.....为什么会导致会员无法上传头像.

我想自己解决,却苦于不能理解这些代码的意思....

[ 本帖最后由 longaqiu 于 2008-6-23 18:58 编辑 ]
回复

使用道具 举报

 楼主| longaqiu 发表于 2008-6-24 22:29:51 | 显示全部楼层
我该怎么办,怎么没人帮我解决..

我自己改来改去还是不能上传头像..难道我要放弃替换uc_client文件....
回复

使用道具 举报

 楼主| longaqiu 发表于 2008-6-24 23:19:16 | 显示全部楼层
有没有人可以帮助我....
回复

使用道具 举报

 楼主| longaqiu 发表于 2008-6-25 10:49:54 | 显示全部楼层
请版主测试一下....(::22::)
回复

使用道具 举报

1688688 发表于 2008-6-25 17:35:14 | 显示全部楼层
我是换了没办法登陆,用转换时用的logging.php文件替换6.1.0的一般会员可以登录,但是,管理员不能,用原版logging.php文件管理员能登陆,一般会员却不能。晕乎~换了uc中的那两个文件没有任何作用。
回复

使用道具 举报

 楼主| longaqiu 发表于 2008-6-25 23:47:50 | 显示全部楼层
我换了,会员都可以登录论坛,所有的包括管理员.

只是头像不能上传了.现在全站都是默认的系统头像...

从22号开始我问到现在还没有人可以帮助解决...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-20 23:22 , Processed in 0.036251 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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