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

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

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

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

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

lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Модернизация хака добавления объявлений
Пишем инфу об IP и об имени запостившего

 
В файловом архиве лежит хак modannounce, позволяющий добавлять новости не только админу, но и модерам.
Ставится он очень просто.  
 
Все строчки:
 

Код:
 if ($membercode ne "ad") {

 
Заменяются на:

Код:
 
if (($membercode ne "ad")==($membercode ne "mo")) {
 

 
 
А теперь пишем также имя добавившего новость и его IP.
 
Сначала вывод имени постившего, чтобы не подписываться каждый раз.
 
 
Меняем:
 

Код:
 $newline = "$inannouncementtitle|$currenttime|$inannouncementpost";

 
На:
 

Код:
 
 $newline = "$inannouncementtitle|$currenttime|$inannouncementpost|$myposter";

 
Меняем:
 

Код:
 
 foreach (@announcements) {
     if ($count eq $number) {
    ($announcementtitle,$notneeded,$announcementpost) = split(/\|/,$_);

     
На:
 

Код:
 
 foreach (@announcements) {
     if ($count eq $number) {
    ($announcementtitle,$notneeded,$announcementpost,$myposter) = split(/\|/,$_);
   
 
Меняем:
 

Код:
 
foreach $line (@announcements) {
 ($title, $dateposted, $post) = split(/\|/, $line);
 

 
На:
 

Код:
 
foreach $line (@announcements) {
 ($title, $dateposted, $post, $myposter) = split(/\|/, $line);

 
 
Меняем (4 раза):
 

Код:
 
  &getmember("$inmembername");
 

 
На:
 

Код:
 
&getmember("$inmembername");
$myposter=$inmembername;

 
 
Добавляем вывод имени (дизайн меняйте, как вам надо), пример на дефолтной.  
 
Меняем:
 

Код:
 
$output .= qq~  
                    <tr>
                    <td bgcolor="$postbackcolor" valign=top><font face="$font" color=$postfontcolor size=$dfontsize2>
                             $post
                             </td>
                             </tr>
                             
                                <tr>
                                    <td bgcolor="$postbackcolor" valign=middle>
                                <font face="$font" color=$postfontcolor size=$dfontsize2>$ibtxt{’0319’}: <b>$dateposted</b>
                                </td>
                                </font>#####Это, кстати, ошибка, надо местами строчки поменять
                                </tr>
                                 
                                ~;
                                 

                                 
На:
 

Код:
 
$output .= qq~  
                    <tr>
                    <td bgcolor="$postbackcolor" valign=top><font face="$font" color=$postfontcolor size=$dfontsize2>
                             $post
                             </td>
                             </tr>
                             
                                <tr>
                                    <td bgcolor="$postbackcolor" valign=middle>
                                <font face="$font" color=$postfontcolor size=$dfontsize2>Объявление добавлено: $dateposted &#160;&#160;$myposter</font>
                                </td>
                                </tr>
                                 
                                ~;                              
 

 
С именем все. Оно выводится внизу объявления рядом с временем его добавления.
 
Теперь пишем инфу об IP.
 
 
После:

Код:
 
$inmembername           = $membername;
$inpassword             = $password;
$inannouncementtitle    = $announcementtitle;
$inannouncementpost     = $announcementpost;
 

 
Добавляем:

Код:
 
$IP="$ENV{’REMOTE_ADDR’} - $ENV{’HTTP_X_FORWARDED_FOR’} -  $ENV{’HTTP_PROXY_CONNECTION’} - $ENV{’HTTP_VIA’}";

 
 
 Меняем:
 
 
Код:
 
 $newline = "$inannouncementtitle|$currenttime|$inannouncementpost|$myposter";
    chomp $newline;
    $filetoopen = "$ikondir" . "data/news.cgi";
    $filetoopen = &stripMETA($filetoopen);
    open(FILE, ">$filetoopen") or die "$ibtxt{’0325’}";
    flock(FILE, 2);
    foreach $line (@announcements) {
    chomp $line;
    if ($count eq $number) {
    print FILE "$newline";
      }
    else {
    print FILE "$line";
 
         }

         
         
        На:
         
       
Код:
 
    $newline = "$inannouncementtitle|$currenttime|$inannouncementpost|$myposter";
    chomp $newline;
    $filetoopen = "$ikondir" . "data/news.cgi";
    $filetoopen = &stripMETA($filetoopen);
    open(FILE, ">$filetoopen") or die "$ibtxt{’0325’}";
    flock(FILE, 2);
    foreach $line (@announcements) {
    chomp $line;
    if ($count eq $number) {
    print FILE "$newline";
    print FILE "\|$IP\n";
    }
    else {
    print FILE "$line";
         }

 
 
 
 Инфа об IP пишется в файл news.cgi в последнее поле (туда же пишется имя постера):
 
 test|1036818244|test|lynx|127.0.0.1 -  -   -  
 
 
Это все.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 08:07 09-11-2002 | Исправлено: lynx, 06:07 29-06-2003
batva



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

Код:
 
if (($membercode ne "ad")==($membercode ne "mo")) {  
 

ой, что это?

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 18:15 10-11-2002
lynx



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

Цитата:
ой, что это?

 
Ну не работает так:
 

Цитата:
if (($membercode ne "ad")||($membercode ne "mo")) {  


Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 19:12 10-11-2002
DimoN



Tech administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx
 
|| - или
 
&& - И
 
== - равно
 
бр ....  
это все равно что
 
if(1==2) {print "бла бла бла";}

Всего записей: 7528 | Зарегистр. 19-04-2001 | Отправлено: 15:31 11-11-2002
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx

Цитата:
Ну не работает так:  
 
 
if (($membercode ne "ad")||($membercode ne "mo")) {    

 
 
Ага, железная логика.
Если || не работает, значит нужно через ==
 
Правильно будет вот так:
 
if ($membercode ne "ad" && $membercode ne "mo") {&error}
 
Но если тебе нравится вариант с или, то можно так:
 
unless ($membercode eq "ad" || $membercode eq "mo") {&error}
 

 
 
 
Кстати, твой вариант тоже будет работать Перл сильная штука.
 

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 19:07 11-11-2002
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
batva
 
Во набросились то... между прочим у автора хака, что в архиве, тоже через == сделано...  

Цитата:
твой вариант тоже будет работать  

А он и работает, хотя мне не сильно понятно, почему...
 

Цитата:
 
if ($membercode ne "ad" && $membercode ne "mo") {&error}  

 
Во, это мне больше всего нравится
 
Добавлено
DimoN
 

Цитата:
тоже через == сделано...  

 
Ой, я знаю, что сейчас скажет Димон

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 02:46 12-11-2002
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx
Может я и не прав, но тебе не кажется, что код нужно написать так:

Код:
$newline = "$inannouncementtitle|$currenttime|$inannouncementpost|$myposter";  
    chomp $newline;  
    $filetoopen = "$ikondir" . "data/news.cgi";  
    $filetoopen = &stripMETA($filetoopen);  
    open(FILE, ">$filetoopen") or die "$ibtxt{’0325’}";  
    flock(FILE, 2);  
    foreach $line (@announcements) {  
    chomp $line;  
    if ($count eq $number) {  
    print FILE "$newline";  
    print FILE "\|$IP\n";  
    }  
    else {  
    print FILE "$line\n";  
         }  

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 02:28 21-11-2002 | Исправлено: Xnom, 02:31 21-11-2002
lynx



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

Цитата:
Может я и не прав,  

 
Ты не прав. Напиши так и попробуй. Сразу баг вылезет. Именно там и не надо перевод строки. Проверяно
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 19:19 21-11-2002
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx
а у меня, если написать

Код:
else {  
    print FILE "$line";  
         }  

при добавлении/редактировании объявления news.cgi переписывается так: "что добавил/отредактировал" (переснос строки) и всё остальное, что было, пишется в одну строку ...
 
Что у меня может быть не так ?

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 00:41 22-11-2002
lynx



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

Цитата:
при добавлении/редактировании объявления news.cgi переписывается так: "что добавил/отредактировал" (переснос строки) и всё остальное, что было, пишется в одну строку ...  
 
Что у меня может быть не так ?

 
Я так не понимаю, либо больше кода, либо файло целое дай. Или выложи куда.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 12:24 22-11-2002
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx
Вот в воскресенье скину тебе свои наработки, там и посмотришь

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 15:23 22-11-2002
trew

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

Код:
if (($membercode ne "ad")==($membercode ne "$inmembername")) {  
 

 Тогда они будут и писать и редактить и удалять, или удалять они не будут?  

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 20:43 18-02-2004
lynx



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

Цитата:
 Тогда они будут и писать и редактить и удалять, или удалять они не будут?  

 
А тебе как надо то?
 
Если для всех, напиши:
 
if($inmembername ne "Guest"){

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 22:02 18-02-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx Мне хочется чтоб писали все кроме гостей, а удаляли только команда... А редактирование  - даже незнаю как удобней пользователям, тот кто написал по идее должен себя и редактить, чтоб глупости не постить...

Цитата:
if($inmembername ne "Guest"){
это все кроме гостей?

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 23:38 18-02-2004
lynx



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

Цитата:
if($inmembername ne "Guest"){  
это все кроме гостей?  

 
Да, но на полный доступ. На то, как ты хочешь, надо немного времени. Позже.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 00:46 19-02-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx Огромное спасибо ...

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 02:41 19-02-2004
lynx



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

Цитата:
 Мне хочется чтоб писали все кроме гостей, а удаляли только команда..

 
Добавлять могут все, кроме гостей, удалять и редактировать - только команда:
 
announcements.cgi
 
Заменить:
 

Код:
 
if ($action eq "delete") {
       if ($checked eq "yes") {
# Validate user
               &getmember("$inmembername");
               if ($membercode ne "ad")  
 

 
На:
 

Код:
 
if ($action eq "delete") {
       if ($checked eq "yes") {
# Validate user
               &getmember("$inmembername");
               if (($membercode ne "ad")&&($membercode ne "mo"))  
 

 
 
Заменить:
 

Код:
 
        elsif ($action eq "addannouncement") {
               
               $currenttime = time;
               
               # Validate user
               
               &getmember("$inmembername");
       
               if ($membercode ne "ad") { print header('text/html; charset=windows-1251'); &error("$ibtxt{'0301'}&$ibtxt{'0303'}."); }
               elsif ($inpassword ne $password) { print header('text/html; charset=windows-1251'); &error("$ibtxt{'0301'}&$ibtxt{'0303'}."); }
 

 
На:
 

Код:
 
            elsif ($action eq "addannouncement") {
                        $currenttime = time;
                        # Validate user
                        &getmember("$inmembername");
                       if ($membername eq "Guest") { print header('text/html; charset=windows-1251'); &error("Добавление объявления&Гости не могут добавлять объявления"); }
                        if ($inpassword ne $password) { print header('text/html; charset=windows-1251'); &error("$ibtxt{'0301'}&$ibtxt{'0303'}."); }
 

 
 
Заменить:
 

Код:
 
       elsif ($action eq "doedit") {
 
               $currenttime = time;
               
               # Make sure it's got all new lines converted
               
               # Validate user
               
               &getmember("$inmembername");
       
               if ($membercode ne "ad") { print header('text/html; charset=windows-1251'); &error("$ibtxt{'0301'}&$ibtxt{'0303'}."); }

 
На:
 

Код:
 
     elsif ($action eq "doedit") {
 
               $currenttime = time;
               
               # Make sure it's got all new lines converted
               
               # Validate user
               
               &getmember("$inmembername");
       
               if (($membercode ne "ad")&&($membercode ne "mo")) { print header('text/html; charset=windows-1251'); &error("$ibtxt{'0301'}&$ibtxt{'0303'}."); }
 

 
Заменить:
 

Код:
 
&getmember("$inmembername");                            
if ($membercode eq "ad") {                            
$output .= qq~                            
<tr>
<td bgcolor=$postbackcolor align=left>$admindelete &nbsp; $adminedit &nbsp; $adminadd</td>                           </tr>
~;                          
}            
 

 
на:
 

Код:
 
#&getmember("$inmembername");                            
#if ($membercode eq "ad") {                            
$output .= qq~                            
<tr>
<td bgcolor=$postbackcolor align=left>$admindelete &nbsp; $adminedit &nbsp; $adminadd</td>                           </tr>
~;                          
# }            
 

 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 03:42 22-02-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx Вот это да.... Спасибо, сейчас буду пробывать...

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 03:50 22-02-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно даже сделать более изящно в последнем случае:
 

Код:
 
&getmember("$inmembername");                            
if (($membercode ne "ad")&&($membercode ne "mo")&&($membername ne "Guest")){                            
$output .= qq~                            
<tr>
<td bgcolor=$postbackcolor align=left>$adminadd</td>                           </tr>
~;                          
}                            
 
if (($membercode eq "ad")||($membercode eq "mo")){                            
$output .= qq~                            
<tr>
<td bgcolor=$postbackcolor align=left>$admindelete &nbsp; $adminedit &nbsp; $adminadd</td>                           </tr>
~;                          
}        
 
 
 

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

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 03:52 22-02-2004
trew

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

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 03:57 22-02-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум 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