- Home
- Categorie
- Coding e Sistemistica
- PHP
- Prolema con sessioni
-
Prolema con sessioni
Salve a tutti,
vorrei sottoporvi un problema che mi sta facendo impazzireho uno script per il login che funziona così:
verifica user/pass sul database, se corretti, setta una variabile
$_SESSION['utente'] = $id_utente;
dopodichè fa un redirect (html) alla pagina da dove è stato fatto il login
(senza settare cookie nè passare il SID via GET)in tutte le pagine (compresa quella del login ovviamente) c'è
session_name("utente");
session_start();e fino a due giorni fa, dopo aver fatto il login, in tutte le pagine era disponibile la variabile $_SESSION['utente']
.. bè.. inspiegabilmente non funziona più..avete qualche idea del motivo?
grazie in anticipo
-
Hai per caso fatto qualche modifica alla pagina di login nei giorni incriminati?
o nelle altre pagine? anche non inerente le sessioni? se si, controlla, magari una chiusura fatta male ti manda in frolla le sessioni
-
innanzitutto grazie della risposta
no, erano un pò di giorni che non ci lavoravo, quindi mi sembra strano...
cmq, per esserne assolutamente sicura: cosa intendi per "qualche chiusura fatta male"?
-
@razima said:
cosa intendi per "qualche chiusura fatta male"?
tag o istruzione a cui manca la chiusura
Posta il pezzo di codice dove crei la sessione e dove la recuperi
-
non credo perchè le pagine sono molte e funzionano per tutto tranne che per queste cavolo di sessioni..
cmq
questo è il codice di login.php
[php]
<?
session_name("utente");
session_start();$email = $_POST['email'];
$password = $_POST['password'];$query = mysql_query("select id from utenti where email='$email' and pass='$password'");
if(@mysql_num_rows($query) > 0) {
$_SESSION['idutente'] = mysql_result($query, 0);
?><html><head><META HTTP-EQUIV="refresh" content="1;URL=<?= $_SERVER['HTTP_REFERER'] ?>"><body><center><big>Login OK - <?= $_SESSION['idutente'] ?></big></body></html><?
} else {
include("../include/header.php");
?>
<p align="center"><h2>Errore</h2></p>
<p align="center"> Nome utente e/o password errati</p>
<?
include("../include/footer.php");
}
[/php]fino a qui funziona.. come vedi affianco a login ok gli ho fatto stampare il contenuto di $_SESSION e l'id viene inserito correttamentetutte le altre pagine cominciano con
[php]
<?
session_name("utente");
session_start();if($_SESSION['idutente'] > 0) {
include("headerutenti.php");
} else {
include("header.php");
}......
?>[/php]e viene sempre incluso header.php
se faccio print_r($_SESSION); printa un array vuoto.quello che mi viene da pensare è che magari l'hosting provider ha cambiato qualche impostazione del php che impedisce a $_SESSION di passare da una pagina all'altra...
possibile?
-
[php]<? $email = $_POST['email'];
$password = $_POST['password'];$query = mysql_query("select id from utenti where email='$email' and pass='$password'");
if(@mysql_num_rows($query) > 0) {
session_start();
session_unset();
session_destroy();
session_start();
$_SESSION['idutente'] = mysql_result($query, 0);
....
}
...
[/php][php]<?
session_start();
$idutenti=$_SESSION['idutenti'];
if ($idutenti!='') {
include("headerutenti.php");
} else {
include("header.php");
}......
?>[/php]
Prova un po a modificarli così
-
niente da fare
stessa cosa...
-
allora.. sto facendo qualche esperimento..
ho provato a
togliere session_name("utente");
e aggiungere il session_id al redirect
<META HTTP-EQUIV="refresh" content="1;URL=<?= $_SERVER['HTTP_REFERER'] ?>?<?php echo htmlspecialchars(SID);?>">così funziona...
quello che non capisco è che, sul manuale php leggo
Printing the SID, like shown above, is not necessary if --enable-trans-sid was used to compile PHP.e che
From PHP 4.2.0, trans-sid feature is always compiledio sto usando php 5 e oltre...
perchè diavolo non funziona?!?!
-
Sinceramente non capisco perchè non funzioni
prova a dare un occhio a headerutenti.php, magari c'è un redirect a header.php che "scappa" per qualche motivo