Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Прячем "закрытый форум"

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
[code]if (("$privateforum" eq "yes")&&(($membercode eq "ad") || ($membercode eq "mo"))&&($allowedentry{$forumid} eq  "yes")){#Если форумы приватные [/code]

Вопрос: Вот эта строчка(обнаружил случайно) не совсем корректно работает. То есть выполняется все условия , кроме пользователей(не модерам), которым доступ в приватный невидимый форум разрешен - даже после  получения доступа к приватному форуму, они все равно его не видят. Подскажите,плз, как исправить лучше эту строчку?

 

[b][s]Добавлено[/s][/b]
Хочу  уточнить свой вопрос:
[code]if (("$privateforum" eq "yes")&&($allowedentry{$forumid} eq  "yes")){#Если форумы приватные [/code]

Вот так эта строчка работает, но при добавлении нового форума в категорию, в которой уже есть приватный форум, появляется  его "двойник"....


Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 17:43 29-08-2004
Sebastyan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. В поиске (search.cgi) торчат уши приватных форумов.
Если задать поиск по всем форумам ("Все форумы"), то поиск и идёт по всем форумам, даже если ты Guest.
Причем если в приватном что-то найдено - search.cgi услужливо об этом сообщает в процессе поиска, типа:
 
Заданы параметры поиска  
Закончен поиск на форуме: Приватный
Совпадений пока - Обработка...
Совпадений в Приватный - 2
 
Правда, в результатах поиска ссылки на найденное в закрытых форумах не даются.
И на том спасибо..
 
Я поправил это так (в search.cgi):
 
Найти:

Код:
 
        if ($FORUMS_TO_SEARCH eq "all") {
            $nextforum++;
            $search_in_forum = $nextforum;
            ($forumno, $trash) = split(/\|/,$checkforums[0]);
             
            if ("$search_in_forum" > "$forumno") { $nofile="true"; $FORUMS_TO_SEARCH = "done"; }
            }
 

Заменить на:

Код:
 
        if ($FORUMS_TO_SEARCH eq "all") {
$nextforum++;
($forumno, $trash) = split(/\|/,$checkforums[0]);
for ($i = $nextforum; $i <= $forumno; $i++) {
foreach $forum (@forums) {
chomp $forum;
            ($tempforumno, $trash) = split(/\|/,$forum);
if ($tempforumno eq $nextforum) {
($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum) = split(/\|/,$forum);
                }
               else { next; }
            }
$nowforum="$forumid=yes";
if (($privateforum eq "yes") && ($privateforums!~/$nowforum/)) {$nextforum++;}
else {$i = $forumno + 1;}
}
$search_in_forum = $nextforum;
if ("$search_in_forum" > "$forumno") { $nofile="true"; $FORUMS_TO_SEARCH = "done"; }
}
 

 
Т.о. поиск идёт только в открытых форумах и в приватных, куда юзер допущен.
 
2. Кроме того юзер не имеющий доступ во все форумы, в поле со списком форумов (на гл.странице поиска)
вместо недоступных ему видит дублирование уже выведенных имён форумов.
 
Как исправить:
 
Сразу после текста:

Код:
 
    if (($privateforum eq "yes") && ($userregistered ne "no") && ($allowedentry{$forumid} eq "yes")) {
        $rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forumid");
        }
        elsif ($privateforum ne "yes") {
            $rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forumid");
            }
 

Добавить:

Код:
 
else {next;}
 

Всего записей: 34 | Зарегистр. 06-11-2003 | Отправлено: 16:24 19-11-2004 | Исправлено: Sebastyan, 16:27 19-11-2004
Paha_W



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Поставил по посту http://forum.ru-board.com/topic.cgi?forum=21&topic=0933&start=0#20
Я ставлю на юзере что он может быть в приватном форуме, логинюсь под ним и смотрю он форум видит а темы создавать не может хотя в админке стоит что создавать темы могут все "пользователи", когда лгинюсь под модером данного скрытого форума, то  он тоже не может создать тему, пишет  

Цитата:
Определенные причины для Открытие темы Ошибка:  
Эта тема не существует  
Вы хотите получить доступ к форуму - Файлы помощи?  
Возможные причины для Открытие темы Ошибка:  
Неправильный пароль  
Неправильное имя пользователя  
Незарегистрированный Пользователь

Это при том что я создаю форум изначально приватный, без тем внутри. А когда я создаю с темой и не приватным, а только потом делаю его приватным идет выше описанная ошибка. Вопрос с этим можно бороться?
ikonboard.cgi

Всего записей: 440 | Зарегистр. 26-05-2004 | Отправлено: 12:31 03-09-2005
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Paha_W
В админцентре надо отметить допуск пользователям, и модератора это тоже касается.

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 13:52 03-09-2005
Paha_W



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
trew
Ну разделе для форумов я как бы выбирал, кто может создавать в данном форуме темы и кто в данный форум может заходить это я отметил на юзерах в их профиле. в админке поставил галочку на против того форума к которому я им даю доступ.
Но все равно такой глюк имеет место.

Всего записей: 440 | Зарегистр. 26-05-2004 | Отправлено: 16:31 04-09-2005
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Paha_W
Вот смотри, опять  есть у тебя проблема с правами пользователей, но уже в другом хаке...
Значит дело не в работоспособности хаков... Вспомни, какие хаки  ставил, что затрагивали права пользователей до того?
Потому что, где-то допущена ошибка, а мы, ИМХО, боремся с последствиями этой ошибки, но ни как не исправляем ее.

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 21:15 04-09-2005
Paha_W



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Вспомни, какие хаки  ставил, что затрагивали права пользователей до того?

Да трудно вспомнить что ставил полгода назад,

Цитата:
Потому что, где-то допущена ошибка, а мы, ИМХО, боремся с последствиями этой ошибки, но ни как не исправляем ее.

Это я понимаю что косяк, но где в каком хаке в каком файле, с хаками на php-форумы таких проблем небыло. Спасибо я так сразу вспомнить не смогу что ставил и если по коду посмотрю то не разберусь, могу  выложить чтобы ты посмотрел, если у тебя будет время.

Всего записей: 440 | Зарегистр. 26-05-2004 | Отправлено: 06:39 05-09-2005
Paha_W



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как скрыть в "Активные темы", приватные форумы? Сейчас наткнулся на эту дырку.

Всего записей: 440 | Зарегистр. 26-05-2004 | Отправлено: 07:06 06-09-2005
Gram



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Paha_W, а это смотря какой у вас скрипт Активных тем...  
 
Но в любом случае в формировании массива активных тем (в цикле) необходимо будет добавить:
Код:
if (($privateforum eq "yes") && (($allowedentry{$forumid} ne "yes")) { next; }


Всего записей: 388 | Зарегистр. 22-01-2004 | Отправлено: 08:24 06-09-2005 | Исправлено: Gram, 08:10 08-09-2005
Paha_W



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот скрипт "активных тем".
-----------------------------------------

Код:
#!/usr/bin/perl  
##########################################################  
# Ikonboard Active Topics #  
##########################################################  
# Author:        ST8 <st8@q3f.net>                       #  
# Date:          18 April 2001         #  
##########################################################  
# Lists active threads from the day         #  
##########################################################  
 
use CGI::Carp "fatalsToBrowser";          # Output errors to browser  
use CGI qw(:standard);                    # Saves loads of work  
$CGI::POST_MAX=1024 * 150;                # limit post data  
$CGI::DISABLE_UPLOADS = 1;                # Disable uploads  
$CGI::HEADERS_ONCE = 1;                   # Kill redundant headers  
 
eval {  
($0 =~ m,(.*)/[^/]+,)   and unshift (@INC, "$1");  
($0 =~ m,(.*)\\[^\\]+,) and unshift (@INC, "$1");  
require "ikon.lib";          # Require ikonboard ()  
require "data/progs.cgi";    # Require prog names  
require "data/boardinfo.cgi";# Require board info  
require "data/styles.cgi";   # Require styles info  
};  
if ($@) {  
    print header(); print start_html(-title=>"Ikonboard Error!");  
    print "Could not find these files: $@\nIf you are running NT you may need to enter the full path in each require statement in each script";  
    print end_html; exit;  
}  
 
##########################################################  
# Configuration  
 
# List all forums in this array that u wish to be checked for active topics  
my @fnumbers = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);  
 
# Max Number of threads to display  
my $maxthreads = 60;  
 
# Summary View set to yes to only display an overview rather than entire thread (yes/no)  
my $summary = "no";  
 
# Turn images on? otherwise they will be linked (on/off)  
my $imgs = "off";  
 
##########################################################  
 
my $q = new CGI;  
$action = $q->param("action");  
 
if ($action eq "ssi") {  
$recent_topics = &getrecenttopics;  
print qq~  
<table width="120" border="0" cellspacing="1">  
<tr>  
<td bgcolor=$titlecolor><font face="$font" color=$titlefontcolor size=2><b>Recent Topics</b></font></td>  
$recent_topics  
</table>  
~;  
exit;  
}  
 
 
$inmembername = cookie("amembernamecookie");  
 
if ($inmembername eq "") {  
    $inmembername = "Guest";  
    }  
&whosonline("$inmembername|Viewing <a href=$boardurl/active.cgi>Todays Active Topics</a>|none");  
 
 
$output .= qq~  
<table cellspacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center>  
               <tr>  
               <td valign=middle align=left width="100%" bgcolor="$menubackground" nowrap background=$imagesurl/images/bg.gif colspan=2><a href="$forumsummaryprog"><b><font face="$font" color=$titlefontcolor size=2>&nbsp;$boardname</a> &raquo; $ibtxt{'00335'}</font></b></td>  
               </tr>  
    <tr>  
        <td>  
        <table cellspacing=1 border=0 width=100%>  
        <tr>  
        <td bgcolor=$miscbacktwo valign=middle colspan=3 align=center><font face="$font" color=$fontcolormisc size=2><b>$ibtxt{'00336'}</b></font>  
</td>  
</tr>  
~;  
 
foreach $number (@fnumbers) {  
 
opendir(THREADS, "$ikondir/forum$number");  
my @threads = readdir(THREADS);  
closedir(THREADS);  
@unsortedthreads = grep(/\w+.pl/, @threads);  
@thethreads = sort {$b <=> $a} @unsortedthreads;  
 
$maxt = $maxthreads;  
$tcount = 0;  
 
(my $sec,my $min,my $hour,my $day,my $month,my $year,my $wday,my $yday,my $isdst) = localtime();  
 
foreach $thread (@thethreads) {  
$tcount++;  
if ($tcount < $maxt) {  
open(DETAILS,"$ikondir/forum$number/$thread");  
$details = <DETAILS>;  
close(DETAILS);  
 
# 1|FlipCom Interface Script|Script to work with the Flipcom irc/icq program.|open|0|1|ST8|980109695|ST8|980109695  
($tno,$title,$desc,$status,$replies,$views,$poster,$postdate,$lastrep,$lastrepdate) = split(/\|/,$details);  
 
open(TDETAILS,"$ikondir/forum$number/$tno.thd");  
$Tdetails = <TDETAILS>;  
close(TDETAILS);  
 
 
# ST8|FlipCom Interface Script|213.1.155.243|yes|yes|980109695|bleh  
($user,$title,$ip,$smilies,$signature,$postdate,$thread) = split(/\|/,$Tdetails);  
($trash,$trash,$trash,$postday,$postmonth,$postyear,$trash,$trash,$trash) = localtime($lastrepdate);  
 
if (($day eq $postday) && ($month eq $postmonth) && ($year eq $postyear)) {  
$gubbins = qq~$lastrepdate|$lastrep|$poster|$title|$thread|$postdate|$replies|$number|$tno~;  
push(@finishedthreads2, $gubbins);  
}  
}  
}  
}  
 
@finishedthreads2 = sort {$b <=> $a} @finishedthreads2;  
 
$maxout = $maxthreads;  
$toutcount = 0;  
 
foreach $outthread (@finishedthreads2) {  
$toutcount++;  
if ($toutcount < $maxout) {  
($lastrepdate,$lastrep,$poster,$title,$thread,$postdate,$replies,$number,$tno) = split(/\|/,$outthread);  
 
if ($imgs eq "off") {  
    $thread =~ s/\[img\](.+?)\[\/img\]/<a href=$1 target=_blank><font size=2>[IMAGE]<\/font><\/a>/isg;  
}  
 
unless ($summary eq "yes") {  
#$thread = doemoticons("$thread");  
$thread = ikoncode("$thread");  
$thread = qq~<tr><td colspan="3" bgcolor=$miscbackone><font face="$font" color=$postfontcolorone size=2>$thread</font></td></tr>~;  
} else {  
undef $thread;  
}  
 
        $postdate = $postdate + ($timedifferencevalue*3600) + ($timezone*3600);  
        $postdate = &dateformat("$postdate");  
 
        $lastrepdate = $lastrepdate + ($timedifferencevalue*3600) + ($timezone*3600);  
        $lastrepdate = &dateformat("$lastrepdate");  
 
if ($lastrep) {  
$lastrep = "$ibtxt{'00332'} <a href=$boardurl/profile.cgi?action=show&member=$lastrep>$lastrep</a> @ $lastrepdate";  
}  
open(TDETAILS,"$ikondir/forum$number/$tno.thd");  
@Tdetails = <TDETAILS>;#читаем все посты в массив  
close(TDETAILS);  
 $Tdetails_lastpost = $Tdetails[$#Tdetails];#а это последний.  
($userlp,$titlelp,$iplp,$smilieslp,$signaturelp,$postdatelp,$threadlp) = split(/\|/,$Tdetails_lastpost);  
 
&getforum("$number");  
 
$output .= qq~  
<tr><td colspan="3" bgcolor=$titlecolor><font face="$font" color=$titlefontcolor size=2>$title $ibtxt{'00334'} $poster @ $postdate</font></td></tr>  
<tr><td colspan="3" bgcolor=$miscbackone><font face="$font" color=$postfontcolorone size=2><a href=$boardurl/ikonboard.cgi>$category</a> &raquo; <a href=$boardurl/forums.cgi?forum=$number>$forumname</a></font></td></tr>  
$thread  
<tr>  
<td colspan="3" width="100%" bgcolor=$miscbacktwo><font face="$font" color=$postfontcolortwo size=1><b>$ibtxt{'00333'} $replies  $lastrep</b></font></td>  
</tr>  
 
 <tr>  
<td colspan="3" width="100%" bgcolor=$miscbackone><font face="$font" color=$postfontcolortwo size=1><br>$threadlp  
</font></td>  
</tr>  
 
 
<tr>  
<td width="100%" bgcolor=$miscbacktwo align="right"><font face="$font" color=$postfontcolorone size=1><b><a href="$boardurl/post.cgi?action=reply&forum=$number&topic=$tno">$ibtxt{'00331'}</a></b></font>&nbsp;&nbsp;&nbsp;<font face="$font" color=$postfontcolorone size=1><b><a href="$boardurl/topic.cgi?forum=$number&topic=$tno">$ibtxt{'0033'}</a></b></font>&nbsp;</td>  
</tr>  
 
~;  
}  
}  
 
$output .= qq~  
</table></td></tr></table>  
~;  
 
print header();  
&output(  
       -Title   => "$boardname - Active Topics",  
       -ToPrint => $output,  
       -Version => $versionnumber  
       );
 

Всего записей: 440 | Зарегистр. 26-05-2004 | Отправлено: 08:37 06-09-2005
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Paha_W

Цитата:
# List all forums in this array that u wish to be checked for active topics  
my @fnumbers = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);  

Вот в этой строчке убери номера своих приватных форумов и все будет ОК

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 20:40 06-09-2005
Paha_W



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
trew
Сенкс, все получилось.

Всего записей: 440 | Зарегистр. 26-05-2004 | Отправлено: 04:25 07-09-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Прячем "закрытый форум"


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru