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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

[复制链接]
0469 发表于 2015-10-13 18:06:08 | 显示全部楼层 |阅读模式


悬赏解决此问题,在线等,急。或是直接QQ联系:33175131

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
湖中沉 发表于 2015-10-13 20:13:08 | 显示全部楼层
子版块也设置相同密码不就得了……汗,这也叫问题……
回复

使用道具 举报

jameson512 发表于 2015-10-13 21:48:43 | 显示全部楼层
本帖最后由 jameson512 于 2015-10-13 21:50 编辑

我来做一次雷锋,代码可用但没做优化

如果你用的是3.2版本的,打开 /source/module/forum/forum_forumdisplay.php 找到163--175行如下代码
  1. if($_G['forum']['password']) {
  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.                         showmessage('forum_passwd_correct', "forum.php?mod=forumdisplay&fid=$_G[fid]");
  8.                 }
  9.         } elseif($_G['forum']['password'] != $_G['cookie']['fidpw'.$_G['fid']]) {
  10.                 include template('forum/forumdisplay_passwd');
  11.                 exit();
  12.         }
  13. }
复制代码



将全部上述代码替换成
  1. if($_G['forum']['password']) {
  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{
  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 00:29:10 | 显示全部楼层
回复点评,问题是你的需求是进入子版块也需要密码,那么设置一下不就好了吗?既然不设置密码,那么按照官方逻辑来说,这是一个开放版块,自然是允许进入的,因为你没考虑子版块和父版块的独立性需求。

所以在不改代码的前提下,最方便的方案就是子版块设置和父版块相同的密码权限即可
回复

使用道具 举报

选峰工作室 发表于 2015-10-14 07:33:55 | 显示全部楼层
jameson512 发表于 2015-10-13 21:48
我来做一次雷锋,代码可用但没做优化

如果你用的是3.2版本的,打开 /source/module/forum/forum_forumdi ...

向雷锋致敬。帖子内容页是不还要修改下。forum_viewthread.php
回复

使用道具 举报

jameson512 发表于 2015-10-14 08:44:23 | 显示全部楼层
选峰工作室 发表于 2015-10-14 07:33
向雷锋致敬。帖子内容页是不还要修改下。forum_viewthread.php

不必。。。。。。。。。。。
回复

使用道具 举报

 楼主| 0469 发表于 2015-10-14 09:22:31 | 显示全部楼层
jameson512 发表于 2015-10-13 21:48
我来做一次雷锋,代码可用但没做优化

如果你用的是3.2版本的,打开 /source/module/forum/forum_forumdi ...

这个办法确实好,但是我设置了特别的组可以不受密码的约束,大神看看我原来的代码:


按照大神的方法,连特定组用户都进不去了。

看看怎么解决?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

选峰工作室 发表于 2015-10-14 09:37:37 | 显示全部楼层
jameson512 发表于 2015-10-14 08:44
不必。。。。。。。。。。。

如果用户直接访问子版下的帖子的URL,你只修改了forumdisplay.php,我是好奇内容页好像没有处在forumdisplay保护下吧。
回复

使用道具 举报

jameson512 发表于 2015-10-14 13:02:24 | 显示全部楼层
0469 发表于 2015-10-14 09:22
这个办法确实好,但是我设置了特别的组可以不受密码的约束,大神看看我原来的代码:

这个要单独单独再排除那些特定组。
回复

使用道具 举报

jameson512 发表于 2015-10-14 13:03:37 | 显示全部楼层
选峰工作室 发表于 2015-10-14 09:37
如果用户直接访问子版下的帖子的URL,你只修改了forumdisplay.php,我是好奇内容页好像没有处在forumdisp ...

如果帖子也需要的话,是的,摇动viewthread页面
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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