• Rejestracja
vBHELP.pl - polskie wsparcie vBulletin
  1. #1
    Awatar Krzy-siek
    Krzy-siek jest nieaktywny Początkujący
    Dołączył
    lis 2008
    Posty
    8

    Thumbs up [AKTUALIZOWANY] Własny portal + VB - integracja

    Witam.
    Jestem w trakcie pisania własnego portalu, który powoli integruję z silnikiem forum VB, ponieważ jest z tym trochę problemów, a istnieje niewiele treści, które są pomocne w pracy... postanowiłem napisać ten artykuł. Będzie on aktualizowany wraz z rozwojem mojego portalu.

    ZAKŁADAMY: że nasze forum znajduje się w pod folderze portalu ... czyli ścieżka do forum wygląda następująco: www.nasza-strona.pl/forum/


    1. INTEGRACJA SYSTEMU LOGOWANIA

    Poniżej znajduje się podstawowy formularz, który będzie nam służył do logowania.

    Kod html:
    <form action="forum/login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, $show[nopasswordempty])">
    <script type="text/javascript" src="forum/clientscript/vbulletin_md5.js?v=$vboptions[simpleversion]"></script>
                        <table cellpadding="0" border="0">
                        <tr>
                            <td style="white-space: nowrap;">Login: </td>
                            <td><input type="text" style="font-size: 11px" name="vb_login_username" id="navbar_username" size="10" accesskey="u" tabindex="101" /></td>
                            <td nowrap="nowrap"><input type="checkbox" name="cookieuser" value="1" tabindex="103" id="cb_cookieuser_navbar" accesskey="c" />Zapamietaj mnie</td>
                        </tr>
                        <tr>
                            <td>Hasło: </td>
                            <td><input type="password" style="font-size: 11px" name="vb_login_password" id="navbar_password" size="10" tabindex="102" /></td>
                            <td><input type="submit" class="button" value="Zaloguj mnie" tabindex="104" title="Podaj Login i Hasło" accesskey="s" /></td>
                        </tr>
                        </table>
    <input type="hidden" name="s" value="$session[sessionhash]" />
    <input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" />
    <input type="hidden" name="do" value="login" />
    <input type="hidden" name="vb_login_md5password" />
    <input type="hidden" name="vb_login_md5password_utf" />
    </form>
    Z formularza przekierowałem zmienne (o takich samych nazwach jak na forum oczywiście) do pliku odpowiedzialnego za logowanie na forum:
    Kod:
    (...) action="forum/login.php?do=login" (...)
    Następnie podpiąłem pod formularz skrypt JS (także z forum):
    Kod:
    <script type="text/javascript" src="forum/clientscript/vbulletin_md5.js?v=$vboptions[simpleversion]"></script>
    Przed kodem HTML trzeba załączyć plik GLOBAL.php z forum oraz wystartować sesję (pomoc MatKus):
    Kod php:
    <?php

    session_start
    (); 

    chdir('./forum');
       require_once(
    './global.php');
     
    chdir('./..'); 

    header('Content-type:text/html; charset=utf-8');
    ?>
    Dodatkowo wysyłamy tu nagłówek, w którym definiujemy kodowanie używane na portalu.

    Po tych kilku zabiegach na naszym portalu będzie działać system logowania

    2. Pobieranie informacji z BD forum (wybrane tematy):

    -= w przygotowaniu =-
    Ostatnio edytowane przez Krzy-siek ; 21.02.2009 o 21:18



  2. #2
    Awatar Krzy-siek
    Krzy-siek jest nieaktywny Początkujący
    Dołączył
    lis 2008
    Posty
    8

    Arrow

    2. Pobieranie informacji z BD forum (wybrane tematy):

    To już na prawdę nic trudnego

    Pierwsze co musimy zrobić to połączyć się z bazą danych naszego forum:

    Kod php:
    function polaczenie_db_forum()
        {
            @
    $db=new mysqli('localhost','UŻYTKOWNIK BAZY','HASŁO','NAZWA BAZY');
            
            if(
    mysqli_connect_errno())
            {
                echo 
    "Błąd: Połączenie z bazą danych nie powiodło się. Spróbuj ponownie później.";
            }
            
            
            return 
    $db;
        } 
    Jedyne co musimy tutaj zrobić to podać swoje dane w funkcji mysqli() - najpierw nazwa hosta (jeśli jest on inny niż localhost należy go zmienić), następnie nazwa użytkownika bazy danych, hasło do bazy danych oraz nazwę bazy

    Teraz po wywołaniu funkcji polaczenie_db_forum() będziemy mieć dostęp do zawartości naszego forum

    No to pobierzmy sobie z naszego forum 5 najnowszych tematów i ułóżmy je od najnowszego:

    Kod php:
    $db polaczenie_db_forum();

        
    $sql "SELECT * FROM `thread` ORDER BY `thread`.`threadid` DESC LIMIT 0 , 5";
        
    $wynik $db->query($sql);
        
        
    $i 0;
        
    $dane $wynik->fetch_array();
        
        
    $ilosc_rekordow $wynik->num_rows;
        
        
    $wynik_a $db->query($sql);
        
        while(
    $dane $wynik_a->fetch_array()){
            
            
    $i++;
            
            
    $data date('d.m.Y H:i',$dane['dateline']);
            
            
    $teraz time();
            
    $nowosc $teraz $dane['dateline'];
            
    $nowosc floor($nowosc/(24*60*60));

            if(
    $nowosc <= 7){
                
    $new_img "<img src=\"http://vbhelp.pl/images/new.png\" style=\"vertical-align:middle;\" /> ";
            }
            
            
    $temat $dane['title'];
            
            if(
    strlen($temat) >= 30){
                
    $temat substr($temat,0,25);
                
    $temat $temat."...";
            }

            print
    "
                <table style=\"width:100%;\"><tr>
                <td style=\"width:10%; text-align:center;\">"
    .$i."</td>
                <td style=\"width:60%;\">"
    .$new_img."<a href=\"forum/showthread.php?t=".$dane['threadid']."\" target=\"_blank\"><b>".$temat."</b></a></td>
                <td style=\"width:40%; text-align:right;\">"
    .$data."</td>
                </tr></table>
            "
    ;

        } 
    Jeśli chcemy pobierać informacje z konkretnego działu zapytanie powinno wyglądać tak:

    Kod:
    $sql = "SELECT * FROM `thread` WHERE `forumid` = IDFORUM ORDER BY `thread`.`threadid` DESC LIMIT 0 , 5";
    Uwaga!!! Za IDFORUM wpisujemy id wybranego przez nas działu

    ---------------------------------------

    Nie będę wiersz po wierszu opisywał co dany skrypt robi, ale tak z grubsza:

    1. Łączy się z bazą danych poprzez wywołanie funkcji którą omówiliśmy wcześniej.

    2. Odpowiedź z bazy danych przekształca na tablicę.

    3. Określa czy dany temat jest starszy niż 7 dni, jeśli nie to przy temacie pojawi się ikonka NEW.

    4. Wyświetla tematy (pętla WHILE()) wypisując:

    • numer wiersza
    • temat + tworzy link do niego + ewentualna ikonka NEW
    • data dodania tematu


    Cały skrypt wygląda następująco:

    Kod php:
    <?php
        
        header
    ('Content-type:text/html; charset=ISO-8859-2');
        
        function 
    polaczenie_db_forum()
        {
            @
    $db=new mysqli('localhost','kkdesign_user','534534','kkdesign_lg');
            
            if(
    mysqli_connect_errno())
            {
                echo 
    "Błąd: Połączenie z bazą danych nie powiodło się. Spróbuj ponownie później.";
            }
            
            
            return 
    $db;
        }
        
        
    $db polaczenie_db_forum();

        
    $sql "SELECT * FROM `thread` ORDER BY `thread`.`threadid` DESC LIMIT 0 , 5";
        
    $wynik $db->query($sql);
        
        
    $i 0;
        
    $dane $wynik->fetch_array();
        
        
    $ilosc_rekordow $wynik->num_rows;
        
        
    $wynik_a $db->query($sql);
        
        while(
    $dane $wynik_a->fetch_array()){
            
            
    $i++;
            
            
    $data date('d.m.Y H:i',$dane['dateline']);
            
            
    $teraz time();
            
    $nowosc $teraz $dane['dateline'];
            
    $nowosc floor($nowosc/(24*60*60));

            if(
    $nowosc <= 7){
                
    $new_img "<img src=\"http://vbhelp.pl/images/new.png\" style=\"vertical-align:middle;\" /> ";
            }
            
            
    $temat $dane['title'];
            
            if(
    strlen($temat) >= 30){
                
    $temat substr($temat,0,25);
                
    $temat $temat."...";
            }

            print
    "
            <div class=\"art_pad\">
                <table style=\"width:100%;\"><tr>
                <td style=\"width:10%; text-align:center;\">"
    .$i."</td>
                <td style=\"width:60%;\">"
    .$new_img."<a href=\"forum/showthread.php?t=".$dane['threadid']."\" target=\"_blank\"><b>".$temat."</b></a></td>
                <td style=\"width:40%; text-align:right;\">"
    .$data."</td>
                </tr></table>
            </div>
            "
    ;
            
            if(
    $i $ilosc_rekordow){
                print 
    "<hr />";
            }
        }

    ?>
    Dodatkowo tylko na początku skryptu wysyłamy nagłówek, w którym określamy kodowanie znaków

    W załączniku mamy ikonkę NEW (umieszczamy ją w folderze IMAGES)

    KONIEC

    Kolejne części już niebawem Pozdrawiam
    Załączone obrazki Załączone obrazki
    Ostatnio edytowane przez Krzy-siek ; 23.02.2009 o 06:55


Podobne wątki

  1. Własny CSS?
    By hash_ in forum Pytania i problemy
    Odpowiedzi: 1
    Ostatni post / autor: 09.10.2010, 21:37
  2. Własny napis
    By Vanad in forum Style
    Odpowiedzi: 2
    Ostatni post / autor: 18.10.2009, 09:58
  3. Avatar z forum na własny portal...
    By Krzy-siek in forum Pytania i problemy
    Odpowiedzi: 0
    Ostatni post / autor: 20.02.2009, 23:23
  4. Własny portal - integracja logowania
    By Krzy-siek in forum Pytania i problemy
    Odpowiedzi: 3
    Ostatni post / autor: 20.02.2009, 23:16
  5. własny serwer
    By BuLi! in forum Pomoc przy wyborze
    Odpowiedzi: 17
    Ostatni post / autor: 08.10.2008, 01:22
Chmurka.pl

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67