|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
[PHP] Anomalia della sessione
Ho alcune pagine dove l'utente può accedervi soltanto tramite login.
La struttura semplificata è questa: index.php invia alla pag2.php user e password, i quali vengono memorizzati in $_SESSION["user"] e $_SESSION["pwd"]; se passo alla pag3.php non riesco a recuperare i valori delle variabili di sessione solo la prima volta. A questo punto se accedo alla pag2.php le variabili di sessione non contengono più nulla (vedi codice) e quindi devo rifare il login. Rifacendo il login tutto funziona. Il codice è: Codice PHP:
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Questo controllo
Codice:
if(isset($_SESSION["user"]) == "pippo" AND isset($_SESSION["pwd"]) == "pluto") $_REQUEST contiene solo le variabili presenti anche in $_GET e $_POST non in $_SESSION, e (mio consiglio) è meglio se usi $_POST se le variabili le hai passato tramite post o $_GET nel caso le hai passate da url. In definitva ecco il tuo problema: Compili un form che ti spedisce le variabili passate con get o post a pag2.php, dove fai un isset($_REQUEST...) che darà esito positivo perchè gli hai appena passato le variabili che ora sono momentanemanete anche in quell'array. Il controllo passa e setti la sessione. Vai a pag3.php dove fai un controllo privo di qualunque senso logico, a questo punto ritorni a pag2.php ma stavolta non gli stai passando nulla da get o post, quindi il controllo sull'array $_REQUEST non passa ed ecco che ti sembra che la tua sessione non è stata settata. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
Concordo sul controllo privo di logica alla pag3.
Non capisco perché non riesco a leggere le variabili di sessione la prima volta che effettuo l'accesso, rifacendo il login funziona tutto (se chiudo e riapro il browser o se digito il nome della pagina non riesco ad accedervi, proprio come voglio io).
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ma dal tuo codice, secondo te, dove le vorresti leggere le variabili di sessione?
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
Sia nella pag2 che nella pag3
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
In pag2 non controlli la sessione ma l'array $_REQUEST che è tutt'altra cosa.
prova questo... Codice:
session_start();
if(isset($_SESSION["user"])&&isset($_SESSION["pass"])){
echo "Risulti già loggato - Utente: ".$_SESSION["user"];
exit();
}
if(isset($_POST["user"])&&isset($_POST["pass"])){
$_SESSION["user"] = $_REQUEST['user'];
$_SESSION["pwd"] = $_REQUEST['pass'];
echo("Login effetuato con valori:<br>");
echo($_SESSION["user"]."<br>".$_SESSION["pwd"]);
echo ("<br><a href='pag3.php'>pagina 3</a>");
}
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
Tutto come prima.
La pag2 mostra user e password, poi alla pag3 le variabili di sessione non vengono stampate. Rifacendo il login riesco a visualizzare tutto
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
la pag3 va corretta nn va bene la tua, rifalla e ripostala.
Se usi il mio codice per la pag2 così cm'è deve funzionare. Ultima modifica di MEMon : 07-09-2007 alle 18:56. |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
login -> pag2: visualizza user e password prese dalle variabili di sessione
pag2 -> pag3: non ci sono le variabili di sessione pag3 -> pag2: non visualizza più il contenuto delle variabili di sessione pag2 (o pag3) -> login -> pag2: visualizza user e password come prima pag2 -> pag3: visualizza le variabili di sessione pag3 -> pag2: visualizza le variabili di sessione Il codice della terza pagina: Codice PHP:
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) Ultima modifica di Fabiorayden : 07-09-2007 alle 19:25. |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
Ora anche il passaggio dalla pag2 alla pag3 funziona, non funziona quello da pag3 a pag2 (come sempre solo la prima volta, dopo funziona tutto)
Edit: su server remoto... in locale non è cambiato nulla.
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) Ultima modifica di Fabiorayden : 07-09-2007 alle 19:33. |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
Ora mi sta sorgendo un dubbio...
Non è che il mio problema è dovuto a qualche impostazione errata nel php.ini?
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Scusa, potresti postare il codice delle 3 pagine che usi? Compreso quella dove ti logghi?
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
Quote:
Adesso sto controllando che user e password vengano passate correttamente di pagina in pagina
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Per quello volevo vedere il codice vero e proprio...
|
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
Ora posso confermare quanto detto prima.
Il problema era il codice html prima di session_start Grazie MEMon per l'aiuto
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:22.




















