• User Attivo

    [Tutorial] Intergrazione login con PHPBB3.

    Vista la confusione dei post in inglese su questo argomento mi ero ripromesso di fare un breve tutorial su come si implementare il sistema di login del noto forum PHPBB3 con il vostro sito personale.

    Iniziamo subito creando il file config.php che dovrà essere incluso in ogni pagina che necessità di un controllo sull'identità dell'utente.
    config.php
    [php]
    <?php
    /** Inizializzazione sessione PHPBB3 */
    define('IN_PHPBB', true);
    define('ROOT_PATH', "cartella/del/forum"); //Scrivete l'indirizzo della cartella in cui è contenuto il forum

    if (!defined('IN_PHPBB') || !defined('ROOT_PATH')) {
        exit();
    }
    
    $phpEx = "php";
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : ROOT_PATH . '/';
    include($phpbb_root_path . 'common.' . $phpEx);
    
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();
    

    /* Fine della gestione sessioni */
    ?>
    [/php]
    A questo punto abbiamo accesso ai dati dell'utente, per cui, per controllare se l'utente è loggato o no ci basta un semplice if:
    [php]
    if ($user->data['user_id'] == ANONYMOUS) //Se NON è loggato...
    {
    echo "Devi effettuare il login!";
    }
    else // Invece se è loggato
    {
    echo "Benvenuto ".$user->data['username']."!" ;
    }
    [/php]
    Creiamoci quindi la pagina con il form in html per effettuare il login.
    login.php
    [html]
    <form action="ucp.php?mode=login" method="post">
    <label>Username</label><br />
    <input type="text" name="username" value="" /><br /><br />
    <label>Password</label><br />
    <input type="password" name="password" /><br /><br />
    <label>Ricordami:</label>
    <input type="checkbox" id="autologin" name="autologin" /><br /><br />
    <input type="submit" value="Invia" />
    </form>
    [/html]
    Abbiamo indirizzato l'action del form alla pagina ucp.php che contiene il codice php per il login e il logout dell'utente. Vediamo come deve essere fatta.
    ucp.php
    [php]
    <?php
    if (!isset($_GET['mode']))
    header("Location: index.php");
    else
    $mode = $_GET['mode'];

    include_once 'config.php'; //Inclusione del file config.php

    switch ($mode)
    {
    case "login": //Codice per effettuare il login
    $username = $_POST['username'];
    $password = $_POST['password'];
    $remember = (isset($_POST['autologin'])) ? true : false; //Se è stata selezionata la casella dall'autologin allora $remembar è true altrimenti è false e non verrà considerato nel login
    $auth->login($username, $password, $remember, 1, 0); //login
    header("Location: index.php"); //redirect verso l'homepage
    break;
    case "logout": //Codice per effettuare il logout
    $user->session_kill(); //Ditrugge le vecchie sessioni
    $user->session_begin();
    header("Location: index.php"); //redirect verso l'homepage
    break;
    }
    ?>
    [/php]
    dal codice della pagina ucp.php si può dedurre infine che per effettuare il logut dell'utente basta creare un link così:
    [html]<a href="ucp.php?mode=logout">LOGOUT</a>[/html]
    Tutto qui 🙂
    Spero di essere stato utile.. ciao!


  • Consiglio Direttivo

    Ciao Inverter. 🙂

    Grazie infinite del Tutorial, in molti lo han cercato e finalmente grazie a te è disponibile. 🙂

    Sposto in area phpBB 3, che è più consona, ma la linko anche dal thread Risorse utili della sezione PHP-MySQL dato il notevole interesse di molti. 😉


  • User

    Ciao Inverter,
    ho utilizzato la tua guida per integrare la login al mio sito...chiarissima ed utilissima ma...mi si verifica il seguente errore:

    [phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at C:/xampp/htdocs/miosito/config.php:18)

    [phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at C:/xampp/htdocs/miosito/config.php:18)

    [phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at C:/xampp/htdocs/miosito/config.php:18)

    Da cosa è dipeso?


  • User

    Grazie Inverter,
    era proprio quello che stavo cercando. 😉


  • User Newbie

    Ciao, non ho capito bene dove inserire

    php

    if ($user->data['user_id'] == ANONYMOUS) //Se NON è loggato...
    {
    echo "Devi effettuare il login!";
    }
    else // Invece se è loggato
    {
    echo "Benvenuto ".$user->data['username']."!" ;
    }

    e come implementare il logout, bisogna implementare un form?
    .


  • User Newbie

    Come si può inserire un errore se i dati sono sbagliati?
    ho provato ad inserire un DIE in questa riga ma non va..

    [PHP]$auth->login($username, $password, $remember, 1, 0); //login[/PHP]

    Grazie 🙂