Sablog-x 2.0 修改用户信息失败BUG

今天又发现了一个 Sablog-x 2.0 的BUG哦!

文章最后提供了修改后的文件代码下载链接!直接解压缩覆盖即可!

其具体问题是:

  1. 管理员后台修改其他用户密码之后,导致其他用户无法登录(密码错的缘故)。
  2. 所有用户无法修改自己的密码
  3. 注册新用户时,系统不会记录新用户的email问题
  4. 新建用户,修改用户,编辑用户密码的密码过滤BUG

解决方法:

有些地方没有写出原来的代码内容,如果大家修改过源代码,请注意查看一下要改动的代码是否和我提供的代码相似,代码都是按顺序从上往下修改的。很多地方都是将password修改为newpassword,关于一个单词拼写错误我也改了一下,comfirmpassword改为confirmpassword。大家注意一下。后面是具体改动内容。

打开templatesadminuser.php

第118行

  1. <input class="formfield" type="password" name="password" size="50" value="" /><br />  

改为

  1. <input class="formfield" type="password" name="newpassword" size="50" value="" /><br /> 

第125行

  1. <input class="formfield" type="password" name="comfirpassword" size="50" value="" /><br /> 

改为

  1. <input class="formfield" type="password" name="confirmpassword" size="50" value="" /><br /> 

打开adminuser.php

将51行,104行改为:

  1. $confirmpassword = trim($_POST["confirmpassword"]); 

将74行,123行改为:

  1. if ($newpassword != $confirmpassword) { 

将77行和126行这两行替换为:

  1. if (strpos($newpassword," ") !== false || strpos($newpassword," ") !== false || strpos($newpassword," ") !== false) { 

将154行和155行替换为:

  1. $newpassword        = $_POST["newpassword"]; 
  2. $confirmpassword = $_POST["confirmpassword"];       //大A居然写成了comfirmpassword 

将168行~186行替换为:

  1. if ($newpassword) { 
  2.  $user = $DB->fetch_one_array("SELECT password FROM {$db_prefix}users WHERE userid="$sax_uid""); 
  3.  if (!$user) { 
  4.   redirect("出错,请尝试重新登陆再进行此操作"); 
  5.  } 
  6.  if ($old_password != $user["password"]) { 
  7.   redirect("密码无效"); 
  8.  } 
  9.  if(strlen($newpassword) < 8) { 
  10.   redirect("新密码长度不能小于8位"); 
  11.  } 
  12.  if ($newpassword != $confirmpassword) { 
  13.   redirect("请确认输入的新密码一致"); 
  14.  } 
  15.  if (strpos($newpassword," ") !== false || strpos($newpassword," ") !== false || strpos($newpassword," ") !== false) { 
  16.   redirect("密码包含不可接受字符"); 
  17.  } 
  18.  $password_sql = ", password="".md5($newpassword)."""

将191行替换为:

  1. if ($newpassword) { 

打开cp.php

第161行,把原来的代码修改一下,增加上email和”$email”,如下:

  1. $DB->query("INSERT INTO {$db_prefix}users (username, password, logincount, loginip, logintime, email, url, regdateline, regip, groupid, lastip, lastvisit, lastactivity) VALUES ("$username", "$password", "1", "$onlineip", "$timestamp", "$email", "$url", "$timestamp", "$onlineip", "3", "$onlineip", "$timestamp", "$timestamp")"); 

 


更多



3 Comments

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>