begin process at 2012 02 13 16:05:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Sessions+cookies (se souvenir de moi)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Sessions+cookies (se souvenir de moi)

vendredi 8 juin 2007 à 18:05:51 | Sessions+cookies (se souvenir de moi)

DDelec24

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 [:)]
vendredi 8 juin 2007 à 18:09:58 | Re : Sessions+cookies (se souvenir de moi)

DDelec24

PS: jai omi de changer le nom du cookie pour leurs créations mais c'est une erreur j'avais réduit le nom pour voir si ca venais de la longueur et j'ai pas changé avant d'envoyer

PS: pas de fonction éditer? sniff

Cordialement, AigleNoir [:)]


Cette discussion est classée dans : session, pseudo, time, cookie, setcookie


Répondre à ce message

Sujets en rapport avec ce message

Prob cookie [ par zzzzzz ] Yeppetite question de passageje créé mes cookies de la facon suivante :setcookie("diabl_n",$username,time()+2*3600*24*350,"");setcookie("diabl_p",$pa cookie de session - besoin de méthode [ par satellite34 ] bonjour,voila, j'ai un soucis, je doit creer et utiliser un cookie de session sur mon site, j'ai regardé des sources sur phpCS mais impossible d'en fa Impossible de supprimer les cookies [ par zzzzzz ] Bonjour,J'aimerai supprimer tous les cookies lié à mon site mais cela est impossible.J'essaye plusieurs code mais rien à faire les cookies sont là. Ma Expiration de session [ par scharly3 ] Bonjour,J'ai décidé de permettre aux utilisateurs de mon site de se souvenir de garder leurs sessions ouvertes durant quelques heures voici le code mi Problème avec une liste et un cookie [ par nicomilville ] Salut,Je créer un chat et pour savoir qui est connecté, j'utilise un système de cookie renouvel avec de l'ajax, enfin bref j'ai créer un cookie "pseud Pb de cookie et sessions [ par zemele ] Bonjour,Comme je ne vois pas du tout où se situe mon erreur je vous met la totale... J'essaie de faire en sorte que lorsqu'une personne s'est déjà ide problème de deconexion! script en ajax et php. [ par petitfute ] bonjour! j'ai un probleme bizard! Qua probleme avec session [ par dipin ] Bonjouralors voila ce petit code pour créer une variable session, en local aucun problème mais sur internet (free.fr) il a une erreur :voici le code : Session et securité [ par DjChat ] Bonjour a tous, j'viens pour deux trois conseil sue la securité des variables de Session que je pense a éte souvent soulever sur le forum, ayant pas m script de session qui ne marche pas ... [ par nicomilville ] Salut j'ai un script php utilisant les session et au début ça marche bien mais après quand je retourne sur la page du formulaire ça ne me renvoi pas s


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,058 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales