Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    [CodeIgniter] Problema con le sessioni

    Sto realizzando un'applicazione con CodeIgniter2, ma ho un serio problema.
    Con Firefox tutto funziona regolarmente, con IE e Chrome non mi funziona la sessione e/o i cookies.

    Il sistema di login mi rimanda sempre alla pagina iniziale mostrandomi la form di login e il menu per i visitatori anonimi, sto leggendo in giro che CI ha problemi su IE e Chrome, ma le soluzioni sono diverse tra loro e nessuna mi ha risolto il problema.

    Qualcuno di voi ha avuto esperienze in tal senso e sa cosa consigliarmi?

  2. #2

    Re: [CodeIgniter] Problema con le sessioni

    Originariamente inviato da Alhazred
    Con Firefox tutto funziona regolarmente, con IE e Chrome non mi funziona la sessione e/o i cookies.
    Da quanto dici desumo che la questione è legata a problemi lato client (quindi i cookie e conseguentemente le sessioni).
    Io inizierei eseguendo come debug la stampa a video sell'array $_COOKIE e vedi se viene correttamente salvato (sul browser) il cookie di sessione (ovviamente prova con diversi browser).
    Codice PHP:
    echo '<pre>';
    print_r($_COOKIE);
    exit; 
    Poi ti faccio una domanda: utilizzi le sessioni classiche native di php (session_start, $_SESSION) oppure il sistema integrato in code igniter di salvataggio delle sessioni su db (Session class code igniter)?
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    L'array $_COOKIE risulta vuoto, l'id di sessione viene rigenerato ad ogni refresh della pagina invece che ogni 5 minuti e la entry per la sessione nel db viene creata, quindi direi proprio che c'è qualche problema coi cookie, ma ho già provato tutte le soluzioni trovate in giro riguardo queso aspetto.

    Stampando
    print_r($this->session->all_userdata())
    ottengo
    Array ( [session_id] => 969d9d1306bcce9727766275d55b2fb3 [ip_address] => 127.0.0.1 [user_agent] => Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) [last_activity] => 1345196493 [user_data] => )

    ma qualsiasi cosa provi a mettere in ['uers_data'] sparisce perché al refresh la sessione non viene riconosciuta e se ne genera una nuova.

    Uso il sistema integrato in CI2 per le sessioni, sto cercando una libreria che faccia uso delle sessioni di PHP, ma l'ho trovata solo per CI 1.5 e precedenti, ho trovato un link per una compatibile con CI2, ma mi viene un messaggio che dice che non sono autorizzato a visualizzare il forum, che è quello ufficiale di CI dove sono registrato e loggato.

  4. #4
    Se i cookie non vengono memorizzati sul browser è inevitabile che le sessioni non funzionano.

    Quindi, io analizzerei anzitutto i browser facendo alcuni test.

    1) Prova ad utilizzare set cookie nativa di php sui diversi browser così vedi se il cookie viene correttamente settato/salvato sul browser: se non viene salvato il problema non deriva da CI ma dal browser.

    Codice PHP:
    <?php
    if( !isset($_COOKIE['test']) ){
    setcookie("test"'my test cookie'time()+3600); 
    // questo mess deve compartirti solo alla prima esecuzione
    echo 'nuovo settaggio cookie'
    }
    // questo deve comparirti sempre
    echo $_COOKIE['test'];
    2) testa se ci sono problemi sui cookie di sessione:
    Codice PHP:
    <?php
    session_start
    ();
    echo 
    session_id(); // aggiornando la pagina deve essere sempre lo stesso
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    1) su tutti i browser appare "my test cookie"
    2) su tutti i browser l'id resta invariato ad ogni refresh

  6. #6
    mmm... passiamo a fare qualche debug su CI... ovviamente vado a tentoni non avendo sottomano il progetto.

    Parto da una domanda deficiente... sei sicuro che non esegui il destroy/garbage delle sessioni? (controlla direttamente nella tabella ci_sessions del db)

    Cmq ultimo consiglio... all'interno del tuo controller di test dopo aver avviato la sessione stampa a video:
    Codice PHP:
    $data_session $this->session->all_userdata();
    echo 
    '<pre>';
    var_dump$data_session );
    // il nome del cookie è quello di default...
    var_dump$_COOKIE['ci_session'] ); 
    ... altrimenti nn saprei dirti. Ovviamente prova con tutti i browser verificando eventuali differenze fra di essi.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Nella tabella che contiene i dati delle sessioni al momento ho una sfilza di 157 record.
    La sessione viene creata e memorizzata nel db, il problema sono i cookie, sono andato a guardare nella cartella dei cookie di IE e la lista di quelli di chrome dalle impostazioni del browser, per entrambi c'è il cookie di test, ma non c'è quello dell'applicazione.

    Le cose sono due, o non viene proprio creato o viene creato e distrutto, ma la parte della distruzione non la faccio io, magari lo riconosce come subito scaduto, ma ho anche provato a mettere la scadenza a diversi intervalli di tempo fino anche a 2 anni, niente da fare.

    Adesso provo a vedere dov'è che imposta il cookie einvece di fargli impostare tutti i dati come dominio, path e compagnia bella, gli faccio mettere i valori di default della funzione setcookie()

  8. #8
    hai verificato i parametri nel config.php (tutti quelli che iniziano con sess_qualcosa)?

    Cmq fammi sapere sono interessato alla tematica.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ecco il mio config.php relativo alle impostazioni di sessione e cookie
    Codice PHP:
    //tutto questo if/else perché inizialmente non funzionavano neanche con Firefox sessioni e cookie
    //avendo sistemato con lui pensavo che questa modifica avrebbe avuto effetto anche sugli
    //altri browser, ma sembra che così non sia
    if(isset($_SERVER['HTTP_HOST']))
    {
        
    $config['base_url'] = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' 'https' 'http';
        
    $config['base_url'] .= '://'$_SERVER['HTTP_HOST'];
        
    $config['base_url'] .= isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != '80' ? ( ':'.$_SERVER['SERVER_PORT'] ) : '';
        
    $config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), ''$_SERVER['SCRIPT_NAME']);
    }
    else
    {
        
    $config['base_url'] = 'http://localhost/';
    }

    $config['sess_cookie_name']    = 'crdsession';
    $config['sess_expiration']        = 7200;
    $config['sess_expire_on_close']    = FALSE;
    $config['sess_encrypt_cookie']    = TRUE;
    $config['sess_use_database']    = TRUE;
    $config['sess_table_name']        = 'crd_sessions';
    $config['sess_match_ip']        = TRUE;
    $config['sess_match_useragent']    = TRUE;
    $config['sess_time_to_update']    = 300;

    $config['cookie_prefix']    = "";
    $base_url_parts parse_url($config['base_url']);
    $config['cookie_domain']    = $base_url_parts['host'];
    $config['cookie_path']        = $base_url_parts['path'];
    unset(
    $base_url_parts);
    $config['cookie_secure']    = FALSE

  10. #10
    ecco... ssl di mezzo. Non sono preparato particolarmente sull'argomento.

    in ogni modo questo hack che hai adottato onestamente non mi piace un gran chè... se lo hai trovato da qualche parte mi lasci il link per favore.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

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.