Problème de session en php
Posté : 06 oct. 2009, 17:02
Bonjour à tous,
Voilà je me heurte à un petit soucis.
Dans le but d'économiser les requêtes sur mon site j'utilise une petite astuce pour vérifier qu'un utilisateur est connecté :
Je tente de mettre à jour la session de l'utilisateur connecté (celui, renseigné par son cookie)
Si l'update fonctionne, c'est qu'il y avait bien un enregistrement valide dans la table session -> L'utilisateur est connecté
Si pas évidement, comme vous vous en doutez il est déco..
La ou j'ai un soucis c'est que quand je réactualise trop vite la page, il arrive un truc super étrange :
L'update foire pourtant l'enregistrement existe bien dans la base de donnée..
Voici le code :
0 enregistrements mis à jours
Il existe 1 enregistrement pourtant
Si après ce "bug" je réactualise la page en laissant une seconde avant le refresh, je me retrouve bien connecté..
Le soucis semble venir du faite que j'actualise trop vite (sans laisser le temps au site de s'afficher)
Pour la db j'utilise le PDO..
Le SID est récupéré via un cookie
J'ai ce problème sous ie/chrome/opera/firefox.. (Le soucis ne vient donc pas du cookie... je pense)
Auriez-vous une idée ?
Merci à vous
Voilà je me heurte à un petit soucis.
Dans le but d'économiser les requêtes sur mon site j'utilise une petite astuce pour vérifier qu'un utilisateur est connecté :
Je tente de mettre à jour la session de l'utilisateur connecté (celui, renseigné par son cookie)
Si l'update fonctionne, c'est qu'il y avait bien un enregistrement valide dans la table session -> L'utilisateur est connecté
Si pas évidement, comme vous vous en doutez il est déco..
La ou j'ai un soucis c'est que quand je réactualise trop vite la page, il arrive un truc super étrange :
L'update foire pourtant l'enregistrement existe bien dans la base de donnée..
Voici le code :
//Vérifie que l'on à bien un sid
if(!is_null($this->sid)) {
$page = $this->getPage();
$valid = $this->conn->exec("UPDATE users_sessions SET last_visit = NOW(), page='".$page."' WHERE sid='".$this->sid."'");
if($valid >= 1) {
$this->isvalid = true;
return true;
} else {
echo $valid;
$query = $this->conn->query("SELECT count(*) as result FROM users_sessions WHERE sid='".$this->sid."'");
$row = $query->fetch();
echo "Il existe ".$row['result']." enregistrement pourtant";
}
}
Et je me retrouve sur ma page avec :0 enregistrements mis à jours
Il existe 1 enregistrement pourtant
Si après ce "bug" je réactualise la page en laissant une seconde avant le refresh, je me retrouve bien connecté..
Le soucis semble venir du faite que j'actualise trop vite (sans laisser le temps au site de s'afficher)
Pour la db j'utilise le PDO..
Le SID est récupéré via un cookie
J'ai ce problème sous ie/chrome/opera/firefox.. (Le soucis ne vient donc pas du cookie... je pense)
Auriez-vous une idée ?
Merci à vous