Visualizzazione risultati 1 fino 5 di 5

Discussione: sessione php persa

  1. #1
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito sessione php persa

    salve a tutti!

    ho un problema con le sessioni in php.
    in locale tutto funziona bene ma quando pubblico le pagine in altervista e provo a salvare una variabile in sessione, questa viene "cancellata" dopo aver fatto questo ciclo.

    Codice PHP:
    foreach ($_POST as $nome => $valore)
    {
    $valore = str_replace("'","\'", $valore);
    $valore = str_replace('"', '"', $valore);
    $valore = str_replace("\n","", $valore);
    $
    $nome = $valore;
    }
    premetto che la variabile non passa attraverso questo ciclo, tuttavia al termine dell'operazione la variabile è sparita e trattandosi di una login mi impedisce di proseguire col resto dello script se prima non mi sono loggato nuovamente.

    mi potete aiutare? ho cercato nel forum e in rete ma non trovo risposta.
    sottolineo che la session_start() c'è e tutto funziona, anche cambiando navigando sulle varie pagine la sessione rimane attiva. al passaggio dello script sopra viene persa.

    perchè?

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    Strano.

    In che senso viene cancellata? Cioè la variabile rimane ma viene eliminato il contenuto (empty()) oppure sparisce proprio, come avviene dopo unset()?

    Mi spiego meglio: come determini che è quel codice che fa sparire la variabile? Prova così ad esempio:

    Codice PHP:
    session_start();

    # [...]

    //test:

    if(isset($_SESSION['valore']))
    {
    if(empty(
    $_SESSION['valore']))
    echo
    'esiste ma è vuoto';
    else
    echo
    'esiste e vale: '.$_SESSION['valore'];
    }
    else echo
    'Non esiste!';

    // codice incriminato:

    foreach ($_POST as $nome => $valore)
    {
    $valore = str_replace("'","\'", $valore);
    $valore = str_replace('"', '"', $valore);
    $valore = str_replace("\n","", $valore);
    $
    $nome = $valore;
    }

    //test:
    if(isset($_SESSION['valore']))
    {
    if(empty(
    $_SESSION['valore']))
    echo
    'esiste ma è vuoto';
    else
    echo
    'esiste e vale: '.$_SESSION['valore'];
    }
    else echo
    'Non esiste!';

    # [...]
    Se per caso viene confermato che quel codice elimina il contenuto della sessione, dovresti guardare ogni volta cosa vale $nome

    Ciao!
    Ultima modifica di alemoppo : 06-12-2014 alle ore 00.25.47

  3. #3
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito

    ciao

    allora (ripeto) in locale funziona tutto.
    pubblicati i files su altervista non va.
    in pratica le variabili di sessione restano memorizzate fino a quando non viene eseguito lo script qui sopra.
    poi è come se facessi un unset() e tutte le variabili vengono cancellate.
    e non capisco perchè, dato che le variabili in questione non hanno nulla a che fare col ciclo foreach...

    tra l'altro anche se fosse non c'è nessun comando che implichi la cancellazione dei valori in memoria...

  4. #4
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    Hai fatto una prova come ti ho chiesto?

    Ciao!

  5. #5
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito

    si, allora, il primo step dice che "esiste e vale ***", mentre il secondo dice che "esiste ma è vuoto"...

    il problema è nella variabile

    $$nome = $valore;

    tolta questa la sessione resta attiva (ma poi il resto dello script ovviamente non funziona).

    forse ho risolto: basta mettere $_POST[] al posto di $_POST... evidentemente vuole anche le parentesi quadre, magari la versione di php di altervista è diversa dalla mia... bho!
    in ogni caso facendo questa operazione funziona su altervista ma non funziona più in locale!
    Ultima modifica di lobster : 06-12-2014 alle ore 21.12.12

Regole di scrittura

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