2010-08-12 5 views
1

je le code php suivant:script php ne rafraichit pas dans le navigateur

<?php session_start(); 
.... 
$result=$db->query($query); 
$row=$result->fetch_assoc(); 
$_SESSION['id']=$row['id']; 
header('Location: http://www.blabla.com/successLoginPage.php'); 

code php sur: successLoginPage.php

<?php session_start(); 
echo $_SESSION['id']; 

est ici problème. Quand je fais tout, je ne vois rien dans successLoginPage.php, après environ 10 minutes je rafraîchis la page et vois la variable correcte. J'ai essayé d'effacer le cache, ctrl + f5, éteindre le navigateur et l'ordinateur, mais rien ne change - encore besoin d'attendre 10 minutes. Ce problème existe en chrome et ie8.

Comment puis-je résoudre ce problème?

Merci d'avance.

* Edit 1:

-je ajouter page logout.php avec le code suivant: session_start(); session_destroy(); unset ($ _ SESSION); Lorsque je me connecte avec succès et que je reçois l'écho approprié, j'appuie sur le lien de déconnexion, puis je me connecte en utilisant un autre compte. 1ère question - Puis-je me connecter via le 1er compte pour la 1ère fois et le 2ème compte pour la 2ème fois? Est-ce correct? 2ème question - quand je n'ai pas réussi à me connecter, là encore je vois geler. Si j'essaie de me connecter avec un compte correct après cela, je vais voir les anciennes informations sur l'échec de connexion. Ce que je dois faire?

+0

avez-vous essayé sur une machine différente ... c'est très peu probable – Starx

+0

Sur une autre machine fonctionnant très bien. J'essaie de comprendre pourquoi cela ne fonctionne pas sur mon ordinateur. Les gens, qui vont utiliser mon application peuvent avoir les mêmes erreurs – dsplatonov

+0

Qu'est-ce que vous utilisez pour votre backend de session? – stillstanding

Répondre

0

Résolu le problème. J'ai supprimé tous les fichiers de connexion et réécrire à partir de zéro et tout semble fonctionner maintenant. Je ne sais pas où était le bogue.

0

Avez-vous essayé session_write_close(); après avoir défini votre variable de session?

+0

c'est inutile.session aurait été validée lorsque le script s'est terminé au moment de la redirection. – stillstanding

+0

toujours le même :( – dsplatonov

+0

Qu'est-ce que 'ini_get ('register_globals')'; retour? – lotsoffreetime

1

Cela peut être quelque peu évident mais ... est-ce que $ row ['id'] est en fait un nombre/chaîne, pas NULL? : P Vous pouvez essayer

var_dump($_SESSION['id']); 

au lieu de

echo $_SESSION['id']; 
+0

Merci pour la réponse var_dump a montré Null ou string (2) "13" (c'est l'ID de la session) – dsplatonov

0

Tout d'abord, vous ne montrez pas tout le code et dans ce cas, il est très important.

<?php session_start(); 
.... 
$result=$db->query($query); 
$row=$result->fetch_assoc(); 
$_SESSION['id']=$row['id']; 
header('Location: http://www.blabla.com/successLoginPage.php'); 
// Mystery ??? 

Lorsque vous appelez en-tête (« Lieu: xxx »), il ne s'arrête pas le script, donc tout ce qui suit votre tête est exécuté.

Vous pouvez ajouter la fonction die pour empêcher tout autre code de s'exécuter après la redirection.

<?php session_start(); 
.... 
$result=$db->query($query); 
$row=$result->fetch_assoc(); 
$_SESSION['id']=$row['id']; 
header('Location: http://www.blabla.com/successLoginPage.php'); 
die(); // No more code executed after this // 
+0

Merci pour la réponse J'ai utilisé la méthode exit() insted of die - est-ce la même chose? – dsplatonov

+0

@dsplatonov oui – HoLyVieR

Questions connexes