Visualizzazione risultati 1 fino 3 di 3

Discussione: [php] Sessioni valide nei sotto-domini

  1. #1
    codx non è connesso Neofita
    Data registrazione
    07-09-2012
    Messaggi
    16

    Question [php] Sessioni valide nei sotto-domini

    Ho passato le ultime 2 ore del mio venerdì sera ad impazzire per un problema idiota e la cosa più divertente sta nel fatto che non ho risolto niente...

    Il problema è che sto mettendo su un sito che divido in sottosezioni che ho deciso di indirizzare tramite sottodominio quindi ad esempio ho
    codx.altervista.org
    android.altervista.org
    e voglio tenere il login unico su tutte le macro-sezioni che andrò a creare e con i cookie ho risolto, peccato che le sessioni create in codx.altervista.org non siano visibili in android.codx.altervista.org

    Nulla di quello che ho trovato online e provato finora ha portato un qualche risultato quindi chiedo a voi se avete idea di come risolvere questo problema.
    Mi sembra davvero assurdo dover perdere 2 ore per questo, dovrebbe essere una cosa immediata risolvibile aggiungendo una riga al file .htaccess !


    =============================

    quanto ho provato finora è stato:
    1) inserire questa riga nell'.htaccess (nella root del sito)
    Codice:
    php_value session.cookie_domain codx.altervista.org
    decisamente questa è l'alternativa più piacevole visto che non ho tutta sta voglia di andarmi a ripescare tutti i session_start() in giro per il sito e modificare i parametri a codice
    2) precedere i session_start() relativi all'homepage e allo script di partenza con
    Codice PHP:
    session_name("codx_overall");
    session_set_cookie_params(1440, "/", "codx.altervista.org");
    3) inserire la seguente riga nel codice che effettua il login così che impostasse la variabile di sessione con scope più ampio
    Codice PHP:
    ini_set('session.cookie_domain', 'codx.altervista.org');

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Vedi se questo ti aiuta: PHP Sessions across subdomains

    In particolare
    Codice PHP:
    session_set_cookie_params(1440, '/', '.codx.altervista.org');
    (si, un singolo punto potrebbe fare la differenza)
    Ultima modifica di dreadnaut : 23-02-2013 alle ore 04.08.22

  3. #3
    codx non è connesso Neofita
    Data registrazione
    07-09-2012
    Messaggi
    16

    Thumbs up Soluzione trovata!

    Prima di tutto rispondo a dreadnaut e lo ringrazio per la risposta.
    So che un punto è importante e avevo provato anche in quella variante ma era un gesto dettato dalla disperazione perché (per quanto ne so io) va in contrasto con quello di cui ho bisogno io ossia mettendo il punto davanti al dominio di terzo livello la sessione sarebbe valida solo nei domini di quarto livello o oltre invece io voglio che sia valida anche in quello di terzo, evitandomi così di dover raggiungere il sito necessariamente con il www iniziale.

    Riepilogo il problema.
    Purtroppo tramite .htaccess non sono stato in grado di far funzionare la cosa (può essere che altervista non mi dia privilegi per utilizzare direttive php_value nell'.htaccess?).

    Il codice php
    Codice PHP:
    session_name("codx_overall");
    session_set_cookie_params(1440, "/", "codx.altervista.org");
    session_start();
    invece in sé funzionava, l'errore era mio ed era dovuto a comandi session_start() successivi in altri files inclusi che (probabilmente, non ne sono certo ma a posteriori credo che il motivo sia questo) ricreavano la sessione senza utilizzare i parametri cookie impostati in altri script inclusi.

    La mia soluzione.
    Per risolvere questo problema
    Codice PHP:
    // ho sostituito tutti i comandi
    session_start()
    //con un
    require_once "/absolute/path/to/session_start.php";
    in modo tale che potessi far partire la sessione ovunque fosse necessaria nei vari frammenti di script che possono essere inclusi sia singolarmente (e quindi necessitare del proprio session_start()) o in gruppo (e quindi avere un session start unico in quanto ho usato il comando require_once).
    Infine all'interno del file session_start.php ho scritto quanto segue:
    Codice PHP:
    <?php
    session_name
    ("my_session_name");
    session_set_cookie_params(
    1440, // Sessioni da 24 minuti... in questo momento mi sto chiedendo come mi sia venuto in mente questo numero...
    "/", // Validità su tutto il sito
    "codx.altervista.org" // Validità su tutti i sottodomini E il dominio stesso (motivo per cui non ho voluto usare il punto iniziale)
    );
    session_start();
    ?>
    Spero che questo post torni utile a qualcuno visto che ne ho trovati tanti online ma nessuno mi ha effettivamente dato una panoramica chiara o una soluzione spiegata.

    Se dovessi aver detto boiate correggetemi!!
    Ultima modifica di codx : 23-02-2013 alle ore 19.13.17

Regole di scrittura

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