Visualizzazione risultati 1 fino 9 di 9

Discussione: Problema sessioni e path

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,230

    Predefinito Problema sessioni e path

    Buonasera,
    ho uno script che crea una sessione dati in paginaIniziale.php e che recupero correttamente su

    • /cartellaA/paginaA.php
    • /cartellaC/paginaC.php


    Mentre su visito /cartellaB/paginaB.php, non funziona.

    Le pagine, in header, richiamano tutti questa funzione:

    Codice PHP:
    <?php

    function sysInit(){
    session_set_cookie_params(0, '/', 'dominio.tld', true, true);
    session_start();

    if(empty(
    $_SESSION['reLoc'])){
    header('location: paginaIniziale.php');
    exit;
    }
    }
    Debuggando il tutto, noto che /cartellaB/ all'avvia della sessione, utilizza /cartellaB/ come path del cookie di sessione, mentre le altre pagine utilizzano /.

    Sarà la stanchezza o il caldo ma non riesco ad uscirne
    Apprezzi l'aiuto? Offrimi un caffè!

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

    Predefinito

    Ciao Miki! 👋 Problema curioso e frustrante!

    Giusto per essere sicuri: la chiamata a session_set_cookie_params() è li principalmente per settare secure: true e httponly: true? In quel caso, potrebbe bastarti session_start():
    Codice PHP:
    session_start([
    'cookie_httponly' => 1,
    'cookie_secure' => 1,
    # 'cookie_samesite' => <'strict' | 'lax'>, // magari vuoi anche questo?
    ]);
    Altrimenti, visto che avrai già controllato tutte le cose ovvie, magari il problema è da un'altra parte. Cose tipo "oh, il file in cartellaB non conteneva il codice aggiornato", oppure "oh, lo stavo salvando nel posto sbagliato".

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,230

    Predefinito

    Heilà... poco fa leggevo il tuo post su Pest

    Comunque ho controllato dappertutto.
    Alcune pagine creano un secondo cookie con lo stesso nome, altro valore di sessione e path diversa.

    Anche la tua soluzione non va :/

    Ultima spiaggia è quella integrare la funzione con una lettura dei cookie ed eliminare quelli doppi rimanendo il primo emesso!
    Apprezzi l'aiuto? Offrimi un caffè!

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

    Predefinito

    "Spegni" un attimo il redirect commentando la riga con header(), e prova a mandare in output il parametri prima e dopo la tua chiamata:
    Codice PHP:
    var_export(session_get_cookie_params());
    session_set_cookie_params(...);
    session_start();
    var_export(session_get_cookie_params());
    E vediamo cosa ne esce

    [edit] Cerca anche se c'è un altro session_start() nel codice! Il path di default è la directory corrente, quindi il secondo cookie arriva da una chiamata che in qualche modo non "sente" i parametri che setti in quella funzione. O la funzione non è chiamata, o c'è un altro session_start secondo me 🤔
    Ultima modifica di dreadnaut : 22-07-2024 alle ore 19.13.56

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,230

    Predefinito

    Codice:
    array ( 'lifetime' => 0, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict', )
    Warning: session_start(): Session cannot be started after headers have already been sent in /home/miksco/web/gestio24.com/inc/auth.php on line 6
    array ( 'lifetime' => 0, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict', )
    Warning: session_name(): Session name cannot be changed after headers have already been sent in /home/miksco/web/gestio24.com/inc/auth.php on line 8
    
    Warning: session_start(): Session cannot be started after headers have already been sent in /home/miksco/web/gestio24.com/inc/auth.php on line 9
    Improvvisamente lo fa solo dal PC di casa ora.
    Apprezzi l'aiuto? Offrimi un caffè!

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

    Predefinito

    Mmmmh, ci sono due session_start in quel log, la cosa è sospetta! Può essere che sia da qualche parte in paginaB.php, e sia la causa di quel secondo cookie.

  7. #7
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    1) Da PHP 7.2 session_name va utilizzato prima di session_start
    2) Se si utilizzano i cookie non puoi avere output prima della funzione session_start che appunto crea una sessione con cookie o la recupera

    Io per spegnere output_buffering (php.ini) uso nel mio codice ob_end_clean e inoltre abilito tutti gli errori con error_reporting e visualizzo il file archiviato nel filesytem.
    Codice PHP:
    <?php

    ob_end_clean
    ();

    $i256 = str_replace(',', '', '115,​792,​089,​237,​316,​195,​423,​570,​985,​008,​687,​907,​853,​269,​984,​665,​640,​564,​039,​457,​584,​007,​913,​129,​639,​936');
    error_reporting((int) $i256);
    $t = true;
    ob_start();
    session_name('a[b]');
    session_start();
    ob_end_clean();
    if(isset(
    $_SESSION['hi'])) {
    $t = false;
    }
    $text = ini_get('session.save_path') . '/sess_' . $_COOKIE['a']['b'];

    function
    get_include_contents($filename) {
    //if (is_file($filename)) {
    ob_start();
    include
    $filename;
    $var = ob_get_contents();
    ob_end_clean();
    return
    $var;
    //}
    return false;
    }
    $string = get_include_contents($text);
    $_SESSION['hi'] = 'user2';
    var_dump($string);

    ?>
    Questa pagina é il recupero dei dati di sessione ma non la pagina di creazione
    Ultima modifica di darbula : 24-07-2024 alle ore 14.30.08

  8. #8
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,230

    Predefinito

    Buongiorno e grazie del suggerimento ma l'ho spostato dopo.
    Per quanto incredibile possa sembrare il problema è che anteponevo la parola "sid" prima del nome sessione (es. SID-SitoA)... è stato sufficiente spostarlo come suffisso (sitoA-sid) per risolvere.

    Inoltre ho controllato tutte le pagine ed ho sempre usato require_once ed un solo session_start

    Ora non so se la mia soluzione è stata una casualità o meno ma così parrebbe risolto.
    Apprezzi l'aiuto? Offrimi un caffè!

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

    Predefinito

    Mistero! Ma se hai risolto, perfetto così

Regole di scrittura

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