Pagina 1 di 21 1 2 3 11 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 208
  1. #1
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122

    [Pillola] Riconoscere utenti utilizzando phpBB

    In questa pillolina vediamo come riconoscere gli utenti in un sito che ha il forum phpBB 2 (spero che valga anche per l'1 ma non so con precisione) anche perchè questo forum sta diventando il più commerciale di tutti dato la sua licenza molto vantaggiosa

    IPOTESI:
    abbiamo a disposizione un bel dominio
    www.miosito.it/
    in cui abbiamo creato una cartella per metterci dentro il phpBB
    www.miosito.it/forum/
    io inoltre ho creato una cartella dove mettere tutte le pagine
    www.miosito.it/page/

    Bene a questo punto vogliamo creare un sito che contenga una registrazione utenti ma gli stessi dati del forum siano uguali a quelli del sito.
    In questa pagina viene spiegato anche abbastanza bene ma ho pensato di tradurlo per la felicità di tanta gente che come me non sa l'inglese.
    Senza contare che io non ho fatto la stessa cosa...io ho copiato il file che ci servirà e lo ho modificato a mio piacimento. Comunque siete liberi di usare sia il file originario del phpBB che il mio, reperibile esattamente qui .

    Per cominciare apriamo index.php il file che conterrà il form di user e pass e tra le prime righe mettiamo questo codice
    Codice PHP:
    <?php
    session_start
    ();
    define('IN_PHPBB'true);
    $phpbb_root_path 'forum/';
    include(
    $phpbb_root_path 'extension.inc');
    include(
    $phpbb_root_path 'common.'.$phpEx);
    $userdata session_pagestart($user_ipPAGE_INDEX);
    init_userprefs($userdata);
    ?>
    Importante per i meno esperti: questo codice va messo all'inizio di tutta la pagina ancora prima di <html> o di qualsiasi <script> o <style>.
    Adesso vediamo di creare il form che andrà in homepage
    codice:
    Effettua il log-in
    <form action="page/login.php" method="POST">
    <input type="text" name="username" size="16" maxsize="25" value="username"> 
    
    <input type="password" name="password" size="16" maxsize="25">
    
    Ricordati di me<input type="checkbox" name="autologin">
    
    <input type="submit" value="Invia" name="login">
    </form>
    Come potete vedere io il form non lo invio all'url forum/login.php bensì all'url page/login.php, directory dove ho messo il mio file modificato.
    Il perchè di tutto questo lo vedremo dopo.
    Se invece all'inizio avete scelto di utilizzare il file originale del phpBB allora dovete sostituire questo
    codice:
    <form action="forum/login.php" method="POST">
    Che vi piaccia o no, abbiamo finito.
    Se dopo volete abbellire il codice del mio file siete liberi di farlo.
    Voglio spiegarvi adesso perchè non ho fatto il login con il file originario del phpBB.
    Se voi inviereste il form a forum/login.php ottereste una pagina che vi dice: Benvenuto al forum xxx, oppure User o password errata. In entrambi i casi il redirect vi spedirebbe in una pagina del forum stesso(index.php per il primo caso, login.php nell'altro), che a mio modestissimo parere è una cosa molto sgradevole poichè l'utente inesperto dovrebbe cliccare il tasto INDIETRO del suo browser ochissà chè :rollo: .

    La pagina che che ho modificato io agisce in vari casi:
    -> se l'user e la pass è giusta si collega a ../index.php che sarebbe www.miosito.it/
    -> se l'user è giusto e la pass sbagliata si presenta una facciata del phpBB che vi dice "user o pass errati" e il redirect va a finire sempre a www.miosito.it/
    -> se l'user è sbagliato compare una schermata bianca con scritto CIAO HAI SBAGLIATO DATI, frase da personalizzare con un eventuale modifica al file page/login.php.

    PS: notare che le cartelle forum/ o page/ possono essere aggirate a piacimento modificando una riga nelle 2 pagine, quindi se avete una struttura diversa basta solo cambiare le prime la path nelle prime righe di login.php e index.php

    Tutto finito ! Spero di essere stato utile a qualche persona
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  2. #2
    Bellina, magari aggiungi come reperire informazioni sul forum da mostrare nel proprio sito, tipo utenti on-line nel forum, iscritti, ultima visita o altro, poi l'ideale sarebbe utilizzare sempre phpBB per mettere i dati nel sito ... tipo:

    utenti on-line: 12
    nel forum: 8
    nel sito: 4

    o cose simili
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Originariamente inviato da andr3a
    Bellina, magari aggiungi come reperire informazioni sul forum da mostrare nel proprio sito, tipo utenti on-line nel forum, iscritti, ultima visita o altro, poi l'ideale sarebbe utilizzare sempre phpBB per mettere i dati nel sito ... tipo:

    utenti on-line: 12
    nel forum: 8
    nel sito: 4

    o cose simili
    grazie andrea
    si non sarebbe una brutta idea è che io avevo solo studiato la struttura per il log-in. Appena ho un minuto di tempo libero magari provo a vedere la struttura degli utenti on-line, ultimo utente registrato ecc.
    Ciauz
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  4. #4
    ma te possinoo.. c'ho passtao una serata a studiarmi il forum.. avevo tirato fuori più o meno queste cose.. faccio una ricerca per cercare un mio vechcio thread e dare queste indicazioni.. e trovo sta pillola...

    ********************************************

    già che ci sono aggiungo qualcosa:

    innanzitutto avvii la sesione del forum ma non dici come riconoscere se l'utente è già loggato o meno... basta controllare

    $userdata['session_logged_in']

    oppure smeplicemente l'user id dell'utente

    $userdata['session_user_id']

    ---------

    cambiando discorso una piccola avvertenza.. sono andato a vedere che fa il common.php.. e oltre ad avviare il "motore" delle sessioni dei template etc etc fa alcuni controlli tra cui il seguente:
    Codice PHP:
    //
    // Show 'Board is disabled' message if needed.
    //
    if( $board_config['board_disable'] && !defined("IN_ADMIN") && !defined("IN_LOGIN"))
    {
        
    message_die(GENERAL_MESSAGE'Board_disable''Information');

    Ovvero controlla se la board è stata disabilitata da amministrazione (ad esempio per manutenzione).. il problema qual è.. che includendo questo file in tutto il vostro sito (come sarebbe logico fare per avere le sessioni del forum su tutto il sito) se disabilitate la board il messaggio relativo appare su tutto il sito.. in pratica disabilitate tutto il sito.

    una semplice soluzione (non ancora testata) dovrebbe essere la seguente:

    a inizio pagina quando scrivete

    define('IN_PHPBB', true);

    aggiungete sotto
    define('IN_SITE', true);

    e poi editate il common.php cambiando la condizione:
    if( $board_config['board_disable'] && !defined("IN_ADMIN") && !defined("IN_LOGIN") && !defined("IN_SITE"))

    in questo modo il messaggio non verrà mostrato navigando le pagine del sito.
    Va detto cmq che se avete disabilitato la board per la manutenzione.. e il sito resta abilitato.. dovete stare attenti a che manutenzione fate.. se dovete lavorare pesantemente su qualche tabella del database condivisa dal sito (già con questo poco codice coinvolgete la tabella sessione quella user).. forse conviene disabilitare anche il sito onde evitare problemi.

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

    altra cosa:
    voi siete abituati a vedere da amministrazione o dall'apposita pagina quali utenti sono on-line ed in che area sono attivi.. adesso.. l'area è identificata da una serie di costanti che vengono salvate poi nella tabella delle sessioni... le costanti sono così definite nel constats.php:

    // Page numbers for session handling
    define('PAGE_INDEX', 0);
    define('PAGE_LOGIN', -1);
    define('PAGE_SEARCH', -2);
    define('PAGE_REGISTER', -3);
    define('PAGE_PROFILE', -4);
    define('PAGE_VIEWONLINE', -6);
    define('PAGE_VIEWMEMBERS', -7);
    define('PAGE_FAQ', -8);
    define('PAGE_POSTING', -9);
    define('PAGE_PRIVMSGS', -10);
    define('PAGE_GROUPCP', -11);
    define('PAGE_TOPIC_OFFSET', 5000);

    con il codice proposto da nix che avremmo.. che un utente risulterà nell'index del forum anche se in realtà naviga sul sito....

    allora possiamo definire di seguito a queste costanti, nostre personali costanti ed usarle ogni volta che avviamo la sessione... ad esempio definiamo:

    define('SITE_INDEX', -12);

    e nell'index del sito chiamiamo la funzione che gestisce le sessioni passandogli questa costante:

    $userdata = session_pagestart($user_ip, SITE_INDEX);

    definendo + costanti possiamo distinguere anche diverse aree del sito ^_^

    chiaramente leggendo gli $userdata['session_page'] di tutte le sessioni presenti nella tabella session possiamo faci una pagina wievon-line personalizzata da mettere sul sito.. magari prendendo in considerazione solo chi sta in pagine <-11...ovvero solo in pagine del sito (se abbiamo definito le costanti continuando la serie negativa) ^_^


    ********************************

    e con questo ho aggiunto quel che avveo da aggiungere ^_^
    spero di essermi spiegato su tutto.. continuo a studiare il forum.. ormai ci ho familiarizzato abbastanza.. tra un po' comincio pure a moddarlo ^__^

    adesso veniamo alle cose che mi sono ancora poco chiare e che nix o altri possono darmi una mano a capire:

    non ho studiato bene il sistema di sessioni del phpbb.. quello che vorrei capire è se posso sfruttare la sessione del forum come normali sessioni del sito.. ovvero memorizzarvi miei dati in modo facile.
    Se questo non fosse possibile avevo pensato di fare una sorta di collage tra sesioni del forum e sessioni del sito... vedo che nix ha messo un session_start() nel suo codice.. pensavo di farlo anche io.. e avere una sessione integrata con il forum ed una solo per il sito in cui memorizzare cose che al forum non interessano... il problema è che passando un attimo sul forum durante la navigazione del sito si perderebbe la sessione del sito... mi chiedevo se era possibile in qualche modo salvare un handler della sessione sito nella sessione forum e riaprire la sessione sito una volta tornati sul sito.. vabbè.. me la studio meglio magari vengo a capo di qualcosa ^_^


  5. #5
    nix... sul sito che hai linkato tu leggo:

    Although not required, it is highly recommended to append_sid() to all links in the pages. It is required that you append_sid() when linking back to the phpBB board itself. Using Append_sid()

    quindi aggiungiamo che è smepre meglio usare la funzione Append_sid() quando linkiamo qualcosa [all'interno del sito e sopratutto del forum)...

    ^_^


  6. #6
    Originariamente inviato da andr3a
    Bellina, magari aggiungi come reperire informazioni sul forum da mostrare nel proprio sito, tipo utenti on-line nel forum, iscritti, ultima visita o altro, poi l'ideale sarebbe utilizzare sempre phpBB per mettere i dati nel sito ... tipo:

    utenti on-line: 12
    nel forum: 8
    nel sito: 4

    o cose simili
    per sapere quanti utenti sono on-line complessivamente basta interrogare il db [meglio se lo si fa usando il layer di astrazione del db del forum] per vedere quante sessioni sono attive da tot minuti.. e per differenziare quelli di forum e sito se si sono definite delle costanti come dicevo prima basta vedere quante sono >= -11 (forum) e quante < -11 (sito.. se si è seguita la mia convenzione)

    dovrebbe essere una cosa tipo:

    $sql = "SELECT * FROM ". SESSIONS_TABLE ." WHERE `session_time` >=". (time()-300);
    $result = $db->sql_query($sql);
    $dati = $db->sql_fetchrow($result);

    non so se funge.. scritta all'istante

    tra l'altro non so se ivece di 300 (5 minuti) c'è un parametro nella tabella config che indica quanto tempo usare per considerare un utente ancor aon-line.. se c'è il parametro conviene leggere quello..

    tutti i cmapi della tabella config si trovano nell'array $board_config... $board_config['nomecampo']


    altra cosa utile da sapere è il livello di chi naviga... se è amministratore.. registrato.. in attesa di attivazione... e lo leggete da $userdata['user_level']... 1 è l'admin.. gli altri non ricordo..



    ora vado a letto domani continuo.. ci sto prendendo gustissimo


  7. #7
    nix ti prego damme 'na mano che sclero..

    pe ril login ho risolto (in modo per ora non elegantissimo) il problema del redirect.. ho fatto una pagina chiamata my_login.php (che chiamo solo dal sito.. nel forum può restare l'originale ^_^) iin cui ho modificato un po' il codice di login... ho modificato la redirect() facendo una my_redirect() e chiamo quella passandogli come url il referer.. se c'è ^_^

    Codice PHP:
    //funzione redirect personale da sostituire alla redirect originale per evitare la costruzione automatica dell'indirizzo (che usa l'indirizzo base del forum)
    function my_redirect($url)
    {
        global 
    $db;

        if (!empty(
    $db))
        {
            
    $db->sql_close();
        }

        
    // Behave as per HTTP/1.1 spec for others
        
    header('Location: '$url);
        exit;
    }

    //memorizzo la pagina di provenienza
    $from = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : 'index.php'
    in pratica ho editato tutti i redirect facendoli tipo questo:
    my_redirect(append_sid($from, true));

    funziona bene.. mi rimanda smepre indietro alla pagina da cui mi sono loggato.. salvo in caso di errore di password.. vabbè.. era giusto per rattoppare.. ho troppe cose a cui pensare per scervellarmi su questo.

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

    Più che altro il problema è quello della registrazione... vorrei registrare alcuni dati aggiuntivi dell'utente... e pensavo di farmi una tabella del db legata alla tabella users dall'id utente.. e fin qui ok.. il punto è che nno ho proprio voglia di modificare la pagina di registrazione.. almeno per ora... quindi pensavo d far registrare gli utenti tramite la pagina del forum e oi casomai dargli un'altra pagina da cui aggiungere questi dati al proprio profilo.. no è il massimo però ^_^

    Se tu o altri avete voglia di smanettare con la pagina di registrazione mi fareste un gran piacere

  8. #8
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Originariamente inviato da }gu|do[z]{®©
    ma te possinoo.. c'ho passtao una serata a studiarmi il forum.. avevo tirato fuori più o meno queste cose.. faccio una ricerca per cercare un mio vechcio thread e dare queste indicazioni.. e trovo sta pillola...
    è la stessa cosa che ho fatto anch'io. Ho perso un'intera sera dalle 8 all'1 per far quella pagina e capire un po la struttura

    Originariamente inviato da }gu|do[z]{®©
    innanzitutto avvii la sesione del forum ma non dici come riconoscere se l'utente è già loggato o meno... basta controllare
    hai completamente ragione. Mi sono dimenticato della verifica della sessione . Nel sito che avevo fatto l'avevo creata
    Grazie per averlo fatto notare

    Originariamente inviato da }gu|do[z]{®©
    non ho studiato bene il sistema di sessioni del phpbb.. quello che vorrei capire è se posso sfruttare la sessione del forum come normali sessioni del sito.. ovvero memorizzarvi miei dati in modo facile.
    Se questo non fosse possibile avevo pensato di fare una sorta di collage tra sesioni del forum e sessioni del sito... vedo che nix ha messo un session_start() nel suo codice.. pensavo di farlo anche io.. e avere una sessione integrata con il forum ed una solo per il sito in cui memorizzare cose che al forum non interessano... il problema è che passando un attimo sul forum durante la navigazione del sito si perderebbe la sessione del sito... mi chiedevo se era possibile in qualche modo salvare un handler della sessione sito nella sessione forum e riaprire la sessione sito una volta tornati sul sito.. vabbè.. me la studio meglio magari vengo a capo di qualcosa ^_^
    e qui ti voglio. Non è una cosa da poco
    Non saprei a iutarti anche perchè non è che mi fosse proprio tutto chiaro il phpBB :rollo:
    ma questo punto non mi è chiaro
    "il problema è che passando un attimo sul forum durante la navigazione del sito si perderebbe la sessione del sito"
    Perchè ? Se tu accedi al forum con la stessa finestra non perdi niente. Tu hai fatto il caso di accedere al forum con un _blank giusto ?


    Originariamente inviato da }gu|do[z]{®©
    Più che altro il problema è quello della registrazione... vorrei registrare alcuni dati aggiuntivi dell'utente... e pensavo di farmi una tabella del db legata alla tabella users dall'id utente.. e fin qui ok.. il punto è che nno ho proprio voglia di modificare la pagina di registrazione.. almeno per ora... quindi pensavo d far registrare gli utenti tramite la pagina del forum e oi casomai dargli un'altra pagina da cui aggiungere questi dati al proprio profilo.. no è il massimo però ^_^

    Se tu o altri avete voglia di smanettare con la pagina di registrazione mi fareste un gran piacere
    cazzone
    a questo punto le pagine diventano 2 ^_^ una che aggiunge gli input nella registrazione e una che verifica prima e salva dopo il form nel db.
    Non è male l'idea di legare le tabelle...niente male solo che bisogna allora creare una tabella dal nulla e studiarsi un po la struttura della tabella del profilo.
    Una cosa molto furba e molto veloce sarebbe creare un link a una pop-up nella pagina del profilo (lavoro praticamente 0) però la scomodita dal punto di vista dell'utente sarebbe inaudita

    mhhhh.....vediamo.....non saprei.....aspetta che ci penso su e ti faccio sapere....
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  9. #9
    Originariamente inviato da Nix82
    cazzone
    a questo punto le pagine diventano 2 ^_^ una che aggiunge gli input nella registrazione e una che verifica prima e salva dopo il form nel db.
    ????

    che vuoi dire?

    cmq pe ril resto erano solo supposizioni.. appena ho uno straccio di grafica comincio a montare assieme le cose.. ^_^

  10. #10
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Originariamente inviato da }gu|do[z]{®©
    ????

    che vuoi dire?
    no era solo una battuta stupida

    praticamente volevo dire che per aggiugere dati come vorresti fare tu dovrei aggiungere degli input al forum della pagina registrazione giusto ? Ma è un lavoretto di 5 minuti....

    Il lavoro un po più "chiamiamolo complesso" è quello di ricavare i dati inviati e inserirli nella tabella che hai creato e che dopo andrà a interagire con la tabella degli utenti. Si può dire che è una integrazione del profilo....che non sarebbe male su un phpBB.

    Dai che se ho una mezz'oretta stasera mi metto li a ricontrollare...
    Che dati per esempio vorresti introdurre ??
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.