用户名 UID Email
如愿以偿... +++
级别: 荣誉会员
楼主  发表于: 2006-05-23 20:41

 登录增加安全提问功能 for PW432

友情提示:
安装插件有风险,请谨慎行事!安装前注意备份相应的文件以及数据库!
需要运行safeins.php或手动在pw_members表里面增加两个字段来记录用户的安全选择!
本机测试通过,有bug请留言!!

1.register.php
查找
复制代码
  1. foreach($S_key as $value){
  2.     if (strpos($regname,$value)!==false){
  3.         Showmsg('illegal_username');
  4.     }
  5.     if (strpos($regpwd,$value)!==false){
  6.         Showmsg('illegal_password');
  7.     }
  8.   }

在后面添加
复制代码
  1. if($regquestion != 0 && trim($reganswer)==""){
  2.     showmsg("您选择了安全问题,答案不能为空!");
  3.   }

继续查找
复制代码
  1. $rg_sign     =   Char_cv($regsign);

在后面添加
复制代码
  1. $rg_answer   = trim($reganswer);

继续查找
复制代码
  1. $db->update("INSERT INTO pw_members (username, password, email,publicmail,groupid,memberid,icon,gender,regdate,signature,introduce,oicq,icq,site,location,bday,receivemail,yz,signchange) VALUES ('$rg_name','$rg_pwd','$rg_email','$rg_emailtoall','$rg_groupid','$rg_memberid','$regicon','$rg_sex','$timestamp','$rg_sign','$rg_introduce','$rg_oicq','$rg_icq','$rg_homepage','$rg_from','$rg_birth','$rg_ifemail','$rg_yz','$rg_ifconvert')");

替换为
复制代码
  1. if($regquestion != 0){
  2.     $db->update("INSERT INTO pw_members (username, password,safeq,safea, email,publicmail,groupid,memberid,icon,gender,regdate,signature,introduce,oicq,icq,site,location,bday,receivemail,yz,signchange) VALUES ('$rg_name','$rg_pwd','$regquestion','$rg_answer','$rg_email','$rg_emailtoall','$rg_groupid','$rg_memberid','$regicon','$rg_sex','$timestamp','$rg_sign','$rg_introduce','$rg_oicq','$rg_icq','$rg_homepage','$rg_from','$rg_birth','$rg_ifemail','$rg_yz','$rg_ifconvert')");
  3.   }else{
  4.     $db->update("INSERT INTO pw_members (username, password, email,publicmail,groupid,memberid,icon,gender,regdate,signature,introduce,oicq,icq,site,location,bday,receivemail,yz,signchange) VALUES ('$rg_name','$rg_pwd','$rg_email','$rg_emailtoall','$rg_groupid','$rg_memberid','$regicon','$rg_sex','$timestamp','$rg_sign','$rg_introduce','$rg_oicq','$rg_icq','$rg_homepage','$rg_from','$rg_birth','$rg_ifemail','$rg_yz','$rg_ifconvert')");
  5.   }


2. register.htm
查找
复制代码
  1. <!--
  2. EOT;
  3. if($rg_emailcheck){print <<<EOT
  4. -->
  5. <font color=red>帐号需要EMAIL激活,请如实填写</font>
  6. <!--
  7. EOT;
  8. }print <<<EOT
  9. -->
  10. </td></tr>

在后面添加
复制代码
  1. <tr>
  2. <td class='f_one'>安全提问:</td>
  3. <td class='f_one'><select name="regquestion">
  4. <option value="0">无安全提问</option>
  5. <option value="1">喜欢的地方</option>
  6. <option value="2">最尊敬的人</option>
  7. <option value="3">最想去的地方</option>
  8. <option value="4">您最想念的人名字</option>
  9. <option value="5">您的个人计算机的型号</option>
  10. <option value="6">您所在的省市</option>
  11. <option value="7">身份证的最后四位数字</option>
  12. <option value="8">您最喜欢的操作系统</option>
  13. </select> <b>如果您启用安全提问,登录时需填入相应的项目才能登录</b>
  14. </td>
  15. </tr>
  16. <tr>
  17. <td class='f_one'>回答:</td>
  18. <td class='f_one'><input type="text" name="reganswer" size="25"></td>
  19. </tr>


3. require/checkpass.php
查找代码
复制代码
  1. function checkpass($username,$password,$sq,$sa){

将其替换为
复制代码
  1. function checkpass($username,$password,$sq,$sa){

继续查找代码
复制代码
  1. $men_pwd=$men['password'];

在后面添加
复制代码
  1. $men_sq =$men['safeq'];
  2. $men_sa =$men['safea'];

继续查找代码
复制代码
  1. $men=$db->get_one("SELECT m.uid,m.password,m.groupid,m.yz,md.onlineip FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE username='$username'");

替换为
复制代码
  1. $men=$db->get_one("SELECT m.uid,m.password,m.safeq,m.safea,m.groupid,m.yz,md.onlineip FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE username='$username'");

继续查找代码
复制代码
  1. if(strlen($men_pwd)==16){
  2.           $check_pwd=substr($password,8,16);/*支持 16 位 md5截取密码*/
  3.         }

在后面添加
复制代码
  1. if($men_sq!='0'){
  2.           if($sq == 0){
  3.             showmsg("您已经设置了安全问题,请返回!");
  4.           }elseif($sq!=$men_sq || trim($sa)!=$men_sa){
  5.             showmsg("您选择的安全问题或答案与您设置的不符!");
  6.           }
  7.         }elseif($men_sq=='0' && $sq != 0){
  8.           showmsg("您没有设置安全问题,请返回!");
  9.         }


4.login.htm
查找代码
[/code]
<tr><td class=head colspan=2 height=27><b>登录程式</b></td></tr>
<tr><td rowspan=7 width=3%></td>
[/code]
替换为
复制代码
  1. <tr><td class=head colspan=2 height=27><b>登录程式</b></td></tr>
  2. <tr><td rowspan=9 width=3%></td>

继续查找
复制代码
  1. <input type="password" maxLength="20" name="pwpwd" size="40" tabindex="2"></td></tr>

在后面添加
复制代码
  1. <tr>
  2. <td class='f_one'>提问    
  3. <select name="lgquestion" tabindex="3">
  4. <option value=0>无安全提问</option>
  5. <option value=1>喜欢的地方</option>
  6. <option value=2>最尊敬的人</option>
  7. <option value=3>最想去的地方</option>
  8. <option value=4>您最想念的人名字</option>
  9. <option value=5>您的个人计算机的型号</option>
  10. <option value=6>您所在的省市</option>
  11. <option value=7>身份证的最后四位数字</option>
  12. <option value=8>您最喜欢的操作系统</option>
  13. </select> <b>如果您启用安全提问,登录时需填入相应的项目才能登录</b>
  14. </td>
  15. </tr>
  16. <tr><td class='f_one'>回答     <input type="text" name="lganswer" size="25" tabindex="4"></td></tr>

注意:后面的tabindex="4"需要一次递增修改

5.login.php
查找代码:
复制代码
  1. list($winduid,$groupid,$pwpwd)=checkpass($pwuser,$pwpwd);

替换为
复制代码
  1. list($winduid,$groupid,$pwpwd)=checkpass($pwuser,$pwpwd,$lgquestion,$lganswer);

6. profile.htm
  查找代码
 
复制代码
  1.   <tr height=25>
  2. <td class=head colspan=2> 会员基本数据 </td>
  3. </tr>

在后面添加
复制代码
  1. <tr>
  2. <td class='f_one'>安全提问:</td>
  3. <td class='f_one'><select name="regquestion">
  4. <option value="">不改变当前设置</option>
  5. <option value="0">无安全提问</option>
  6. <option value="1">喜欢的地方</option>
  7. <option value="2">最尊敬的人</option>
  8. <option value="3">最想去的地方</option>
  9. <option value="4">您最想念的人名字</option>
  10. <option value="5">您的个人计算机的型号</option>
  11. <option value="6">您所在的省市</option>
  12. <option value="7">身份证的最后四位数字</option>
  13. <option value="8">您最喜欢的操作系统</option>
  14. </select> <b>如果您启用安全提问,登录时需填入相应的项目才能登录</b>
  15. </td>
  16. </tr>
  17. <tr>
  18. <td class='f_one'>回答:</td>
  19. <td class='f_one'><input type="text" name="reganswer" size="25"></td>
  20. </tr>


7.profile.php
查找代码
复制代码
  1. $db->update("UPDATE pw_members SET password ='$userdb[password]',email='$userdb[email]' $groups,honor='$prohonor',publicmail='$userdb[publicmail]',icon='$userdb[icon]',gender='$userdb[gender]',signature='$userdb[signature]',introduce='$userdb[introduce]',oicq='$userdb[oicq]',icq='$userdb[icq]',yahoo='$userdb[yahoo]',msn='$userdb[msn]',site='$userdb[site]',location='$userdb[location]',bday='$userdb[bday]',style='$tpskin',datefm='$date_f',timedf='$timedf',t_num='$t_num',p_num='$p_num',receivemail='$userdb[receivemail]',signchange='$userdb[signchange]',showsign='$showsign',payemail='$payemail' WHERE uid='$winduid'");

将其替换为
复制代码
  1. $reganswer=trim($reganswer);
  2.     if($regquestion==''){
  3.         $db->update("UPDATE pw_members SET password ='$userdb[password]',email='$userdb[email]' $groups,honor='$prohonor',publicmail='$userdb[publicmail]',icon='$userdb[icon]',gender='$userdb[gender]',signature='$userdb[signature]',introduce='$userdb[introduce]',oicq='$userdb[oicq]',icq='$userdb[icq]',yahoo='$userdb[yahoo]',msn='$userdb[msn]',site='$userdb[site]',location='$userdb[location]',bday='$userdb[bday]',style='$tpskin',datefm='$date_f',timedf='$timedf',t_num='$t_num',p_num='$p_num',receivemail='$userdb[receivemail]',signchange='$userdb[signchange]',showsign='$showsign',payemail='$payemail' WHERE uid='$winduid'");
  4.     }elseif($regquestion == 0){
  5.         $db->update("UPDATE pw_members SET password ='$userdb[password]',safeq='0',safea='',email='$userdb[email]' $groups,honor='$prohonor',publicmail='$userdb[publicmail]',icon='$userdb[icon]',gender='$userdb[gender]',signature='$userdb[signature]',introduce='$userdb[introduce]',oicq='$userdb[oicq]',icq='$userdb[icq]',yahoo='$userdb[yahoo]',msn='$userdb[msn]',site='$userdb[site]',location='$userdb[location]',bday='$userdb[bday]',style='$tpskin',datefm='$date_f',timedf='$timedf',t_num='$t_num',p_num='$p_num',receivemail='$userdb[receivemail]',signchange='$userdb[signchange]',showsign='$showsign',payemail='$payemail' WHERE uid='$winduid'");
  6.     }elseif($reganswer==""){
  7.         showmsg("你选择了安全问题,请填写安全答案!");
  8.     }else{
  9.         $db->update("UPDATE pw_members SET password ='$userdb[password]',safeq='$regquestion',safea='$reganswer',email='$userdb[email]' $groups,honor='$prohonor',publicmail='$userdb[publicmail]',icon='$userdb[icon]',gender='$userdb[gender]',signature='$userdb[signature]',introduce='$userdb[introduce]',oicq='$userdb[oicq]',icq='$userdb[icq]',yahoo='$userdb[yahoo]',msn='$userdb[msn]',site='$userdb[site]',location='$userdb[location]',bday='$userdb[bday]',style='$tpskin',datefm='$date_f',timedf='$timedf',t_num='$t_num',p_num='$p_num',receivemail='$userdb[receivemail]',signchange='$userdb[signchange]',showsign='$showsign',payemail='$payemail' WHERE uid='$winduid'");
  10.     }


8. 其余相关部分请参照修改!多为登录页面的!!
比如index.htm的登录窗口
找到
复制代码
  1. 密   码 <input class=mmcinb type="password" maxLength="20" name="pwpwd" size="20" tabindex="2">

在后面添加:
复制代码
  1. <br>
  2.     提   问
  3.     <select name="lgquestion" tabindex="3">
  4.     <option value=0>无安全提问</option>
  5.     <option value=1>喜欢的地方</option>
  6.     <option value=2>最尊敬的人</option>
  7.     <option value=3>最想去的地方</option>
  8.     <option value=4>您最想念的人名字</option>
  9.     <option value=5>您的个人计算机的型号</option>
  10.     <option value=6>您所在的省市</option>
  11.     <option value=7>身份证的最后四位数字</option>
  12.     <option value=8>您最喜欢的操作系统</option>
  13.     </select> <b>如启用了安全提问,请填入相应的项目</b><br>
  14.     回   答 <input type="text" name="lganswer" size="20" tabindex="4">
  15.     <br>

showmsg.htm
找到
复制代码
  1. <tr class=f_one>
  2.   <td>密码</td><td> <input type='password' size="40" tabindex="2" name='pwpwd'></td>
  3. </tr>

在后面添加
复制代码
  1. <tr>
  2. <td class='f_one'>提问</td><td>
  3. <select name="lgquestion" tabindex="3">
  4. <option value=0>无安全提问</option>
  5. <option value=1>喜欢的地方</option>
  6. <option value=2>最尊敬的人</option>
  7. <option value=3>最想去的地方</option>
  8. <option value=4>您最想念的人名字</option>
  9. <option value=5>您的个人计算机的型号</option>
  10. <option value=6>您所在的省市</option>
  11. <option value=7>身份证的最后四位数字</option>
  12. <option value=8>您最喜欢的操作系统</option>
  13. </select> <br><b>如果您启用安全提问,请填入相应的项目</b>
  14. </td>
  15. </tr>
  16. <tr><td class='f_one'>回答</td><td><input type="text" name="lganswer" size="40" tabindex="4"></td></tr>


修改完毕!!
请下载最新的包,数据库安装程序存在代码错误,修正! 2006.06.17
[ 此贴被greenrock在2006-11-13 14:36重新编辑 ]
附件: newsafe.rar (3 K) 下载次数:216
附件: newsafe.rar (3 K) 下载次数:199
本帖最近评分记录:
  • 威望:5(海峰)
  • 威望:5(rugawa)
  • 威望:5(白色〾猎人)
  • 如愿以偿... +++
    级别: 荣誉会员
    1楼  发表于: 2006-05-23 20:44
    自己做沙发,附图几张
    登录窗口


    错误的showmsg窗口


    会员资料编辑窗口

    本帖最近评分记录:
  • 威望:3(Seac)
  • overseas man~
    级别: 论坛版主
    优秀版主奖
    2楼  发表于: 2006-05-23 20:45
    少个包包
    I。miss..you~~~
    级别: 六星会员
    优秀版主奖
    3楼  发表于: 2006-05-23 20:47
    LZ 为什么 你的插件总是这么,经典。。。
    [ 此贴被Seac在2006-06-16 14:10重新编辑 ]


    如愿以偿... +++
    级别: 荣誉会员
    4楼  发表于: 2006-05-23 20:47
    Quote:
    引用第2楼白色〾猎人2006-05-23 20:45发表的“”:
    少个包包

    自己的坛子想起来了
    这次就给忘了,谢谢猎人啊
    补上了
    I。miss..you~~~
    级别: 六星会员
    优秀版主奖
    5楼  发表于: 2006-05-23 20:48
    不过修改是 麻烦了 一点。。看的有点累,了
    [ 此贴被Seac在2006-07-13 14:07重新编辑 ]


    如愿以偿... +++
    级别: 荣誉会员
    6楼  发表于: 2006-05-23 20:49
    Quote:
    引用第3楼Seac2006-05-23 20:47发表的“”:
    LZ 为什么 几的插件总是这么,经典。。。我喜欢的不的了! 都要、爱上你了!

    都是小东西,和猎人、阿官他们比,差的不知道哪去了
    惭愧
    这个世界太疯狂
    级别: 五星会员
    7楼  发表于: 2006-05-23 21:58
    不错啊
    级别: 一星会员
    8楼  发表于: 2006-05-23 22:19
    相当好拉。
    vbb典范:www.11ing.com
    级别: 二星会员
    9楼  发表于: 2006-05-23 22:30
    支持啊
    级别: 新手上路
    10楼  发表于: 2006-05-23 23:36
    好东西,不过改的东西还真多,眼花了
    【东方经典论坛欢迎您】
    级别: 四星会员
    11楼  发表于: 2006-05-24 20:32
    不错 支持一下!