Connexion Auto avec COOKIE

Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 14 févr. 2015 à 20:50
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 15 févr. 2015 à 00:25
Bonjour
Je souhaiterai mettre en place une connexion automatique, comme ça lorsqu'un utilisateur va pour la première fois sur le site et qu'il coche la case se souvenir de moi lorsqu'il quitte son navigateur il sera de nouveau connecter, inutile qu'il renseigne encore le login et mot de passe.
J'ai commencé à faire quelque chose qui ne fonctionne pas bien sur.
Si par contre la création du COOKIE est créé mais c'est la reconnexion automatique qui ne se fait pas dans ma page index.php
connexion.php
if(isset($_POST['pseudo']) && isset($_POST['password'])) {

	$pseudo   	= isset($_POST['pseudo']) ? Security::clean($_POST['pseudo']) : '';
	$password	= isset($_POST['password']) ? Security::clean($_POST['password']) : '';
	$actif		= isset($_POST['actif']) ? $_POST['actif'] : '';

	$connexion = new Connexion_class($pseudo, $password, $actif);
	$verif = $connexion->VerifConnexion();
	    
	if($verif == 'success') {
		
		if(isset($_POST['remember'])) {
			$LoginPassword = Security::crypt($pseudo) . '_' . Security::crypt($password);
			setcookie('moncookie', $LoginPassword, time() + 3600 * 24 * 365, null, null, false, true);
		}
		
		header('Location: index.php?body=compte_profil&type=compte');
	
	} else {
		$erreur[] = $verif;
	}
}

page index.php
if(isset($_COOKIE['moncookie'])) {
	$LoginPassword = explode("_",$_COOKIE['moncookie']);
	
	$pseudo   	= isset($_POST['pseudo']) ? Security::clean($_POST['pseudo']) : '';
	$password	= isset($_POST['password']) ? Security::clean($_POST['password']) : '';
	$actif		= isset($_POST['actif']) ? $_POST['actif'] : '';

	if(is_array($LoginPassword)) {

		$connexion = new Connexion_class($pseudo, $password, $actif);
		$verif = $connexion->VerifConnexion();	

		if($verif == 'success') {

			$pseudo 	= Security::decrypt($LoginPassword[0]);
			$password 	= Security::decrypt($LoginPassword[1]);
			
			header('Location: index.php?body=compte_profil&type=compte');
		}
	}
}

Pouvez-vous essayer de m'aider s'il vous plait.
Je vous remercie
A voir également:

3 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
14 févr. 2015 à 21:12
'lut, ce que tu fais est un joli bazar...
Comment stockes-tu tes infos de session autre que le login/mdp?
Dans les cookies? Si c'est le cas, je me ramène sur ton site et chourre ton compte admin en moins de 20 secondes.

Non, ce qu'il faut faire, c'est utiliser http://php.net/manual/fr/function.session-start.php
session_start()
en début de chaque page PHP, et
$_SESSION
pour le stockage des infos.
Les sessions PHP utilisent un unique cookie nommé
PHPSESSID
par défaut, qui est un identifiant unique de session dont les infos sont stockées sur le serveur.
Ce cookie a par défaut une durée éphémère (jusqu'à la fermeture du navigateur), car la propriété
session.cookie_lifetime
est à 0 par défaut.
En changeant ce paramètre dans le php.ini ou en utilisant la fonction session_set_cookie_params($lifetime) avec $lifetime la durée de vie du cookie en secondes après chaque session_start(), on peut faire en sorte que la session soit retenue.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
14 févr. 2015 à 22:56
Bonjour
Oui excuse moi j'ain oublié de dire que effectivement j'ai session_star()
ensuite j'ai une methode sur les SESSIONS
	private function Session() {
		$sql = "SELECT *
				FROM tb_gestion_admin
				INNER JOIN tb_adherent
				ON tb_adherent.id_adherent = tb_gestion_admin.rid_adherent
				WHERE pseudo = :pseudo";
		$requete = $this->bdd->prepare($sql);
		$requete->execute(array('pseudo' => $this->pseudo));
		$result = $requete->fetch();
		$_SESSION['id_adherent'] = $result['id_adherent'];
		$_SESSION['prenom'] = $result['prenom'];
		$_SESSION['pseudo'] = $this->pseudo;

Merci
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
14 févr. 2015 à 23:00
J'espère que cette fonction n'est exécutée que lors de la connexion, car récupérer les infos depuis la BDD à chaque page serait inutile vu que ça persiste dans
$_SESSION
.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
15 févr. 2015 à 00:25
Oui au niveau connexion je pense avoir fait comme il faut.
Je voudrais savoir pourquoi ma page index.php j'ai uniquement poster le script qui doit servir à la reconnexion automatique, car le reste de ma page est sans intéret pour ça en fait.
Je ne voudrais pas changer de paramètre du php.ini je voudrais plutôt utiliser cette méthode.
Merci si tu as des exemple j'ai essayé ton lien il ne fonctionne pas.
Merci d'une éventulle.
0