Problème de déconnexion
Posté : 02 déc. 2008, 22:27
Bonjour.
J ai décidé de recoder tout mon blog afin de le passer en PHP5. L'affichage des articles, commentaires est nickel. J ai juste un problème avec les utilisateurs : j arrive à faire sans probleme une connexion...mais la deconnexion pose soucis. Je ne sais pas vraiment comment détruire ma variable de session "partout" (malgré session_unset() session_detroy() ).
Pour vous expliquer voila le code.
On va partir de la page article par exemple qui affiche un article.
J ai ma boite de connexion/deconnexion que j appele par
Lorsque je continue ma page article, la boite en dessous contient des informations de l'user se trouvant ds user.php
Merci d'avance
.
J ai décidé de recoder tout mon blog afin de le passer en PHP5. L'affichage des articles, commentaires est nickel. J ai juste un problème avec les utilisateurs : j arrive à faire sans probleme une connexion...mais la deconnexion pose soucis. Je ne sais pas vraiment comment détruire ma variable de session "partout" (malgré session_unset() session_detroy() ).
Pour vous expliquer voila le code.
On va partir de la page article par exemple qui affiche un article.
J ai ma boite de connexion/deconnexion que j appele par
include 'auth.php';
Elle contient le code suivant :
require('connexion.class.php');
$oConnex = "";
echo '<form method="post" action="" name="frmLogin">';
//si la variable de session connexion n existe pas
//on cree l objet conenxion
if (!isset($_SESSION['connex'])) {
$oConnex = new connexion();
echo $oConnex->m_bMessage;
}
//dans le cas ou elle existe
//on deserialize l objet
else {
//Restauration de l'objet sérialisé
$oConnex = unserialize(urldecode($_SESSION['connex']));
}
$oConnex->_verifFormConnexion();
if($oConnex->m_bUserOK){
$_SESSION['id'] = $oConnex->m_aLogin['id_fonfon'];
$_SESSION['login'] = $oConnex->m_aLogin['login'];
$_SESSION['level'] = $oConnex->m_aLogin['level'];
//$_SESSION['connex'] = $oConnex;
echo '<p align="center"><input type="submit" value="Deconnexion" name="btnLogout" style="border:1px solid #eeeeee;" /></p>';
}else{
$form = ' <p><strong>Connexion :</strong><br />';
$form .= ' Pseudo';
$form .= ' <input type="text" name="login" style="border:#999999 1px solid;" size="20" /><br /><br />';
$form .= ' Mot de passe';
$form .= ' <input type="password" name="pass" style="border:#999999 1px solid;" size="20" /><br /><br />';
$form .= ' <input type="submit" value="Connexion" style="border:#999999 1px solid;" />';
$form .= ' <input type="reset" value="Effacer" style="border:#999999 1px solid;" />
</p>';
$form .= '<p>• <a href="">Inscription à FoNfOnLaNd</a></p>';
echo $form;
}
echo '</form>';
$_SESSION['connex'] = urlencode(serialize($oConnex)
Ma classe connexion.class.php est comme ceci :
require_once('connexionBD.php');
class connexion{
var $m_bUserOK = false;
var $m_bMessage;
//function __destruct(){
//}
function _verifFormConnexion(){
$this->m_nAccesBD = new connexionBD();
if(isset($_POST['login']) && isset($_POST['pass'])){
if(empty($_POST['login']) || empty($_POST['pass'])){
$this->m_bMessage = '<p style="color:#FF0000">Le login et/ou le mot de pass est vide!!</p>';
}//fin if
else{
/*echo '<script type="text/javascript">alert("Test avec le login '.$_POST['login'].'");</script>';*/
$this->_rechercherLogin($_POST['login'],$_POST['pass']);
}//fin else
}//fin if
else if(isset($_POST['btnLogout'])){
unset($this->m_bUserOK);
unset($_SESSION['connex']);
unset($this);
$_SESSION = array();
session_unset();
session_destroy();
//$this->_verifFormConnexion();
$this->m_bMessage = '<p style="color:#FF0000">Vous êtes déconnecté.</p>';
}
return $this->m_bMessage;
}//fin methode
//Y a les méthodes de verification qui viennent ensuite
//retournant la variable booléenne $m_bUserOK
//true : connexion OK
//false : pas de connexion
Et donc j ai ma variable de session $_session['connex'].Lorsque je continue ma page article, la boite en dessous contient des informations de l'user se trouvant ds user.php
if(isset($_SESSION['connex'])){
require('user.class.php');
try{
$oUser = new user($_SESSION['id'],$_SESSION['login'],$_SESSION['level']); //objet User
$oUser->_infoUser();
$oUser->_nbreArticles();
$oUser->_nbreComment();
$infUser .= '<p align="center"><img src="'.$oUser->m_aInfoUser['avatar'].'" alt="avatar" style="border: 1px solid #000;" align="center" />';
$infUser .= '<br /><strong>'.$oUser->m_aInfoUser['login'].'</strong> ('.$oUser->m_aInfoUser['level'].')</p>';
$infUser .= '<p>'.$oUser->m_aInfoUser['mail'].'<br />';
$infUser .= 'Article(s) : '.$oUser->m_aNbrArticles['nbr_articles'].'<br />';
$infUser .= 'Commentaire(s) : '.$oUser->m_aNbrComments['nbr_comms'].'</p>';//.'</p>';
echo $infUser;
$link = '<p> • <a href="">Modifier ses informations</a></p>';
$liste_level = array("admin");
if(in_array($oUser->m_aInfoUser['level'],$liste_level)){
$link .= '<p> • <a href="">Écrire un article</a><br />';
$link .= ' • <a href="">Modifier un article</a></p>';
}
echo $link;
}catch(MyException $e){
echo $e->getError();
}
}
Quand je suis connecté, ça s affiche nickel, normal. Mais lorsque j appuie sur deconnexion, ma variable $_session n est pas détruite partout et donc affiche des message d'erreur sur la boite d'info User et plus bas sur ma page, elle reste active.... Et pour l instant je n ai pas vraiment d'idée...Merci d'avance