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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖

[求助] 悬赏解决问题,大神请进。

[复制链接]
jameson512 发表于 2015-10-14 13:13:59 | 显示全部楼层
0469 发表于 2015-10-14 09:22
这个办法确实好,但是我设置了特别的组可以不受密码的约束,大神看看我原来的代码:
  1.     if($_G['forum']['password'] && !in_array($_G['groupid'],array('1','32','33'))) {
  2.             if($_GET['action'] == 'pwverify') {
  3.                     if($_GET['pw'] != $_G['forum']['password']) {
  4.                             showmessage('forum_passwd_incorrect', NULL);
  5.                     } else {
  6.                             dsetcookie('fidpw'.$_G['fid'], $_GET['pw']);
  7.                             if(intval($_G['cookie']['ziban'])>1){
  8.                                     showmessage('forum_passwd_correct', "forum.php?mod=forumdisplay&fid=".$_G['cookie']['ziban'].'&yanzheng=yes');
  9.                                     dsetcookie('ziban',null);
  10.                                     exit;
  11.                             }else{
  12.                                     showmessage('forum_passwd_correct', "forum.php?mod=forumdisplay&fid=".$_G['fid']);
  13.                             }
  14.                     }
  15.             } elseif($_G['forum']['password'] != $_G['cookie']['fidpw'.$_G['fid']]) {
  16.                     include template('forum/forumdisplay_passwd');
  17.                     exit();
  18.             }
  19.     }else if(!in_array($_G['groupid'],array('1','32','33'))){
  20.             if(!isset($_G['gp_yanzheng']) || ($_G['gp_yanzheng'] != 'yes') || !$_G['cookie']['ziban']){
  21.             /*查询上级论坛的fid*/
  22.                     $parent_fid = DB::fetch_all("SELECT fup FROM `".DB::table('forum_forum')."` WHERE fid='".$_G['fid']."'");
  23.                     /*如果上级论坛fid>0,则再判断上级论坛是否是加密访问*/
  24.                     if(is_array($parent_fid) && ($parent_fid[0]['fup']>0)){
  25.                             $parent_pw = DB::fetch_all("SELECT password FROM `".DB::table('forum_forumfield')."` WHERE fid='".$parent_fid[0]['fup']."'");
  26.                             if(is_array($parent_pw) && !empty($parent_pw[0]['password'])){
  27.                                     /*如果设置了密码访问,则再判断是否已经在上级论坛输入过密码,如果没有输入过,则要求输入密码*/
  28.                                     if(!$_G['cookie']['fidpw'.$_G[$parent_fid[0]['fup']]] || ($_G['cookie']['fidpw'.$_G[$parent_fid[0]['fup']]] != $parent_pw[0]['password'])){
  29.                                             dsetcookie('ziban',$_G['fid']);
  30.                                             showmessage('需要密码',"forum.php?mod=forumdisplay&fid=".$parent_fid[0]['fup']);
  31.                                     }
  32.                             }
  33.                     }
  34.             }
  35.     }
复制代码
回复

使用道具 举报

选峰工作室 发表于 2015-10-14 14:18:45 | 显示全部楼层
已解决。
思路是在forum.php里加代码改变后面的两三个值。
$_G['cookie']['fidpw'.$_G['fid']]
$_G['cookie']['fidpw'.$fup]
$_G['forum']['password']
回复

使用道具 举报

jameson512 发表于 2015-10-15 09:16:02 | 显示全部楼层
选峰工作室 发表于 2015-10-14 14:18
已解决。
思路是在forum.php里加代码改变后面的两三个值。
$_G['cookie']['fidpw'.$_G['fid']]

忽略了fup的获取,似乎可以大幅减少代码量
回复

使用道具 举报

选峰工作室 发表于 2015-10-15 09:33:22 | 显示全部楼层
jameson512 发表于 2015-10-15 09:16
忽略了fup的获取,似乎可以大幅减少代码量

恩。$_G[forum][fup]

还有个问题是要注意的,如果先访问下级论坛,并输入密码,此时验证在下级,此时访问平级或上级也同样应该不需要输入密码。

还有我看了下你的ziban这个COOKIE,如果它的论坛有多个不同密码版块,是不是进入一个就能进入其它呢
回复

使用道具 举报

选峰工作室 发表于 2015-10-15 09:35:06 | 显示全部楼层
jameson512 发表于 2015-10-15 09:16
忽略了fup的获取,似乎可以大幅减少代码量

DB::fetch_all 这个可以换成  DB::result_first 方便很多。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 10:30 , Processed in 0.030529 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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