Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    login con phpBB non funzionante

    ho la pagina per il login in phpBB..
    Codice PHP:
    define('ZONE','1',true);
    class 
    page_login
    {
        var 
    $variable = array();
        function 
    page(){
            global 
    $config$db$cache$smarty;
            require_once(
    $config->sitedir.'/includes/php/captcha.class.php');
            
    $captcha=new captcha();
            
    $action = isset($_GET['action']) ? $_GET['action'] : false;
            switch(
    $action)
            {
                
                case 
    'login':
                        
    // Inclusioni
                        
    define('IN_PHPBB'true);
                        
    $phpbb_root_path $config->forumdir.'/';
                        include(
    $phpbb_root_path 'extension.inc');
                        include(
    $phpbb_root_path 'includes/constants.'.$phpEx);
                        include(
    $phpbb_root_path 'includes/sessions.'.$phpEx);
                        include(
    $phpbb_root_path 'includes/functions.'.$phpEx);

                        
    // Inizio sessione
                        
    $userdata session_pagestart($user_ipPAGE_LOGIN);
                        
    init_userprefs($userdata);
                        
                        
    // Session ID
                        
    if (!empty($HTTP_POST_VARS['sid']) || !empty($HTTP_GET_VARS['sid']))
                        {
                        
                        
    $sid = (!empty($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : $HTTP_GET_VARS['sid'];
                        
                        }
                        
                        else
                        
                        {
                        
    $sid '';
                        }
                        
                        if( isset(
    $HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']))
                        {
                            
    $username = isset($HTTP_POST_VARS['username']) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
                            
    $password = isset($HTTP_POST_VARS['password']) ? $HTTP_POST_VARS['password'] : '';
                                
                            
    // Formulazione query
                            
    $sql "SELECT *
                            FROM " 
    $config->prefix "users
                            WHERE username = '"
    .$username."'";
                            
                            
    // Esecuzione query
                            
    if ( !($result $db->sql_query($sql)) )
                            {
                                
    /* PARTE IN CUI NON E' POSSIBILE ESEGUIRE LA QUERY */
                                
    die("Impossibile eseguire la query sul database");
                            }
                            
                            
    // Ricerca del Username nel database
                            
    if( $row $db->sql_fetchrow($result) ) {
                            
                            
    // Verifica dell'esattezza della password
                                
    if( md5($password) == $row['user_password'] && $row['user_active'] ) {
                                    
    $autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE 0;
                                    
                                    
    $admin = (isset($HTTP_POST_VARS['admin'])) ? 0;
                                    
    $session_id session_begin($row['user_id'], $user_ipPAGE_INDEXFALSE$autologin$admin);
                                    
                                    if( 
    $session_id ) {
                                    
    /* PARTE IN CUI IL LOGIN E' STATO EFFETTUATO CON SUCCESSO */
                                    
    echo "Log in avvenuto correttamente";
                                    } else {
                                            
    /* PARTE IN CUI LA SESSIONE NON E' COMINCIATA PER VARI MOTIVI */
                                    
    echo "Errore: non riesco a cominciare la sessione";
                                    }
                                } else {
                                
    /* PARTE IN CUI LA PASSWORD E' SBAGLIATA */
                                
    echo "La tua password è sbagliata";
                                }
                            } else {
                                
    /* PARTE IN CUI LO USERNAME NON è PRESENTE NEL DATABASE */
                                
    echo "Non riesco a trovare il nick nel database";
                            }
                            
                            
    // Script per il logout    
                        
    }
                    
                break;
                case 
    'logout':
                    if(isset(
    $HTTP_POST_VARS['logout']) || isset($HTTP_GET_VARS['logout']))
                    {
                        if( ( isset(
    $HTTP_GET_VARS['logout']) || isset($HTTP_POST_VARS['logout']) ) && $userdata['session_logged_in'] )
                        {
                    
                            if( 
    $userdata['session_logged_in'] )
                            {
                                
    session_end($userdata['session_id'], $userdata['user_id']);
                                
    /* PARTE IN CUI IL LOGOUT E' STATO ESEGUITO CON SUCCESSO */
                                
    $smarty->assign("message",1);
                            }
                            else
                            {
                                
    /* PARTE IN CUI IL LOGOUT NON E' STATO ESEGUITO CON SUCCESSO PERCHE' LA SESSIONE NON ERA STATA COMINCIATA PRECEDENTEMENTE */
                                
    $smarty->assign("message""La tua sessione non è cominciata quindi non puoi eseguire il logout");
                            }
                            
                            
    // Condizioni che non soddisfa le altre
                        
    }
                        else
                        {
                            
    /* PARTE IN CUI I DATI SONO STATI TRAFERITI MALE */
                            
    $smarty->assign("message""Errore di passaggio dati");
                        }
                        
                        
    // Condizione che non porta nessuna variale con se! Questo è il caso di un link del tipo [url="login.php"]Esegui log in[/url]
                    
    }
                    else
                    {
                        if( 
    $userdata['session_logged_in'] )
                        {
                            
    /* PARTE IN CUI NON VENGONO TRASFERITI I DATI. L'UTENTE ACCEDE ALLA PAGINA PER IL LOGIN MA IN REALTA' SI E' GIA' LOGGATO */
                            
    echo "Attenzione: sei già riconosciuto come utente registrato";
                        }
                        else
                        {
                            
    /* PARTE IN CUI NON VENGONO TRASFERITI I DATI. IN QUESTO SPAZIO SI POTREBBE METTERE UN'ALTRO FORM PE RIL LOGIN */
                            
    echo "Non hai eseguito il log in";
                        }
                    
                    }
                        
                    
    $smarty->assign("message""
    <a href=\"index.
    $phpEx\">Clicca qui</a> per andare alla pagina principale");
                    
    $db->sql_query('DELETE FROM '.$config->prefix.'useron WHERE sessionid = "'.$_SESSION['log']['sid'].'"');
                    
    session_unset();
                    
    session_destroy();
                    
    setcookie ('log'''time()-5184000,'/'); 
                    if(!
    session_is_registered('log')&&(!isset($_COOKIE['log'])))
                        
    $smarty->assign('message',1);
                break;
                case 
    'myprofile':
                    
    $sql "SELECT email FROM ".$config->prefix."user
                        WHERE username = '"
    .$_SESSION['log']['username']."'";
                    
    $res $db->sql_query($sql);
                    
    $query $db->sql_fetchrow($res);
                    
    $user['username'] = $_SESSION['log']['username'];
                    
    $user['email'] = $query['email'];
                    foreach(
    $user as $key=>$value){
                        
    $smarty->assign($key,$value);
                    }
                break;
            }
            foreach(
    $this->variable as $name => $value){
                
    $smarty->assign($name$value);
            }
            
    $smarty->display('index.body.tpl');
            return;
        }

    vorrei sapere perchè mi dà questo errore, ed eventualmente correggerlo.
    codice:
    Fatal error: SQL ERROR [ mysql ]
    
    Table 'file.users' doesn't exist [1146] in C:\Programmi\PAMPA\PAMPA\apache\htdocs\php3\includes\php\db\dbal.php on line 358
    a prima vista sembrerebbe che non aggiunge il prefisso(phpbb_), ma anche se lo aggiungo a mano, non lo trova... che devo fare?
    Premetto che come phpBB uso la 2.0.21
    e come layer di astrazione, interno al sito(vedi $db), quello di phpBB3.
    nelle altre pagine funziona tutto, mentre nella login no.
    che devo fare???? :master:

  2. #2

  3. #3
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  4. #4
    rigiro la domanda...
    come si fa a fare in modo che questa funzione non cancelli il vecchio cookie, e modifichi i dati di tabella già esistenti, inserendone uno con i valori ANONYMUS???
    Codice PHP:
    function session_pagestart($user_ip$thispage_id)
        {
            global 
    $db$lang$board_config;
            global 
    $SID;
        
            
    $cookiename $board_config['cookie_name'];
            
    $cookiepath $board_config['cookie_path'];
            
    $cookiedomain $board_config['cookie_domain'];
            
    $cookiesecure $board_config['cookie_secure'];
        
            
    $current_time time();
            unset(
    $userdata);
        
            if ( isset(
    $_COOKIE[$cookiename '_sid']) || isset($_COOKIE[$cookiename '_data']) )
            {
                
    $sessiondata = isset( $_COOKIE[$cookiename '_data'] ) ? unserialize(stripslashes($_COOKIE[$cookiename '_data'])) : array();
                
    $session_id = isset( $_COOKIE[$cookiename '_sid'] ) ? $_COOKIE[$cookiename '_sid'] : '';
                
    $sessionmethod SESSION_METHOD_COOKIE;
            }
            else
            {
                
    $sessiondata = array();
                
    $session_id = ( isset($_GET['sid']) ) ? $_GET['sid'] : '';
                
    $sessionmethod SESSION_METHOD_GET;
            }
        
            
    // 
            
    if (!preg_match('/^[A-Za-z0-9]*$/'$session_id))
            {
                
    $session_id '';
            }
        
            
    $thispage_id = (int) $thispage_id;
        
            
    //
            // Does a session exist?
            //
            
    if ( !empty($session_id) )
            {
                
    //
                // session_id exists so go ahead and attempt to grab all
                // data in preparation
                //
                
    $sql "SELECT u.*, s.*
                    FROM " 
    SESSIONS_TABLE " s, " USERS_TABLE " u
                    WHERE s.session_id = '
    $session_id'
                        AND u.user_id = s.session_user_id"
    ;
                if ( !(
    $result $db->sql_query($sql)) )
                {
                    
    $db->sql_error($sql);
                }
        
                
    $userdata $db->sql_fetchrow($result);
        
                
    //
                // Did the session exist in the DB?
                //
                
    if ( isset($userdata['user_id']) )
                {
                    
    //
                    // Do not check IP assuming equivalence, if IPv4 we'll check only first 24
                    // bits ... I've been told (by vHiker) this should alleviate problems with 
                    // load balanced et al proxies while retaining some reliance on IP security.
                    //
                    
    $ip_check_s substr($userdata['session_ip'], 06);
                    
    $ip_check_u substr($user_ip06);
        
                    if (
    $ip_check_s == $ip_check_u)
                    {
                        
    $SID = ($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' $session_id '';
        
                        
    //
                        // Only update session DB a minute or so after last update
                        //
                        
    if ( $current_time $userdata['session_time'] > 60 )
                        {
                            
    // A little trick to reset session_admin on session re-usage
                            
    $update_admin = (!defined('IN_ADMIN') && $current_time $userdata['session_time'] > ($board_config['session_length']+60)) ? ', session_admin = 0' '';
        
                            
    $sql "UPDATE " SESSIONS_TABLE 
                                SET session_time = 
    $current_time, session_page = ".$thispage_id.$update_admin.", user_id = ".$userdata['user_id']."
                                WHERE session_id = '" 
    $userdata['session_id'] . "'";
                            if ( !
    $db->sql_query($sql) )
                            {
                                
    $db->sql_error($sql);
                            }
        
                            if ( 
    $userdata['user_id'] != ANONYMOUS )
                            {
                                
    $sql "UPDATE " USERS_TABLE 
                                    SET user_session_time = 
    $current_time, user_session_page = $thispage_id
                                    WHERE user_id = " 
    $userdata['user_id'];
                                if ( !
    $db->sql_query($sql) )
                                {
                                    
    $db->sql_error($sql);
                                }
                            }
        
                            
    session_clean($userdata['session_id']);
        
                            
    setcookie($cookiename '_data'serialize($sessiondata), $current_time 31536000$cookiepath$cookiedomain$cookiesecure);
                            
    setcookie($cookiename '_sid'$session_id0$cookiepath$cookiedomain$cookiesecure);
                        }
        
                        
    // Add the session_key to the userdata array if it is set
                        
    if ( isset($sessiondata['autologinid']) && $sessiondata['autologinid'] != '' )
                        {
                            
    $userdata['session_key'] = $sessiondata['autologinid'];
                        }
        
                        return 
    $userdata;
                    }
                }
            }
        
            
    //
            // If we reach here then no (valid) session exists. So we'll create a new one,
            // using the cookie user_id if available to pull basic user prefs.
            //
            
    $user_id = ( isset($sessiondata['userid']) ) ? $sessiondata['userid'] : ANONYMOUS;
        
            if ( !(
    $userdata $this->session_begin($user_id$user_ip$thispage_idTRUE)) )
            {
                
    $db->sql_error($sql);
            }
            return 
    $userdata;
        
        } 
    la funzione la richiamo così
    Codice PHP:
    $userdata $session->session_pagestart($user_ip'9'); 
    PROB : al primo refreshdopo l'invio dei dati tutto va bene, quando lo faccio una terza volta, mi cancella il cookie e la sessione

  5. #5

  6. #6
    senza farmi troppi prob a crearmi io la classe, ed usare un forum "vecchio", sto usando la struttura di phpBB 3.0.x mi potreste, spiegare come creare una sessione con tale layer?
    vi prego di aiutarmi.
    PS : so che sono un pò monotono, e trovo mille soluzioni "non funzionanti" a cui rivolgermi... cmq questa mi pare l'unica usabile.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.