Connexion Auto avec COOKIE PHP

Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 15 févr. 2015 à 19:00
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 18 févr. 2015 à 15:17
Bonjour,
J'ai souhaité refaire un autre post beaucoup mieux explicatif concernant mon problème.
Je souhaite créer une re-connexion automatique avec COOKIE afin que le membre soit redirigé automatiquement sur son compte si il a coché la case se souvenir de moi lors de ça première connexion.
Mon fichier connexion.phpfait appel à une class et une méthode pour que le membre soit connecté, avec une fonction SESSION également et aussi une fonction qui crypte le pseudo et le password.
Si toutes les conditions sont bonnes et qu'il a coché la case, le COOKIE est créé.
L'utilisateur est reconnu en tant que membre jusqu'à là il n'y a pas de problème.
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;
	}
}
if (isset($erreur)) {
	echo output_errors($erreur);
}

Ensuite je souhaiterai que le COOKIE créé authentifie le membre afin qu'il soit redirigé directement sur son compte.
j'ai créé une page init.php qui est appelé par toutes les pages et sur la page index.php il y a la fameuse fonction session_strart();
Au niveau des includes tout est fait normalement.
Dans ce fichier je fait appel à une fonction qui décrypte le pseudo et le password.
Une dernière info le COOKIE est bien créé et reste créé tant que je ne me déconnecte pas, et à l'ouverture à nouveau du site je ne suis pas reconnu en tant que membre je suis obligé de me reconnecter malgrès la présence du COOKIE.
Mon problème viendrait uniquement de cette page, si vous pouvez me donner votre aide s'ils vous plait, il y a vraiment beaucoup de jour que je suis dessus.
Merci encore
init.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)) {
			$pseudo 	= Security::decrypt($LoginPassword[0]);
			$password 	= Security::decrypt($LoginPassword[1]);
			
		$connexion = new Connexion_class($pseudo, $password, $actif);
		$verif = $connexion->VerifConnexion();	

		if($verif == 'success') {
			header('Location: index.php?body=compte_profil&type=compte');
		}
	}
}

12 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
15 févr. 2015 à 19:40
'lut, dans init.php tu sembles vérifier la présence de paramètres
$_POST
alors qu'il n'y a pas besoin: le cookie sera présent généralement quand on ne passe pas par le formulaire de connexion, d'autant plus qu'après tu les "effaces" (par un nouveau scope de variables) avec les valeurs du cookie.

Autrement, j'ai eu un peu de mal à saisir ton problème, mais j'ai compris. Est-ce qu'au moins le code que tu as écrit pour l'autologin est exécuté? Teste avec des
echo
de debug par exemple.
Car ton code semble correct et fonctionnel pourtant...
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 à 20:20
Bonjour
Merci pour ta réponse, je vais essayé quelque chose car je crois que tu m'a mis la puce à l'oreille, je vais tester ça ce soir.
Merci je te tiens au courant.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
16 févr. 2015 à 16:18
bonjour,
je reviens vers toi désespérément.
Je n'arrive pas à résoudre mon problème de COOKIE pour la reconnexion automatique.
Avec une petite modif de ce fichier je suis redirigé vers la page compte_profil du moins l'URL mais la page me spécifie "La page n'est pas redirigée correctement".
Pourrai tu s'il te plait m'aider un peu si tu as le temps, dis moi si tu aurai besoin de mon fichier de class.
Je te remercie
page
init.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('cliquedecruet', $LoginPassword, time() + 3600 * 24 * 365, null, null, false, true);
		}
		
		header('Location: index.php?body=compte_profil&type=compte');
	
	} else {
		$erreur[] = $verif;
	}
}

la page connexion.php est plus haute rien n'est changé, je pense vraiment que cela viens de la page init.php
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
16 févr. 2015 à 16:24
Le problème ici est que tu fais une redirection en boucle: le cookie étant présent, chaque page que tu consultes, y compris celle sur laquelle tu rediriges, te fera l'autologin et donc la redirection. Il faut donc ajouter la non-connexion comme impératif dans ta condition
if
.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
16 févr. 2015 à 17:36
Bonjour
C'est pas possible j'ai envoyé la mauvaise page en fait, veuillez m'excuser, je vous envoie mes 2 page
page 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('cliquedecruet', $LoginPassword, time() + 3600 * 24 * 365, null, null, false, true);
		}
		
		header('Location: index.php?body=compte_profil&type=compte');
	
	} else {
		$erreur[] = $verif;
	}
}

Cette page de connexion fonctionne bien

page init.php
if(!isset($_SESSION['id_adherent']) && isset($_COOKIE['cliquedecruet'])) {
    $values = Security::clean($_COOKIE['cliquedecruet']);
    $values = explode('_', $values);

	if(count($values) == 2) {
		$pseudo = Security::decrypt($values[0]);
		$password = Security::decrypt($values[1]);

		$actif = isset($_POST['actif']) ? $_POST['actif'] : '';

		$LoginPassword = new Connexion_class($pseudo, $password, $actif);

		if($LoginPassword->VerifConnexion()) {
			header('Location: index.php?body=compte_profil&type=compte');
			exit();
		}
		
	} else {
		$erreur[] =  'Le Cookie est invalide';
	}
}

C'est cette page qui pose problème je pense.
Merci à vous
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
16 févr. 2015 à 20:47
C'est cette page qui pose problème je pense.
OK, mais quel est le problème maintenant???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
16 févr. 2015 à 20:51
Bonjour
Je n'ai pas pu résoudre mon soucis avez-vous une idée, une infos à me donner. Comme je l'ai dit au niveau de ma connexion il n'y a pas de problème, mais lorsque je coche la case se souvenir de moi le COOKIE est bien créé et lorsque je ferme le navigateur et que je l'ouvre de nouveau le COOKIE est toujours présent.
Merci beaucoup de votre aide.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 févr. 2015 à 11:53
Bonjour
Mon soucis c'est que ma page est redirigé à l'adresse du compte c'est à dire ici
header('Location: index.php?body=compte_profil&type=compte');

mais elle ne s'affiche pas cema me met
La page n'est pas redirigée correctement

Pourtant l'URL est la bonne adresse.
Merci
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
17 févr. 2015 à 11:55
Ça fait encore une redirection en boucle? As-tu mis la bonne condition pour l'autologin, à savoir (CookiePrésent ET NON Connecté)?
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 févr. 2015 à 12:01
Bonjour
Je ne comprends pas sur ma page init.php la condition est bien si la SESSION n'existe pas et le COOKIE est bien présent.
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
17 févr. 2015 à 12:03
Si tu utilises Chrome/Chromium ou Firefox, ouvre les outils développeur avec Ctrl+Shift+I, va dans l'onglet réseau, et recharge ta page. Y a-t-il plein de requêtes ou une/deux? Quelles en sont les en-têtes Header (visibles quand on clique dessus)?
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 févr. 2015 à 12:21
j'ai bien ouvert l'onglet réseau, excuse moi je ne vois pas ce que tu veux dire par:
Quelles en sont les en-têtes Header (visibles quand on clique dessus)?
il y a entete de la réponse
entete de la requete

Merci de ton aide
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
17 févr. 2015 à 12:21
En-têtes de la réponse
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 févr. 2015 à 12:28
entete de réponse il y a
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
Date: Tue, 17 Feb 2015 11:25:08 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive: timeout=5, max=100
Pragma: no-cache
Server: Apache/2.2.17 (Win32) PHP/5.3.4
Transfer-Encoding: chunked
X-Powered-By: PHP/5.3.4
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
17 févr. 2015 à 12:29
Étrange, il n'y a pas de redirection!
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 févr. 2015 à 12:35
je n'était pas sur la bonne page en fait

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: Keep-Alive
Content-Length: 6
Content-Type: text/html; charset=utf-8
Date: Tue, 17 Feb 2015 11:33:07 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive: timeout=5, max=100
Location: index.php?body=compte_profil&type=compte
Pragma: no-cache
Server: Apache/2.2.17 (Win32) PHP/5.3.4
X-Powered-By: PHP/5.3.4
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 févr. 2015 à 13:49
je viens de modifier mon fichier init.php et alors la page n'est pas redirigée par contre le COOKIE existe toujours.
if(!isset($_SESSION['id_adherent']) && isset($_COOKIE['cliquedecruet'])) {
    $values = Security::clean($_COOKIE['cliquedecruet']);
    $values = explode('_', $values);

	if(count($values) == 2) {
		$pseudo = Security::decrypt($values[0]);
		$password = Security::decrypt($values[1]);

		$actif = isset($_POST['actif']) ? $_POST['actif'] : '';

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

		if($verif == 'success') {
			header('Location: index.php?body=compte_profil&type=compte');
			exit();
		}
		
	} else {
		$erreur[] =  'Le Cookie est invalide';
	}
}

Merci
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
18 févr. 2015 à 15:17
Bonjour,
Toujours avec mon problème de COOKIE pour la reconnexion automatique.
Je n'arrive pas à comprendre pourquoi cela ne fonctionne pas.
Si vous pouvez m'aider, je serai très content de pouvoir mettre en place cet autologin.
Merci beaucoup.
0