Session e cookie funzionano solo dopo passaggio valori tramite POST

publi88

Nuovo Utente
7 Mag 2016
11
1
3
Buongiorno a tutti.
Mi è capitata una cosa stranissima.
Da pochi giorni sul mio sito session e cookie non funzionano più correttamente.

Ecco il codice COMPLETO delle 2 pagine test che uso per le prove:
Pagina test1.php

codice:
PHP:
<?php
session_start();


$_SESSION['test']=5;
if (isset($_SESSION['test'])){
    echo "ok";
} else {
    echo "error";
}
setcookie("test", "ok", time()+3600,"/");
?>


<form method="post" action="/test2.php">
<input type="submit" value="vai" name="azione" />
</form>


Pagina test2.php
codice:
PHP:
<?php
session_start();
if (isset($_SESSION['test'])){
    echo "ok";
} else {
    echo "error";
}


echo $_COOKIE['test'];
?>

Prima di tutto apro la pagina test1.php ed esce la scritta "ok" . PERFETTO quindi la session è stata settata

Poi apro la pagina test2.php e qui esce solo la scritta "error" . Ne session ne cookie funzionano

Provo più volte a caricare le 2 pagine ma non cambia niente.
Poi vado su test1.php e clicco il pulsante del form che semplicemente mi manda alla pagina test2.php passando i valori tramite post.

A questo punto si apre la pagina test2.php ed il testo che compare è "okok" . Session e cookie funzionano.

Chiudo il browser, lo riapro e su test2.php compare "okok" . Session e cookie continuano a funzionare

Spengo e riaccendo il computer, e sono di nuovo da capo con session e cookie che non funzionano.
La cosa piùstrana però è che facendo lo stesso identico test con le stesse pagine su un altro sito funzionano subito come è giusto che sia.

Qualcuno ha idea di cosa può essere?
Grazie
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
strano che ti funzioni comunque, setcookie deve andare prima di qualsiasi output html anche solo uno spazio, e tu hai comunque sempre un output in test1, o "ok" o "error", questo salco se per caso hai ridiretto il flusso e non l'hai scritto

Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\test1.php) in C:\AppServ\www\test1.php on line 11

dove provando copy/paste il tuo script la riga 11 e quella del setcookie("test", "ok", time()+3600,"/");

scrivila appena sotto session_sart prima degli if
 

publi88

Nuovo Utente
7 Mag 2016
11
1
3
Ciao,
grazie della risposta.

In effetti posso metterla all'inizio come mi hai suggerito, ma il problema rimane lo stesso uguale.
Non dipende da quello purtroppo.

E anche non usassi il cookie il problema rimarrebbe lo stesso con la variabile di sessione.
 

publi88

Nuovo Utente
7 Mag 2016
11
1
3
La cosa più strana è nel fatto che provando lo stesso identico codice su un altro sito, funziona perfettamente.
 

publi88

Nuovo Utente
7 Mag 2016
11
1
3
Si però il problema non è quello, perchè come ti dicevo, anche mettendolo all'inizio non funziona.
Il problema è che finchè non faccio un passaggio di valori tramite POST, ne session, ne cookie funzionano.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ho provato (le modifiche che ho fatto sono ininfluenti)
file test1.php
PHP:
<?php
session_start();
setcookie("test", "ok", time()+3600,"/");
$_SESSION['test']=5;
if (isset($_SESSION['test'])){
    echo $_SESSION['test']." ok ";
} else {
    echo "error";
}

?>
<form method="post" action="test2.php">
<input type="submit" value="vai" name="azione" />
</form>

file test2.php
PHP:
<?php
session_start();
if (isset($_SESSION['test'])){
    echo "ok<br>";
} else {
    echo "error";
}
echo $_COOKIE['test'];
?>
<br>
<a href="test1.php">torna</a>

e questi sono gli output



quindi funzia
comunque in test1 ti conviene modificare
PHP:
if(!isset($_COOKIE['test'])){setcookie("test", "ok", time()+3600,"/");}
cioè creare il cookie solo se non esiste gia, altrimenti con time() il tempo di esistenza si modifica ad ogni chiamata
 

publi88

Nuovo Utente
7 Mag 2016
11
1
3
Ok ti ringrazio,
però io ho appunto scritto che il codice è funzionante.

Io ho scritto che il codice funziona su altri siti, ma non funziona su questo.
Ho già provato anche io ad usarlo su un altro mio sito ed infatti funziona.

Il problema è che su questo sito in particolare i cookie e le session, funzionano soltanto dopo aver fatto il submit di una form.

Perciò la mia domanda era, qualcuno ha idea di quale motivo possa esserci nel fatto che su di un sito session e cookie funzionano normalmente e su un altro funzionano solo dopo aver passato dei valori tramite form?
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Session o cookie? Classic ASP 3
L login e session PHP 4
max1974 Session Timeout Javascript 0
L [PHP] login e protezione pagine con session PHP 3
P [PHP] Multi-session PHP 1
Y [PHP] The session is lost PHP 8
G [PHP] Problema - Warning: session_start() [function.session-start] PHP 9
L [WordPress] creare un plugin , come faccio ad utilizzare le session. WordPress 5
M [Java] Session Attribute Spring MVC Java 1
M [PHP] ID in SESSION PHP 1
W Session e htaccess PHP 2
M Non aggiorna valore session PHP 5
Nik Cannot send session cache limiter - ERRORE utilizzando session_start(); PHP 3
I registrazione (SESSION) PHP 5
K problemi con nome della session PHP 3
N Problema con le SESSION PHP 6
P problema salvataggio e richiamo SESSION PHP 0
M Session timeout in ASP.NET ASP.NET 1
S VS2010: Variabili Session in ASP net ASP.NET 2
Emix Problema Session PHP 1
S codeigniter session problem PHP 1
A session hijacking PHP 0
A Problema SESSION e LOGIN PHP 1
T Cambiare session id PHP 1
Monital Errore solo per alcuni utenti, colpa delle session? PHP 5
Fabrizio Fiorita header e session funzionano perfettamente in locale ma creano problemi in remoto PHP 32
J PhPBB , e le session di login phpBB 1
helpdesk Nessuna session start in login PHP PHP 12
S session come mettere l'id utente PHP 1
G problema con session.gc_maxlifetime PHP 3
T problema con le session PHP 3
ciacos74 PHP errore function.session-start PHP 25
max_400 blog con session si può fare? PHP 10
M problema con Session PHP 3
M Problema con l'utilizzo delle Session PHP 3
H Warning: session_start() [function.session-start]: Cannot send session cache limiter PHP 8
foki problema misterioso session ID PHP 30
A session sid PHP 12
borgo italia session evanescente PHP 4
G problema con session.cookie_lifetime PHP 1
A session start() PHP 7
M Warning: session_start(): Cannot send session cache... ???? PHP 5
P problema sessioni php [function.session-start] PHP 2
L Abbinare ad una session un determinato valore Classic ASP 16
L Più session Classic ASP 1
A problema con Session Classic ASP 4
T variabili session Classic ASP 2
E passaggio parametro con session Classic ASP 0
D Aprire più session..come?? Classic ASP 9
A Creazione cookie e gestione accessi PHP 0

Discussioni simili