Visualizzazione risultati 1 fino 10 di 10

Discussione: [PHPBB] Login esterno, errore nel config.php

  1. #1
    L'avatar di toradora
    toradora non è connesso Neofita
    Data registrazione
    24-01-2011
    Messaggi
    20

    Predefinito [PHPBB] Login esterno, errore nel config.php

    Salve a tutti, sto sviluppando un login esterno a PHPBB, quindi ho creato un file login.php, un index.php, un ucp.phpe un config.php.
    Quando effettuo il login, mi risulta quest' errore.
    Fatal error: Call to a member function session_begin() on a non-object in /membri/toradora/gdr/config.php on line 14
    Chi potrebbe aiutarmi?

    Questi sono i codici.
    config.php
    Codice PHP:
    <?php
    /** Inizializzazione sessione PHPBB3 */
    define('IN_PHPBB', true);
    define('ROOT_PATH', "/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 */
    ?>
    ucp.php
    Codice 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;
    }
    ?>

  2. #2
    Guest

    Predefinito

    In ucp.php devi include il file common.php; sostituisci l'include del file config.php con:
    Codice:
    include($phpbb_root_path . 'common.' . $phpEx);
    Ti consiglio, poi, di utilizzare la funzione request_var() o comunque di fare un minimo di controlli sui dati passati via $_POST per il login.

    Se vuoi, invece, evitare più pagine esterne, basta che esegui il form alla pagina del login di phpBB3, poi nelle altre pagine personali, se vuoi "integrarle" a phpBB, basta che aggiungi all'inizio di ogni file, le seguenti righe:
    Codice PHP:
    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include(
    $phpbb_root_path . 'common.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();
    e potrai usare le sessioni di phpBB.


  3. #3
    L'avatar di toradora
    toradora non è connesso Neofita
    Data registrazione
    24-01-2011
    Messaggi
    20

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    In ucp.php devi include il file common.php; sostituisci l'include del file config.php con:
    Codice:
    include($phpbb_root_path . 'common.' . $phpEx);
    Ti consiglio, poi, di utilizzare la funzione request_var() o comunque di fare un minimo di controlli sui dati passati via $_POST per il login.

    Se vuoi, invece, evitare più pagine esterne, basta che esegui il form alla pagina del login di phpBB3, poi nelle altre pagine personali, se vuoi "integrarle" a phpBB, basta che aggiungi all'inizio di ogni file, le seguenti righe:
    Codice PHP:
    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include(
    $phpbb_root_path . 'common.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();
    e potrai usare le sessioni di phpBB.

    Grazie mille per la risposta, ho provato a fare quanto scritto sopra, ma ottengo questi errori.

    ucp.php?mode=login
    Codice:
    Fatal error: Call to a member function login() on a non-object in /membri/toradora/gdr/ucp.php on line 15
    la riga incriminata sembra essere
    Codice PHP:
    $auth->login($username, $password, $remember, 1, 0); //login
    main.php (pagina "intergrata")
    Codice:
    Fatal error: Call to a member function session_begin() on a non-object in /membri/toradora/gdr/main.php on line 9
    e qua la riga incriminata a quanto pare è:
    Codice PHP:
    $user->session_begin();

  4. #4
    Guest

    Predefinito

    Ma hai sovrascritto tutto con la seconda parte di codice o hai modificato solo l'include?

    All'inizio di ucp.php e main.php aggiungi la stringa error_reporting(E_ALL); in modo da mostrare TUTTI gli errori della pagina perché mi sembra strano, credo ci sia un errore con l'include del file common.

    Per farti un esempio, ecco la pagina ucp.php come dovrebbe essere per essere "integrata" a phpBB:
    Codice PHP:
    <?php

    define
    ('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include(
    $phpbb_root_path . 'common.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    $mode = request_var('mode', '');

    switch (
    $mode)
    {
    case
    'login':
    $username = utf8_normalize_nfc(request_var('username', '', true));
    $password = request_var('password', '', true);
    $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, true, false); //login. Andrebbero messe però delle condizioni nel caso il login sia true o false.
    break;

    case
    'logout':
    // Ricorda che sarebbe bene usare la sessione (parametro sid=) per poter fare il logout, infatti phpBB ne forza l'utilizzo
    $user->session_kill(); //Ditrugge le vecchie sessioni
    $user->session_begin();
    break;
    }

    header('Location: index.php'); //redirect verso l'homepage. L'ho inserito qui perché IN OGNI CASO viene fatto a questa pagina.
    exit;

    ?>
    Tutto questo codice, però, come scritto, è già in phpBB e basterebbe "puntare" i form a queste, proprio per evitare di avere altre pagine uguali e soprattutto rischiare di averle bacate.


  5. #5
    L'avatar di toradora
    toradora non è connesso Neofita
    Data registrazione
    24-01-2011
    Messaggi
    20

    Predefinito

    Grazie mille, adesso funziona :P ho corretto anche il percorso della root di phpbb.
    Però non ho capito ancora come utilizzare la funzione request_var(), ho cercato varie guide ma sono del tutto in inglese (ç_ç non ci capisco nulla).
    E per estrarre i dati dal database faccio i soliti "SELECT" o PHPBB ha già qualche funzione?
    (xD scusa per le tante domande, ma ne approfitto visto che finalmente qualcuno ne capisce.)

  6. #6
    Guest

    Predefinito

    request_var() è una funzione nativa di phpBB che permette di prendere i dati da $_GET (query string), $_POST (form) e nel caso $_COOKIE. Ci sono 4 valori da passare alla funzione:
    Codice PHP:
    request_var('nome_chiave_array', 'valore_default', (bool) 'supporto_caratteri_speciali_utf8', 'perndi_da_$_COOKIE')
    - Il primo valore è la chiave di $_GET/$_POST;
    - Il secondo è il valore di default assegnato alla variabile e ne assegnerà anche il tipo (string, bool, float, int, array);
    - Il terzo è il supporto per i caratteri speciali (nel caso sia settato su true, bisognerà inserire request_var() dentro utf8_normalize_nfc());
    - Il quarto ed ultimo valore dice alla funzione se prendere o meno il valore da $_COOKIE, lasciando stare $_GET/$_POST.

    Mentre per le query, puoi usare le funzioni di phpBB sempre (ti faccio uno stupido esempio):
    Codice PHP:
    $sql = 'SELECT campo
    FROM '
    . *_TABLE;
    $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result);
    mentre per i cicli (estrazione di più record):

    Codice PHP:
    $sql = 'SELECT campo_1, campo_2
    FROM '
    . *_TABLE;
    $result = $db->sql_query($sql);
    while (
    $row = $db->sql_fetchrow($result))
    {
    echo
    $row['campo_1'];
    echo
    $row['campo_2'];
    }
    Ovviamente c'è molto più da dire e soprattutto più funzionalità, ma credo che smanettandoci un po' capisca bene come funzioni phpBB, perché è davvero semplicissimo.


  7. #7
    L'avatar di toradora
    toradora non è connesso Neofita
    Data registrazione
    24-01-2011
    Messaggi
    20

    Predefinito

    Biccheddu, non so come ringraziarti.
    Ho provato anche a vedere un pò le pagine esistenti per vedere la struttura, gli esempi da te postati, e approfondito sul Wiki PhpBB.
    Direi che è molto più semplice di quel mi immaginavo.
    :P Speriamo riesca nel mio intento.

  8. #8
    Guest

    Predefinito

    Ti dico solamente che io ci ho fatto portali interi basati su phpBB dove il forum è la cosa più piccola.

    In ogni caso non devi ringraziarmi, è stato un piacere! Tornerà utile a chi avrà i tuoi stessi problemi.


  9. #9
    Guest

    Predefinito

    Ciao qualcuno mi puo dare una mano perfavore

  10. #10
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Starmillennium2004: questa è una discussione di cinque anni fa, come da regolamento non riesumare vecchie discussioni.
    Apri una nuova discussione descrivendo dettagliatamente il tuo problema.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •