Bonjour.
Je viens faire appel a vous pour un problème de session.
Mon but est, comme souvent, d'avoir une coche "Toujours connecter" qui alors permet un auto login meme quand l'utilisateur a fermer son navigateur.
Le seul moyen est donc les cookies? Enfin je suis parti dans cet optique et j'ai fais le code suivant:
Pour se logguer: if((isset($_POST['loginpa'])) || (isset($_POST['passwdpa']))) {
if($_POST['loginpa'] == "") $errlogin = 1;
if(($_POST['passwdpa'] == "") && ($_POST['loginpa'] != "")) $errlogin = 2;
if($errlogin == 0) {
$mylogin = htmlentities($_POST['loginpa']);
$mypasswd = htmlentities($_POST['passwdpa']);
$query = $mysql->query_mysql("SELECT UP_LEVEL, MDPASSE FROM MEMBRE WHERE PSEUDO='$mylogin' LIMIT 1");
if(mysql_num_rows($query) != 0) {
$result = mysql_fetch_array($query);
if($result['UP_LEVEL'] == "0") { header("Location: http://localhost/index.php?page=activateaccount&pseudo=$mylogin",301); }
$mdpbdd = $result['MDPASSE'];
if(md5($mypasswd) != $mdpbdd) {
$errlogin = 2;
} else {
$_SESSION['pseudo'] = $mylogin;
$_SESSION['leveluser'] = $result['UP_LEVEL'];
$pseudomembre = $_SESSION['pseudo'];
$level = $_SESSION['leveluser'];
if(isset($_POST['rememberme'])) {
setcookie("papseudo",$pseudomembre,time()+60*60*24*90,"/");
setcookie("papwd",md5($mypasswd),time()+60*60*24*90,"/");
} else {
setcookie("papseudo",$pseudomembre,time()+60*30,"/");
setcookie("papwd",md5($mypasswd),time()+60*30,"/");
} // FIN COOKIE CONNEXION
} // FIN MOTS DE PASSES IDENTIQUES
} // FIN PSEUDO EXISTANT
} // FIN 2 CHAMPS RENSEIGNÉS
}else {
if($_SESSION['pseudo'] != "") {
$pseudomembre = $_SESSION['pseudo'];
$level = $_SESSION['leveluser'];
} else {
// COOKIES EXISTANTS MAIS MEMBRE NON LOGGUÉ
if((isset($_COOKIE['papseudo'])) && (isset($_COOKIE['papwd']))) {
// SI LES COOKIES NE SONT PAS VIDES
if(($_COOKIE['papseudo'] != "") && ($_COOKIE['papwd'] != "")) {
$pseudocookie = $_COOKIE['papseudo'];
$mdpcookie = $_COOKIE['papwd'];
$query = $mysql->query_mysql("SELECT UP_LEVEL, MDPASSE FROM MEMBRE WHERE PSEUDO='$pseudocookie' LIMIT 1");
// SI LE LOGIN EXISTE
if(mysql_num_rows($query) != 0) {
$result = mysql_fetch_array($query);
// SI LES MOTS DE PASSES SONT IDENTIQUES
if($mdpcookie == $result['MDPASSE']) {
$_SESSION['pseudo'] = $pseudocookie;
$pseudomembre = $pseudocookie;
$_SESSION['leveluser'] = $result['UP_LEVEL'];
$level = $_SESSION['leveluser'];
} // FIN MDP IDENTIQUES
else {
setcookie('poweranimepseudo','', time()-3600); // expiration cookie pseudo
setcookie('poweranimepwd','', time()-3600); // expiration cookie password
}
} // FIN PSEUDO EXISTANT
else {
setcookie('poweranimepseudo','', time()-3600); // expiration cookie pseudo
setcookie('poweranimepwd','', time()-3600); // expiration cookie password
}
} // FIN COOKIES NON VIDES
} // FIN COOKIES EXISTANT ET SESSION PSEUDO INEXISTANTE
} // SESSION OUVERTE
} // FIN FORMULAIRE NON SOUMI
Pour se délogguer:if(($_GET['action'] != "") && ($_GET['sid'] != "")) {
$action = htmlentities($_GET['action']);
if($action == 'logout') {
$sid = htmlentities($_GET['sid']);
if($sid == session_id()) {
// DESTRUCTION DES DONNEES DE SESSION ET DE LA SESSION
$_SESSION = array();
session_destroy();
setcookie('papseudo','', time()-3600); // expiration cookie pseudo
setcookie('papwd','', time()-3600); // expiration cookie password
}
}
}
Ce qu'il se passe, c'est qu'au premier deloggue, la session est recréé

et si je reclique ca fonctionne bien... je suis délogguer.
Sinon quand je ferme le navigateur et que je le ré ouvre, meme si j'ai coché Toujours connecter ca ne fonctionne pas :(
j'ai fais mon petit algo mais aparement c'est pas trop ca

J'ai pas testé l'expiration du cookie pour le déloggue automatique mais je doute que ca fonctionne

Bref je viens faire appel a votre aide car la j'ai quelques difficultés!
Il existe une classe pour login(automatique ou non) avec sessions + cookies?
Merci de votre aide.
Cordialement, AigleNoir [:)]