-
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è?
-
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!
-
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...
-
Hai fatto una prova come ti ho chiesto?
Ciao!
-
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!