Skocz do zawartości

DawPi

Manager
  • Postów

    78 196
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    572

Treść opublikowana przez DawPi

  1. Jeśli z jakiś przyczyn chcesz umożliwość logowanie do ACP tylko z określonych adresów IP, postępuj wg poniższej instrukcji. Otwórz plik: sources/action_admin/login.php Znajdź: //----------------------------------------- // Load handler... //----------------------------------------- Dodaj powyżej: //----------------------------------------- // Quick IP Check // Written by Sean Ellis //----------------------------------------- $se_ip_array = in_array( $_SERVER['REMOTE_ADDR'], array( '127.0.0.1', '127.0.0.2' ) ); if( ! $se_ip_array ) { $this->login_form( 'Z tego IP nie możesz się zalogować do ACP...' ); } Zapisz i wyślij. Uwaga: nie polecane dla osób ze zmiennym IP.
  2. Info: Wykonałem upgrade tej modyfikacji napisanej do wersji 2.2.x oraz poprawiłem kilka błędów. Autorem modyfikacji jest ntd1712, który już nie programuje mody i doczytałem informację, że daje prawo do wykonywania upgrade'ów jego modyfikacji. Zatem do dzieła Opis: Multimoderacja w wynikach wyszukiwania na forum - przydatne ;-) Instrukcja: Otwórz plik: sources/action_public/moderate.php Znajdź: [ function auto_run() ] $this->ipsclass->input['f'] = intval($this->ipsclass->input['f']); if ( ! $this->ipsclass->input['f'] ) { $this->ipsclass->Error( array( 'LEVEL' => 1,'MSG' => 'missing_files') ); } Zamień na: if ( !isset($this->ipsclass->input['referer']) ) { if ( isset($this->ipsclass->input['f']) ) { $this->ipsclass->input['f'] = intval($this->ipsclass->input['f']); if ( ! $this->ipsclass->input['f'] ) { $this->ipsclass->Error( array( 'LEVEL' => 1,'MSG' => 'missing_files') ); } } } Znajdź: [ function multi_topic_modify() ] if ( $this->forum['id'] ) { $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['cp_redirect_topics'], "showforum=".$this->forum['id'] ); } Zamień na: if ( $this->forum['id'] ) { $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['cp_redirect_topics'], "showforum=".$this->forum['id'] ); } elseif ( $this->ipsclass->input['referer'] ) { $url = str_replace("&amp;", "&", $this->ipsclass->input['referer']); $url = str_replace("&", "&", $url); $url = preg_replace("/s=[a-z0-9]{32}/", "", $url); $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['cp_redirect_topics'], $url ); } Zapisz i wyślij. Otwórz plik: sources/action_public/search.php Znajdź: [ function show_results() ] //----------------------------------------- // PRINT: End the page //----------------------------------------- $this->output .= $this->ipsclass->compiled_templates['skin_search']->end_results_table(array( 'SHOW_PAGES' => $this->links )); Zamień na: //----------------------------------------- // PRINT: End the page //----------------------------------------- if ($this->ipsclass->member['is_mod']) { $count = 0; $other_pages = 0; if ($this->ipsclass->input['selectedtids'] != "") { $tids = explode(",",$this->ipsclass->input['selectedtids']); if (is_array($tids) && count($tids)) { foreach ($tids as $tid) { if ($tid) { if (! array_key_exists($tid, $the_topics)) $other_pages++; $count++; } } } } $this->ipsclass->lang['f_go'] .= " ({$count})"; if ($other_pages) { $this->ipsclass->lang['f_go'] .= " ({$other_pages} {$this->ipsclass->lang['jscript_otherpage']})"; } } $this->output .= $this->ipsclass->compiled_templates['skin_search']->end_results_table(array( 'SHOW_PAGES' => $this->links, 'referer' => htmlentities(urldecode($_SERVER['QUERY_STRING'])), 'auth_key' => $this->ipsclass->return_md5_check())); Zapisz i wyślij. Przejdź do: ACP > LOOK & FEEL > ( wybór skina ) > Edit Template HTML > Search >> end_results_table Znajdź: <!-- END RESULTS TABLE --> <if="$as_post != 1"> <tr> <td class="formbuttonrow" colspan="8" style="text-align: right;"> <form action="{$this->ipsclass->base_url}act=search&CODE=getnew&active=1" method="post"> {$this->ipsclass->lang['active_start']} <select class="dropdown" name="lastdate"> <option value="86400">{$this->ipsclass->lang['active_today']}</option> <option value="604800">{$this->ipsclass->lang['active_week']}</option> <option value="1209600">{$this->ipsclass->lang['active_week2']}</option> <option value="2419200">{$this->ipsclass->lang['active_month']}</option> <option value="7257600">{$this->ipsclass->lang['active_month3']}</option> <option value="31449600">{$this->ipsclass->lang['active_year']}</option> </select> <input type="submit" value="{$this->ipsclass->lang['active_go']}" class="button" /></form></td> </tr><tr> <td class="catend" colspan="8"><!-- no content --></td> </tr> </table> </div> </if> Zamień na: <!-- END RESULTS TABLE --> <if="$as_post != 1"> <tr> <td class="formbuttonrow" colspan="9" style="text-align: right;"> <table class="ipbtable" cellspacing="0"> <tr> <td width="50%" class="nopad" align="left"> <form action="{$this->ipsclass->base_url}act=search&CODE=getnew&active=1" method="post"> {$this->ipsclass->lang['active_start']} <select class="dropdown" name="lastdate"> <option value="86400">{$this->ipsclass->lang['active_today']}</option> <option value="604800">{$this->ipsclass->lang['active_week']}</option> <option value="1209600">{$this->ipsclass->lang['active_week2']}</option> <option value="2419200">{$this->ipsclass->lang['active_month']}</option> <option value="7257600">{$this->ipsclass->lang['active_month3']}</option> <option value="31449600">{$this->ipsclass->lang['active_year']}</option> </select> <input type="submit" value="{$this->ipsclass->lang['active_go']}" class="button" /> </form> </td> <if="$this->ipsclass->member['is_mod'] == 1"> <td width="50%" align="right" nowrap="nowrap" class="nopad"> <form name="modform" method="post" action="{$this->ipsclass->base_url}" onsubmit="return checkdelete();"> <input type="hidden" name="act" value="mod" /> <input type="hidden" name="CODE" value="topicchoice" /> <input type="hidden" name="auth_key" value="{$data['auth_key']}" /> <input type="hidden" name="modfilter" value="{$this->ipsclass->input['modfilter']}" /> <input type="hidden" value="{$this->ipsclass->input['selectedtids']}" name="selectedtids" /> <input type="hidden" name="referer" value="{$data['referer']}" /> <select name="tact"> <option value="close">{$this->ipsclass->lang['cpt_close']}</option> <option value="open">{$this->ipsclass->lang['cpt_open']}</option> <option value="pin">{$this->ipsclass->lang['cpt_pin']}</option> <option value="unpin">{$this->ipsclass->lang['cpt_unpin']}</option> <option value="merge">{$this->ipsclass->lang['cpt_merge']}</option> <option value="delete">{$this->ipsclass->lang['cpt_delete']}</option> <option value="approve">{$this->ipsclass->lang['cpt_approve']}</option> <option value="unapprove">{$this->ipsclass->lang['cpt_unapprove']}</option> </select> <input type="submit" name="gobutton" value="{$this->ipsclass->lang['f_go']}" class="button" /> </form> </td> </if> </tr> </table> </td> </tr> <tr> <td class="catend" colspan="9"><!-- no content --></td> </tr> </table> </div> </if> Zapisz. Przejdź do: ACP > LOOK & FEEL > ( wybór skina ) > Edit Template HTML > Search >> no_results_row Znajdź: <tr> <td align="center" colspan="8" class="row1"><b>{$this->ipsclass->lang['no_search_topics']}</b></td> </tr> Zamień na: <tr> <td align="center" colspan="9" class="row1"><b>{$this->ipsclass->lang['no_search_topics']}</b></td> </tr> Zapisz. Przejdź do: ACP > LOOK & FEEL > ( wybór skina ) > Edit Template HTML > Search >> RenderRow Znajdź: <td class="{$data['class2']}"><span class="desc">{$data['last_post']}<br /><a href="{$this->ipsclass->base_url}showtopic={$data['tid']}&view=getlastpost">{$data['last_text']}</a> <b>{$data['last_poster']}</b></span></td> Dodaj poniżej: <if="$this->ipsclass->member['is_mod'] == 1 and $data['tidon'] == 1"> <td align="center" class="{$data['class2']}"><input type='hidden' name='tid_{$data['real_tid']}' id='tid_{$data['real_tid']}' /><a href="#" title="{$this->ipsclass->lang['click_for_mod']}" onclick="forum_toggle_tid('{$data['real_tid']}'); return false;"><img name="img{$data['real_tid']}" id='ipb-topic-{$data['real_tid']}' src="{$this->ipsclass->vars['img_url']}/topic_selected.gif" alt='' /></a></td> </if> <if="$this->ipsclass->member['is_mod'] == 1 and $data['tidon'] == 0"> <td align="center" class="{$data['class2']}"><input type='hidden' name='tid_{$data['real_tid']}' id='tid_{$data['real_tid']}' /><a href="#" title="{$this->ipsclass->lang['click_for_mod']}" onclick="forum_toggle_tid('{$data['real_tid']}'); return false;"><img name="img{$data['real_tid']}" id='ipb-topic-{$data['real_tid']}' src="{$this->ipsclass->vars['img_url']}/topic_unselected.gif" alt='' /></a></td> </if> Zapisz. Przejdź do: ACP > LOOK & FEEL > ( wybór skina ) > Edit Template HTML > Search >> Start Znajdź: <script type="text/javascript" src="jscripts/ipb_forum.js"></script> Dodaj powyżej: <script language="javascript" type="text/javascript"> <!-- var unselectedbutton = "{$this->ipsclass->vars['img_url']}/topic_unselected.gif"; var selectedbutton = "{$this->ipsclass->vars['img_url']}/topic_selected.gif"; var lang_gobutton = "{$this->ipsclass->lang['f_go']}"; var lang_suredelete = "{$this->ipsclass->lang['cp_js_delete']}"; var lang_otherpage = "{$this->ipsclass->lang['jscript_otherpage']}"; //--> </script> Znajdź: <table class='ipbtable' cellspacing="1"> <tr> <th colspan="2"> </th> <th>{$this->ipsclass->lang['h_topic_title']}</th> <th align="center">{$this->ipsclass->lang['h_forum_name']}</th> <th align="center">{$this->ipsclass->lang['h_topic_starter']}</th> <th align="center">{$this->ipsclass->lang['h_replies']}</th> <th align="center">{$this->ipsclass->lang['h_hits']}</th> <th>{$this->ipsclass->lang['h_last_action']}</th> Dodaj poniżej: <if="$this->ipsclass->member['is_mod'] == 1"> <th width="1%" align="center"><a href="#" title="{$this->ipsclass->lang['click_for_mod']}" onclick="forum_select_all(); return false;"><img name="imgall" id='ipb-topics-all' src="{$this->ipsclass->vars['img_url']}/topic_unselected.gif" alt='' /></th> </if> Zapisz. Gotowe! Pozdrawiam, DawPi
  3. IP.Board z nieznanych bliżej przyczyn czasem zmienia sposób wyświetlania tematu na inny ( tak naprawdę to wiem - cookies, ale one są niezależne od skryptu w pewnych okolicznościach ) . Najbardziej rozpowszechnionym trybem jest 'standard' i za chwilę pokażę jak ustawić ten oto tryb dla każdego użytkownika, bez względu na to, co miał ustawione do tej pory lub na co by chciał zmieniać. By ustawić tryb standardowy dla wszystkich postępuj wg poniższej instrukcji. Otwórz plik: sources/action_public/topics.php Znajdź: ( linie 131-134 ) else { $this->topic_view_mode = $this->ipsclass->my_getcookie('topicmode'); } Dodaj poniżej: #set standard topic mode by DawPi $this->topic_view_mode = 'linear'; Zapisz i wyślij. By usunąć niepotrzebny wybór z okna tematu: Przejdź do: ACP > LOOK & FEEL > ( wybór skina ) > Edit Template HTML > Topic View >> topic_page_top Znajdź: img_item + " <a href='{$this->ipsclass->base_url}act=usercp&CODE=start_subs&method=forum&fid={$data['FORUM']['id']}'>{$this->ipsclass->lang['ft_title']}</a>", "~~NODIV~~<div class='popupmenu-category' align='center'>{$this->ipsclass->lang['dd_display_modes']}</div>", img_item + " {$data['TOPIC']['to_button_threaded']}", img_item + " {$data['TOPIC']['to_button_standard']}", img_item + " {$data['TOPIC']['to_button_linearpl']}" ) ); Zamień na: img_item + " <a href='{$this->ipsclass->base_url}act=usercp&CODE=start_subs&method=forum&fid={$data['FORUM']['id']}'>{$this->ipsclass->lang['ft_title']}</a>" ) ); Zapisz. Autorem tutoriala jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.forum.invisionize.pl
  4. Od czasu do czasu każdemu administratorowi zdarza się zobaczyć ten komunikat podczas np. wysyłania nowego skina. Poniżej prezentuje jeden ze sposobów jak sobie z tym poradzić. Otwórz plik: init.php Znajdź: //----------------------------------------------- // NO USER EDITABLE SECTIONS BELOW //----------------------------------------------- Dodaj poniżej: ini_set("memory_limit","64M"); Zapisz i wyślij. Po tej zmianie spróbuj wykonać ponownie ostatnią operację, która zwróciła błąd zawarty w tytule tego artykułu. Jeśli i to nie pomoże napisz do admina serwera z prośbą o zwiększenie limitu poprzez wpis w pliku php.ini ( memory_limit ).
  5. Jeśli z jakiegoś powodu chcesz wyświetlać na stronie z listą adminów, super moderatorów, moderatorów również osoby, które w kolejnych grupach mają ustawioną grupę z opcjami super moderatora postępuj wg poniższej instrukcji. Otwórz plik: sources/action_public/misc/stats.php Znajdź: if ( $this->ipsclass->cache['group_cache'][ $member['mgroup'] ]['g_is_supmod'] and ( ! in_array( $member['id'], $used_ids) ) ) { $tmp_html .= $this->ipsclass->compiled_templates['skin_stats']->leader_row( $this->parse_member( $member ), $this->ipsclass->lang['leader_all_forums'] ); //----------------------------------------- // Used... //----------------------------------------- $used_ids[] = $member['id']; } Dodaj poniżej: else if ( $member['mgroup_others'] ) { $other_mgroups = explode( ",", $this->ipsclass->clean_perm_string( $member['mgroup_others'] ) ); if ( count ( $other_mgroups ) ) { foreach ( $other_mgroups as $grp ) { if ( $this->ipsclass->cache['group_cache'][ $grp ]['g_is_supmod'] && ( !in_array( $member['id'], $used_ids ) ) ) { $tmp_html .= $this->ipsclass->compiled_templates['skin_stats']->leader_row( $this->parse_member( $member ), $this->ipsclass->lang['leader_all_forums'] ); //----------------------------------------- // Used... //----------------------------------------- $used_ids[] = $member['id']; } } } } Zapisz i wyślij. Otwórz plik: sources/sql/mysql_queries.php Znajdź: function stats_get_all_members_groups( $a ) { Dodaj poniżej: #searching in other groups by DawPi foreach ( $a['group_ids'] as $v ) { $query[] = "m.mgroup_others LIKE '%,".$v.",%'"; } $query_final = implode (" or ", $query); Znajdź: ( w funkcji [ function stats_get_all_members_groups( $a ) ] ) WHERE m.mgroup IN (".implode( ',', $a['group_ids'] ).") Zamień na: WHERE m.mgroup IN (".implode( ',', $a['group_ids'] ).") OR " . $query_final . " Zapisz i wyślij. Gotowe Autorem tutoriala jest DawPi ( dzięki za pomoc Michael ). Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.forum.invisionize.pl
  6. Modyfikacja ta sprawia że po wysłaniu raportu przez użytkownika przycisk znika - nikt inny nie może raportować tematu 2 raz. Modyfikacja jest bardzo przydatna przy większych forach gdzie podwójne raporty są dość częstym zjawiskiem. Otwórz: sources/action_public/misc/contact_member.php Znajdź //----------------------------------------- // Make sure we came in via a form. //----------------------------------------- if ( $_POST['message'] == "" ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'complete_form') ); } Zamień na: if ( $_POST['message'] == "" ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'complete_form') ); } $this->ipsclass->DB->query("UPDATE ibf_posts SET been_reported=1 WHERE pid=".$pid); Otwórz: sources/action_public/topics.php Znajdź: $row['report_link'] = (($this->ipsclass->vars['disable_reportpost'] != 1) and ( $this->ipsclass->member['id'] )) ? $this->ipsclass->compiled_templates['skin_topic']->report_link($row) : ''; Zamień na $row['report_link'] = (($this->ipsclass->vars['disable_reportpost'] != 1) and ( $this->ipsclass->member['id'] ) and ( $row['been_reported']==0 )) ? $this->ipsclass->compiled_templates['skin_topic']->report_link($row) : ''; Zapisz i wyślij na serwer. Wykonaj zapytanie w SQL-u alter table ibf_posts add been_reported tinyint(1) default 0 not null W przypadku innej nazwy tabeli ibf_posts należy zmienić zapytanie jak i zapytanie w pliku sources/action_public/misc/contact_member.php Modyfikacja dla wersji 2.3.X Created by © bizon11 for IPB 2.3.X Na podstawie: Stop duplicate reports Add by DawPi: Mod powinien działać jednak nie podoba mi się ta pierwsza edycja, gdzie jest info by zamienić na : if ( $_POST['message'] == "" ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'complete_form') ); } $this->ipsclass->DB->query("UPDATE ibf_posts SET been_reported=1 WHERE pid=".$pid); Znacznie lepiej jest to zamienić na: if ( $_POST['message'] == "" ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'complete_form') ); } $this->ipsclass->DB->do_update( 'posts', array( 'been_reported' => 1 ), 'pid='.$pid ); i zapomnieć o prefixach
  7. Witam wszystkich w moim poradniku. Dowiecie się jak zrobić fajny mailing do userów swojego forum. Gotowy ? Zaczynamy ! ACP Logujemy się do naszego ACP. Przechodzimy do sekcji TOOLS & SETTINGS --->> Post Office --->> Create New Email. W sekcji Email Content, wpisujemy na początku taki kod: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <title>Zobacz naszą ofertę...</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> <link rel=StyleSheet href="http://ipb.ipslink.pl/style_images/css_21.css" type="text/css"> </head> Oczywiście zamiast Zobacz naszą ofertę... wpisujesz swój text title. Zamiast http://ipb.ipslink.pl/style_images/css_21.css wpisujemy adres css`a swojego forum. Jak to zrobić ? Wchodzisz na swoje forum. W przeglądarce klikasz na widok --->> źródło strony. Szukasz @import url, jest on na początku a adres w nawiasie to Twój css. Podmieniasz go z tym napisanym w kodzie. Następnie możemy dać logo naszego forum, lub jakąś inną grafikę. <img src="http://exegames.pl/img_games/gm.png"><br><br> Po tym możemy dać jakiś napis. <center><span style="font-size: xx-large;">TUTAJ WPISZ TEXT</span></center><br><br> Zamiast TUTAJ WPISZ TEXT wpisujesz np. nazwę swojego forum. Kolejno tworzymy tabelę, w której będzie owa wiadomość: </td><td class="nopad" width="1%" valign="top"><!-- no content --></td><td class="nopad" width="48%" valign="top"><div class="borderwrap" style="display:none" id="fc_forumz"> <div class="maintitlecollapse"> <p class="expand"><a href='java script:togglecategory("forumz", 0);'><img src='http://exegames.pl/style_images/evon/exp_plus.gif' border='0' alt='Expand' /></a></p> <p>Made by GeXeM</p> </div> </div> <div class="borderwrap" style="display:show" id="fo_forumz"> <div class="maintitle"> <p class="expand"><a href='java script:togglecategory("forumz", 1);'><img src='http://exegames.pl/style_images/evon/exp_minus.gif' border='0' alt='Collapse' /></a></p> <p>Hej {member_name} :) Potrzebujemy Cię !</p> </div><table class='ipbtable' cellspacing="1"> <tr> <td class='row2'> TUTAJ WPISZ TEXT. MADE BY GEXEM </td> </tr> <tr> <td class="catend" colspan="2"><!-- no content --></td> </tr> </table></div> <br><br> Zmieniamy tylko strukturę img src na ścieżkę swojego forum, oraz edytujemy wiadomość. Teraz gotową wiadomość możemy wysłać. Chyba wiecie, jak to się robi ;-) Efekt: http://images.net.pl/file/vuirwozis56xe7qoz8m9.jpg Przepraszam za jakość screena, mam monitor 22cale. Poradnik w 100% made by GeXeM for IPB.IPSLINK.PL . Zabraniam powielania na inne fora/strony.
  8. W Ineo istnieje błąd polegający na wyświetlaniu wszystkich rewizji w profilu danej osoby, gdzie powinny być pokazywane ostatnie artykuły, ale tylko te aktywne, nie te które są w menadżerze wersji. Poniżej zamieszczam łatkę na ten błąd. Otwórz plik: sources/components_public/ineo.php Znajdź: 'add_join' => array( 0 , array( 'type' => 'left', 'from' => array('ams_content' => 'c') , 'where' => 'c.content_article = a.article_id' )), Zamień na: 'add_join' => array( 0 , array( 'type' => 'left', 'from' => array('ams_content' => 'c') , 'where' => 'c.content_id = a.article_content' )), Zapisz i wyślij. Gotowe! Autorem tutoriala jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.forum.invisionize.pl
  9. W Ineo zauważyłem dziwną sprawę, a mianowicie parsowanie HTML, co burzyło niejednokrotnie wstawiane opisy w artykuły. Po zajrzeniu do plików znalazłem błąd programisty to powodujący, poniżej opis naprawy tego błędu. Otwórz plik: sources/components_public/ineo.php Znajdź: $parse->parse_html = 1; I usuń. Zapisz i wyślij. Gotowe! Autorem tutoriala jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.forum.invisionize.pl
  10. Nie nazwę tego moim tutorialem w całości gdyż jest to tylko moja mała modyfikacja kodu Subforum decoration v1.0.1 Co zamieniłem? wolny wiersz <br> pod subforami usunięty Subfora po 3 w wierszu wyrównane i wycentrowane Brak obrazka folderu Root, same subfora wyglądają lepiej Eleganckie forum Demo: Wrzuć te pliki do root/style_images/tutaj http://odsiebie.com/pokaz/683283---0ec7.html Otwórz ./sources/classes/class_forums.php Znajdź [ in Function forums_format_lastinfo($forum_data) ] $forum_data['show_subforums'] = $this->ipsclass->compiled_templates['skin_boards']->show_subforum_all_links( implode( ', ', $forum_data['subforums'] ) ); Zamień na //----------------------------------------- // Sub-Forum Decoration by TaDinhPhong (Flanger's Modification) //----------------------------------------- $subforum = "<table width='100%'><tr><td width='40%'align='left' valign='top'>"; $i=0;$j = round((count($forum_data['subforums'])/3),0); foreach($forum_data['subforums'] as $k) { $i++; if($i == 0) { $subforum .= "
  11. Standardowo to ustawienie jest włączone lub wyłączone - mam na myśli podgląd kto przegląda dane forum lub temat. Poniżej przedstawiam sposób w jaki sposób ograniczyć obciążenie serwera i wyłączyć te opcje tylko dla gości ( o ile włączone jest w ogóle ). Wyłączenie legendy obecnych w temacie dla gości Otwórz plik: sources/action_public/topics.php Znajdź: if ($this->ipsclass->vars['no_au_topic'] != 1) Zamień na: if ($this->ipsclass->vars['no_au_topic'] != 1 and $this->ipsclass->member['id'] > 0 ) Zapisz i wyślij. Wyłączenie legendy obecnych w forum dla gości Otwórz plik: sources/action_public/forums.php Znajdź: if ($this->ipsclass->vars['no_au_forum'] != 1) Zamień na: if ($this->ipsclass->vars['no_au_forum'] != 1 and $this->ipsclass->member['id'] > 0 ) Zapisz i wyślij. Autorem tutoriala jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.forum.invisionize.pl
  12. Jak to osiągnąć: Powiązane: http://forum.invisionize.pl/index.php?auto...;showarticle=23 By osiągnąć efekt przedstawiony wcześniej, postępuj wg poniższej instrukcji. Wyślij na serwer FTP do folderu: skin_images/(folder_ze_skinem)/folder_editor_images/ tę grafikę: Pamiętaj by miała nazwę: hide.png Przejdź do: ACP > LOOK & FEEL > ( wybór skina ) > Edit Template HTML > Post / PM Editor >> ips_editor Znajdź: <td><div class="rte-normal" id="{$editor_id}_cmd_ipb_code"><img src="{$images_path}rte-code-button.png" alt="{$this->ipsclass->lang['js_rte_lite_code']}" title="{$this->ipsclass->lang['js_rte_lite_code']}"></div></td> Dodaj poniżej: <td><div class="rte-normal" id="{$editor_id}_cmd_ipb_hide"><img src="{$images_path}hide.png" alt="Ukryj w Hide" title="Ukrywanie zawartości"></div></td> Zapisz. Otwórz plik: jscripts/ips_text_editor.js Znajdź: /** * STD: * IPB code override */ this.ipb_code = function() { this.wrap_tags_lite( '[code]', '[/ code]', 0) }; Dodaj poniżej: /** * STD: * IPB hide override */ this.ipb_hide = function() { this.wrap_tags_lite( '[hide]', '[/hide]', 0) }; Zapisz i wyślij. Przejdź do: ACP > TOOLS & SETTINGS >> Maintenance > Cache Control >> Update all caches... Zrobione ! Tutorial wykonany dla www.forum.invisionize.pl
  13. Zmiana kodowania w D21 ShoutBox ACP -> LOOK & FEEL -> SKIN MANAGER -> (Klikamy na przycisk obok nazwy skina) -> Edit Template html -> skin_shoutbox i edytować 3 sekcje (export_html_header, global_error, global_shouts) zmieniając iso-8859-1 na iso-8859-2
  14. Wchodzimy w : MANAGEMENT Znajdujemy : Users and Groups Wchodzimy : Custom Profile Fields Field Title : Tlen Description : Wpisz identyfikator Tlen Field Type : Text Input Maximum Input : 50 Display order : 0 Expected Input Format : puste pole Option Content (for drop downs) : puste pole Include on registration page? : Wybieramy Yes albo No, ja mam na No Field MUST be completed and not left empty? : No Field can be edited by the member? : No Make this a private profile field? : No Make Admin and Super Moderator Editable/Viewable Only? : No Topic View Format? : <a href="tlen:{content}"><img src="http://www.pphugemi.pl/gfx/tlen.gif" width="16" height="16"></img></a> <b><font color="black">Tlen:</font></b> {content} <br />
  15. Zainspirowany, a w sumie poproszony przez usera w tym temacie postanowiłem wykonać ową modyfikację. UWAGA: działa tylko i wyłącznie z zainstalowanym FURLem. Otwórz plik: sources/action_public/topics.php Znajdź: while ($row = $this->ipsclass->DB->fetch_row($rs)) { Dodaj powyżej: //----------------------------------------- // (DP23) FURL in Similar Topics //----------------------------------------- if (!is_object($this->display)) { require_once(ROOT_PATH.'/sources/classes/class_display.php'); $this->display = new display; $this->display->ipsclass =& $this->ipsclass; } Znajdź: $html .= $this->ipsclass->compiled_templates['skin_topic']->similar_topics_row($row); } Dodaj powyżej: $row['furl'] = $this->display->make_url($row['title'], $row['tid'], 't', $row['title']); Zapisz i wyślij. Przejdź do: ACP > LOOK & FEEL > ( wybór skina ) > Edit Template HTML > Topic View >> similar_topics_row Znajdź: <a href="{$this->ipsclass->base_url}showtopic={$row['tid']}" title="{$this->ipsclass->lang['st_date_started']} {$row['start_date']}">{$row['title']}</a> Zamień na: {$row['furl']} Zapisz. Gotowe! Autorem tutoriala jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.forum.invisionize.pl
  16. Z MARSZU PISZĘ, ŻE OBRAZKI BĘDĄ PRZYSTOSOWANE POD TO FORUM, DAJE ZE SWOJEGO BO ROBIŁEM JE NA PC W PRACY. TERAZ NIE MOGĘ ZROBIĆ SCREENA BO MAM MON. 22`CALE. Witaj w forumowym F.A.Q ! Jest on przeznaczony dla tych, którzy pierwszy raz stykają się z skryptem IP.Board. 1. Ogólny Interfejs forum Tego jeszcze nie zrobiłem, muszę zrobić 2. Rejestracja ? Rejestracja to czynność wykonywana jednokrotnie przez daną osobę, by znalazła się w naszej społeczności. Osoba posiadająca u nas darmowe konto ma wiele przywilejów i posiada masę opcji niedostępnych dla gości. Poniższy obrazek pokazuje wzór poprawnej szybkiej rejestracji na forum: OBRAZEK NIEDOSTĘPNY (jak będę w pracy to dam obrazki) Po wypełnieniu (swoje dane a nie takie jak na obrazku), wystarczy tylko kliknąć na przycisk Zajerestruj się teraz. Gratulacje ! Zostałeś członkiem forum opartego na IP.Board. 3. Pisanie wiadomości na forum (postów/tematów) 3.1 Tworzenie nowych wątków na forum Aby stworzyć nowy wątek nie poruszany na forum musisz kliknąć na przycisk: Po chwili ukaże Ci się edytor wiadomości. Na obrazku jest pokazany wzór, jak wypełniać pola Po zakończeniu pisania klikamy na przycisk. Gotowe, post został napisany i zaraz go zobaczysz na ekranie. 3.2 Odpowiadanie na istniejące już tematy Gdy chcesz odpowiedzieć w jakimś wątku musisz znaleźć pod takie przyciski: Pierwszy z nich spowoduje otwarcie szybkiej odpowiedzi. Wpisujemy w polu naszą odpowiedź na dany temat, po zakończeniu klikamy na Dodaj Odpowiedź. Drugi przycisk to edytor zaawansowanej odpowiedzi (taki jak przy pisaniu tematów) Natomiast trzeci spowoduje napisanie NOWEGO TEMATU w danym forum (nie odpowiedzi). 7. Szukanie na forum Opcja szukaj, służy do tego byśmy szukali czy dany temat został już poruszony na forum. Oto obrazek przedstawiający zaawansowane szukanie: W pole szukaj wg. słów kluczowych wpisujemy żądaną frazę. Po wpisaniu klikamy na Szukaj! 8. Boję się, że coś zepsuję, mogę bezkarnie przetestować opcje forum ? Oczywiście, że tak W tym celu powstało specjalne forum, wystarczy kliknąć w ten link. Made by GeXeM, ZAKAZ POWIELANIA NA INNE FORA/STRONY. Będzie uaktualniane...
  17. Witam, Jak wiadomo takie roboty kradną adresy e-mail, obciążają transfer, rejestrują fake konta itd. Istnieje na forum kilka sposobów jak się chronić przed szkodliwymi robotami, poniżej kolejny sposób. Otwórz plik: .htaccess I dodaj w nim: CODE-BOX RewriteEngine OnRewriteCond %{HTTP_USER_AGENT} ^atSpider/1.0 [OR] RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR] RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:[email protected] [OR] RewriteCond %{HTTP_USER_AGENT} ^CherryPicker [OR] RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] RewriteCond %{HTTP_USER_AGENT} ^Crescent [OR] RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] RewriteCond %{HTTP_USER_AGENT} ^DIIbot [OR] RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR] RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR] RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR] RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [OR] RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR] RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR] RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR] RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR] RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR] RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR] RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR] RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR] RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR] RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR] RewriteCond %{HTTP_USER_AGENT} ^HMView [OR] RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR] RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR] RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR] RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR] RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR] RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR] RewriteCond %{HTTP_USER_AGENT} ^larbin [OR] RewriteCond %{HTTP_USER_AGENT} ^LARBIN-EXPERIMENTAL [OR] RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR] RewriteCond %{HTTP_USER_AGENT} ^LinkWalker [OR] RewriteCond %{HTTP_USER_AGENT} ^LWP::Simple/5.803 [OR] RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR] RewriteCond %{HTTP_USER_AGENT} ^Microsoft.URL [OR] RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR] RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR] RewriteCond %{HTTP_USER_AGENT} ^MFHttpScan [OR] RewriteCond %{HTTP_USER_AGENT} ^MSFrontPage [OR] RewriteCond %{HTTP_USER_AGENT} ^NICErsPRO [OR] RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR] RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR] RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR] RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR] RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR] RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR] RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR] RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR] RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR] RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR] RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR] RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR] RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR] RewriteCond %{HTTP_USER_AGENT} ^Poirot [OR] RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR] RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR] RewriteCond %{HTTP_USER_AGENT} ^Scan4Mail [OR] RewriteCond %{HTTP_USER_AGENT} ^Siphon [OR] RewriteCond %{HTTP_USER_AGENT} ^sitecheck.internetseer.com [OR] RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR] RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR] RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR] RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR] RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR] RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR] RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR] RewriteCond %{HTTP_USER_AGENT} ^TrackBack/1.02 [OR] RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR] RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR] RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR] RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR] RewriteCond %{HTTP_USER_AGENT} ^webcollage [OR] RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR] RewriteCond %{HTTP_USER_AGENT} ^WebEMailExtrac.* [OR] RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR] RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR] RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR] RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR] RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR] RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR] RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR] RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR] RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR] RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR] RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR] RewriteCond %{HTTP_USER_AGENT} ^Wget [OR] RewriteCond %{HTTP_USER_AGENT} ^Widow [OR] RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR] RewriteCond %{HTTP_USER_AGENT} ^[Ww]eb[bb]andit [OR] RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR] RewriteCond %{HTTP_USER_AGENT} ^Zeus RewriteRule ^.* - [F,L] Pozdrawiam, DawPi
  18. Zaprezentuję dość przydatną zmianę zapisu logów administracyjnych. Wiadomym jest, że każdy z nas ma 'jakieś' hasła na różne strony internetowe. Jedni mają jedno hasło na kilka stron, inni na każdą oddzielne ( jak ja ). jednak wiadomo też, że pierwsze zjawisko jest o wiele częściej spotykane. Może nie wszyscy wiedzą, ale w IP.Board zaimplementowano mechanizm zapisywania danych używanych do logowania do ACP. System zapamiętuje ilość znaków w haśle ( o zgrozo! ) i pokazuje jawnie ostatni znak ( ! ) hasła. Dla przykładu, screen z mojego logowania: Jakie skutki tego mogą być? Przeróżne. Załóżmy, że na forum jest kilku adminów, podejrzenie takich danych i znajomość admina może skutkować odgadnięciem hasła, a jeśli admin używa tego samego hasła na różnych stronach to skutki mogą być nie przewidywalne. To tylko jedno z wielu 'zastosowań' znajomości takich danych. Pokażę niżej jak w prosty sposób zmienić ten sposób na taki by zapisywało tylko trzy gwiazdki i zero jawnych znaków hasła, czyli w ten sposób: Zatem do dzieła. Otwórz plik: sources/action_admin/login.php Znajdź: if ( $k == 'password' ) { $v = str_repeat( '*', strlen( $v ) - 1 ) . substr( $v, -1, 1 ); } Zamień na: if ( $k == 'password' AND $flag == 'fail' ) { $v = str_repeat( '*', strlen( $v ) - 1 ) . substr( $v, -1, 1 ); } else $v = "***"; Zapisz i wyślij. Dzięki temu logowania zakończone sukcesem będą skutkować zapisaniem trzech '*' w logach ( tak jak na drugim screenie ), a nieprawidłowe logowania czyli zakończone niepowodzeniem będą skutkować wpisaniem hasła wg standardowego schematu - ilość znaków i jawny ostatni znak. Dzięki temu możesz sprawdzić czy na konta adminów logował się ktoś obcy - próbując odgadnąć hasło czy po prostu ktoś się pomylił. Myślę, że to bardzo korzystna zmiana i daje kolejne narzędzie Administratorowi do pełnego monitoringu bezpieczeństwa forum. Na zakończenie dopowiem i doradzę - by te zmiany odniosły skutek warto wyczyścić tabelę w której zapisywane są owe logi. Czyli wykonaj poniższe zapytanie na Twojej bazie danych ( poprzez PhpMyAdmin ): truncate ibf_admin_login_logs; Pamiętaj by zastąpić ibf_ prefixem Twojej bazy danych. Nie znasz prefixu bazy danych? Otwórz plik: conf_global.php Znajdź: $INFO['sql_tbl_prefix'] = 'PREFIX'; w miejscu PREFIX jest to ,czego szukasz Autorem tutoriala jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.IPSlink.pl
  19. Bardzo przydatną funkcją dającą większe możliwości użytkowników na forum jest opcja kasowania własnych tematów. Jednak może powodować to pewne komplikacje, kiedy dyskusja rozwinie się na tyle dużo, że skasowanie takiego tematu może być problematyczne lub po prostu powodować ‘dziury logiczne’ na forum. Przedstawię w jaki sposób zmienić ową funkcję by istniała możliwość kasowania swoich tematów tylko w przypadku braku jakiejkolwiek odpowiedzi w temacie. By to zrobić należy postępować wg poniższych kilku prostych kroków. Info: artykuł został napisany pod wersję IP.Board 2.3.5 i na takiej testowany. Otwórz plik: sources/action_public/moderate.php Znajdź: ( w funkcji delete_form() , około linii 3460 ) if ($this->ipsclass->member['g_delete_own_topics'] == 1) Zamień na: if ($this->ipsclass->member['g_delete_own_topics'] == 1 and !$this->topic['posts']) Zapisz plik i wyślij na serwer. Otwórz plik: sources/action_public/topics.php Znajdź: else if ($key == 'DELETE_TOPIC') { if ($this->ipsclass->member['g_delete_own_topics']) { $mod_links .= $this->append_link($key); } } } if ($this->ipsclass->member['g_access_cp'] == 1) Zamień na: else if ($key == 'DELETE_TOPIC') { if ($this->ipsclass->member['g_delete_own_topics'] and !$this->topic['posts']) { $mod_links .= $this->append_link($key); } } } if ($this->ipsclass->member['g_access_cp'] == 1) Zapisz i wyślij na serwer. Dzięki temu takie menu: Będzie widoczne dla osób, które mogą kasować swoje tematy tylko w przypadku jeśli nikt nie odpisał na dany temat. Przywracanie poprzedniej funkcjonalności: Sprawa wydaje się banalna i taka też jest w rzeczywistości - należy cofnąć zmiany w plikach. Jednak po tym nadal menu opcji moderacyjnych nie będzie widoczne. Należy w tym celu odświeżyć cache forum. By to zrobić należy przejść do zakładki TOOLS & SETTINGS, następnie w sekcji Maintenance wybrać opcję Cache Control i wybrać przebudowę wszystkich cache poprzez opcję Update all caches… Autorem tutoriala jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.IPSlink.pl
  20. Jak wiadomo modyfikacja Hide Hack służy do ukrywania pewnych fragmentów postu zawierającego się pomiędzy tagami HIDE. Treść staje się widoczna tylko po odpisaniu w danym temacie. Przedstawię kilka nowych funkcji, które można zastosować w tej modyfikacji. Info: opis opiera się na edytowaniu kodu .php. Wymagana dokładność podczas edycji plików. Integracja Hide Hack z Thanks Points By zintegrować obie modyfikacje tak by możliwe było odczytanie ukrytej zawartości po kliknięciu na button 'Dzięki' postępuj wg poniższej instrukcji. Otwórz plik: sources/classes/class_hide.php Znajdź: $this->ipsclass->DB->query("SELECT author_id FROM ibf_posts WHERE topic_id='".$topicid."'"); Zamień na: $this->ipsclass->DB->query("SELECT post_thanks, author_id FROM ibf_posts WHERE topic_id='".$topicid."'"); Znajdź: while($info = $this->ipsclass->DB->fetch_row()) { Dodaj poniżej: $allposters[] = $info['post_thanks']; Znajdź: if($allposters != null) { Dodaj poniżej: $allposters = implode(",",$allposters); $allposters = explode(",",$allposters); Znajdź: if(in_array($this->ipsclass->member['id'], $allposters)) Zamień na: if(in_array($this->ipsclass->member['id'], $allposters) and $this->ipsclass->member['id'] > 0) Zapisz i wyślij. Od teraz osoba klikająca na button 'Dzięki' zobaczy automatycznie ukrytą treść pod tagami HIDE. Ukryta treść widoczna dla danych grup Jeśli chcesz odkryć ukrytą treść pod tagami HIDE dla konkretnych grup, postępuj wg poniższej instrukcji. Otwórz plik: sources/classes/class_hide.php Znajdź: if(in_array($this->ipsclass->member['id'], $allposters)) Zamień na: if(in_array($this->ipsclass->member['id'], $allposters) or in_array($this->ipsclass->member['mgroup'], array ( 3,4 )) ) Zapisz i wyślij. info: 3,4 to ID grup, które mogą widzieć ukrytą treść bez odpowiadania. Zamień je na swoje wybrane. widoczność tylko dla zarejestrowanych użytkowników Jeśli chcesz umożliwić by tylko zarejestrowane osoby mogły przeglądać ukryte pod tagami HIDE treści, postępuj wg poniższej instrukcji. Otwórz plik: sources/classes/class_hide.php Znajdź: if(in_array($this->ipsclass->member['id'], $allposters)) Zamień na: if($this->ipsclass->member['id']) Zapisz i wyślij. Jak widać nowe zmiany są bardzo proste do wprowadzenia. Jeśli nie znalazłeś opisu funkcji, którą chciałbyś wprowadzić na swoim forum - napisz w tym temacie. Być może uda mi się ja napisać ;-) Autorem tutoriala jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.IPSlink.pl
  21. Uruchamianie skryptu PHP na forum Bardzo przydatną możliwością jest uruchamianie własnych skryptów na forum. Jak wiadomo istnieje ten sposób: <!--exec.file="test.php"--> Jednak wymaga to włączenia PHP w bitach skina, co powoduje pewne luki w bezpieczeństwie. Pokażę w prosty sposób jak dodać skrypt PHP na forum. Należy otworzyć plik: sources/classes/class_display.php Znaleźć: $this->ipsclass->skin['_wrapper'] = str_replace( "<% CHARSET %>" , $this->ipsclass->vars['gb_char_set'], $this->ipsclass->skin['_wrapper']); I pod spodem dodać taki kod: $jakas_zmienna = " To jest jakis kod PHP. W tym przypadku jest to ciag znakow"; $this->ipsclass->skin['_wrapper'] = str_replace( "<% DOSKINA %>" , $jakas_zmienna , $this->ipsclass->skin['_wrapper']); Zapisać i wysłać. Następnie przejść do edycji bita skina, wybrać miejsce, w którym ma się pojawić owy kod ( np. w Edit Board Header & Footer Wrapper ) i umieścić poniższy kod: <% DOSKINA %> Zapisać bit. Dzięki temu wysłaliśmy do skina wynik naszego skryptu ( w tym przypadku prostego przypisania wartości do zmiennej ). Autorem artykułu jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Artykuł napisany dla www.IPSlink.pl
  22. Sprostowanie: przeglądając zainstalowane modyfikacje zauważyłem, że mam zainstalowane (DP23) Show Subforums Changer i okazuje się, że poprzednie forum z tutorialami mam zachowane Pozostaje tylko przenieść nowe tutki - zajmę się tym już sam. Dziękuję za chęci i przepraszam za zamieszanie!
  23. DawPi

    [ACP] Piękna i Maszkara

    Gexem spokojnie, przecież ja już coś takiego pisałem Czekam na IP.Board 3.0 i robię do tego wszystko! Każda pomoc, chęci się liczą, a wiem, że na Tobie można polegać!
  24. Nie taka skromna! Wybieram te! Dziękuję..
  25. DawPi

    [ACP] Piękna i Maszkara

    Czekamy! Rada: skorzystaj z markerów: znak wodny
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.