Création de COOKIE

Résolu/Fermé
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 29 juil. 2014 à 09:23
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 10 sept. 2014 à 20:56
Bonjour,
Je souhaiterai créer un cookie, mais malheureusement je ne sais pas trop où inclure mes scripts par rapport à mes pages.
Pouvez-vous essayer de m'aiguiller un peu s'ils vous plait.
En vous remerciant.

J'ai une page index.php
J'ai une page ou il y a mon formulaire, voici la case à cocher
<div name="SeSouvenir" id="SeSouvenir">
	<fieldset class="fieldset_connexion">
				<input type="checkbox"><span class="SeSouvenir">Se souvenir de moi</span>
	</fieldset>
</div>

Et ma page de vérification
<?php
//on teste si le visiteur a soumis le formulaire
if (!empty($_POST)){
    
    //on vérifie si le login et password ne sont pas vide, nulle ou non définie
    if (!empty($_POST['login']) && (!empty($_POST['pass']))){

        $login = Security::clean($_POST['login']);
        $pass = Security::clean($_POST['pass']); 
        $pass = Security::hash($pass);
        
	//on sélectionne les champs que l'on veut récupèrer et on teste les champs login et password
	$sql = ('SELECT *
			FROM tb_gestion
			INNER JOIN (tb_adherent
			INNER JOIN tb_adherent_gestion
			ON tb_adherent.id_adherent = tb_adherent_gestion.rid_adherent)
			ON tb_gestion.id_gestion = tb_adherent_gestion.rid_gestion
			WHERE login=:login
			AND pass=:pass') or die(print_r($bdd->errorInfo()));
	$requete = $bdd->prepare($sql);
	
    //on execute la requète en lui transmettant la liste des paramètres
    $requete->execute(array(
							':login' => $login,
							':pass' => $pass
							));
	
    //on affiche les reponses de la requète dans un tableau
    $donnees = $requete->fetch();

        //si le password est différent on met un message d'erreur
        if ($donnees['pass'] != $pass){
            echo "<span class='erreur_connexion'>Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ?</br>Dans ce cas désolé...</span>";

        }else{		
			//on cré des variables accessibles depuis toutes les pages
			$_SESSION['login']            	= $login;
			$_SESSION['id_adherent']      	= $donnees['id_adherent'];
			$_SESSION['nom']              	= $donnees['nom'];
			$_SESSION['prenom']           	= $donnees['prenom'];
			$_SESSION['adresse_mail']     	= $donnees['adresse_mail'];
			$_SESSION['demission']     		= $donnees['demission'];
			$_SESSION['nom_gestion']     	= $donnees['nom_gestion'];

			// Utiliser la redirection ---------------
			redir("index.php?body=compte_profil&type=compte");
		}
    }else{
		echo "<span class='erreur_connexion'>Veuillez remplir tous les champs !!!</span>";
	}
}
?>

Merci de votre aide.
A voir également:

33 réponses

labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
30 juil. 2014 à 08:05
Bonjour,
Un peu d'aide s'ils vous plait, je suis vraiment perdu.
Merci beaucoup

Voilà ce que j'ai fait dans ma page index.php avant le "DOCTYPE"
if(isset($_COOKIE['COOKIE_MONSITE']) && !isset($_SESSION['login'])){
    $COOKIE_MONSITE = $_COOKIE['COOKIE_MONSITE'];
    $COOKIE_MONSITE = explode('-----', $COOKIE_MONSITE);
    $sql = ('SELECT * FROM tb_adherent WHERE id_adherent=:id_adherent');
    $requete = $bdd->prepare($sql);
    $requete->execute(array('id_adherent' => $COOKIE_MONSITE[0]));
	$donnees = $requete->fetch();	
	$key = sha1($donnees['nom'] . $donnees['pass'] . $_SERVER['REMOTE_ADDR']);
    if($key == $COOKIE_MONSITE[1]){
        $_SESSION['login'] = (array)$donnees;
        setcookie('COOKIE_MONSITE', $donnees->id_adherent . '-----' . $key, time() + 3600 * 24 * 3, '/', 'localhost', false, true);
    }else{
        setcookie('COOKIE_MONSITE', '', time() - 3600, '/', 'localhost', false, true);
    }
}


et dans ma page de vérification tout de suite après avoir déclaré les variables de SESSION
    if(isset($_POST['SeSouvenir'])){
        setcookie('COOKIE_MONSITE', $donnees->id_adherent . '-----' . sha1($donnees->nom . $donnees->pass . $_SERVER['REMOTE_ADDR']), time() + 3600 * 24 * 3, '/', 'localhost', false, true);

    }

Merci
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
30 juil. 2014 à 12:25
voila un exemple :)

<?php
//on teste si le visiteur a soumis le formulaire
if (!empty($_POST)){
    
    //on vérifie si le login et password ne sont pas vide, nulle ou non définie
    if (!empty($_POST['login']) && (!empty($_POST['pass']))){

        $login = Security::clean($_POST['login']);
        $pass = Security::clean($_POST['pass']); 
        $pass = Security::hash($pass);
        
	//on sélectionne les champs que l'on veut récupèrer et on teste les champs login et password
	$sql = ('SELECT *
			FROM tb_gestion
			INNER JOIN (tb_adherent
			INNER JOIN tb_adherent_gestion
			ON tb_adherent.id_adherent = tb_adherent_gestion.rid_adherent)
			ON tb_gestion.id_gestion = tb_adherent_gestion.rid_gestion
			WHERE login=:login
			AND pass=:pass') or die(print_r($bdd->errorInfo()));
	$requete = $bdd->prepare($sql);
	
    //on execute la requète en lui transmettant la liste des paramètres
    $requete->execute(array(
							':login' => $login,
							':pass' => $pass
							));
	
    //on affiche les reponses de la requète dans un tableau
    $donnees = $requete->fetch();

        //si le password est différent on met un message d'erreur
        if ($donnees['pass'] != $pass){
            echo "<span class='erreur_connexion'>Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ?</br>Dans ce cas désolé...</span>";

        }else{		
			//on cré des variables accessibles depuis toutes les pages
			$_SESSION['login']            	= $login;
			$_SESSION['id_adherent']      	= $donnees['id_adherent'];
			$_SESSION['nom']              	= $donnees['nom'];
			$_SESSION['prenom']           	= $donnees['prenom'];
			$_SESSION['adresse_mail']     	= $donnees['adresse_mail'];
			$_SESSION['demission']     		= $donnees['demission'];
			$_SESSION['nom_gestion']     	= $donnees['nom_gestion'];
			if(isset($_POST['SeSouvenir']))
			{
				setcookie('COOKIE_MONSITE', array('id' => $donnees['id_adherent']), time() + 2592000);
			}
			// Utiliser la redirection ---------------
			redir("index.php?body=compte_profil&type=compte");
		}
    }else{
		echo "<span class='erreur_connexion'>Veuillez remplir tous les champs !!!</span>";
	}
}

if(isset($_COOKIE['COOKIE_MONSITE']))
{
        $cookieData = unserialize(stripslashes($_COOKIE['COOKIE_MONSITE']));
        $cookieData = array(
            'id' => (isset($cookieData['id']) ? (int) $cookieData['id'] : 0),
            );
		$_SESSION['id_adherent'] = $cookieData['id'];
}
?>

0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
30 juil. 2014 à 12:34
Bonjour,
Je viens de voir ton post je vais essayer tout ça te te tiens au courant, mais en attendant un grand merci.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
Modifié par labourette le 30/07/2014 à 13:01
Bonjour,
A priori ça ne m'affiche pas le COOKIE
j'ai fait <?php var_dump($_COOKIE);?>
Mais rien peut-être c'est dû à mon formulaire, voici la partie de la case à cocher

<div name="SeSouvenir" id="SeSouvenir">
<fieldset class="fieldset_connexion">
<input type="checkbox" ><span class="SeSouvenir">Se souvenir de moi</span>
</fieldset>
</div>
Merci encore de ton aide.
Cordialement
0

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

Posez votre question
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
30 juil. 2014 à 13:10
et comme ceci :
<div id="SeSouvenir">
	<fieldset class="fieldset_connexion">
		<input type="checkbox" name="SeSouvenir"><span class="SeSouvenir">Se souvenir de moi</span>
	</fieldset>
</div>

0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
30 juil. 2014 à 15:08
Bonjour
J'arrive toujours à me connecter mais aucun COOKIE n'est créé.
Il ne faut peut-être pas pour créé un COOKIE l'appeler en début de page?
Merci si tu as encore un peu de temps pour m'aider.
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
30 juil. 2014 à 17:14
tu peux mettre ca en début de ton fichier php :
ini_set('session.use_cookies', '1');
ini_set('session.use_only_cookies', '1');


0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
31 juil. 2014 à 07:09
Bonjour,
Toujours pas réussi à afficher le COOKIE.
J'y voyais plus simple que ça, vu les tutos que j'ai pu lire.
J'espère que tu pourras encore me venir en aide sans quoi je ne penses pas pouvoir y arriver seul.
Merci encore.
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
31 juil. 2014 à 07:56
pour voir si ton cookie a fonctionne tu peux regarder Outils/Options/Vie Privées/supprimmé des cookies Spécifique
normalement tu peux retrouver ton cookie $_COOKIE['COOKIE_MONSITE'] , si c'est le cas c'est ton site qui n'accepte pas les cookies , j'y pense mais change :SeSouvenir en sesouvenir desfois c'est à causes des majuscules qui ne prend pas en compte ;)
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
Modifié par mandolorien le 31/07/2014 à 08:40
bon double post :/

alors je viens de faire un formulaire chez moi :) dis moi si il fonctionne .

tu creer un fichier dans un dossier en local nommé index.php :
<?php
if(isset($_POST["connexion"]))
{
	if(isset($_POST["username"]) && !empty($_POST["username"]))
	{
		$username = htmlentities($_POST['username'],ENT_QUOTES,'UTF-8');
		if(isset($_POST["sesouvenir"]))
		{
			setcookie("username",$username, time() + 2592000);
			setcookie("time", time() + 2592000, time() + 2592000);
		}
		$_SESSION["username"] = $username;
	}
}

if(isset($_SESSION["username"]))
{
?>
	Bienvenue :<?php echo $_SESSION["username"]; ?> vous etes actuellement enregistré sur une session
	<br> <a href="logout_session.php" title="deconnexion">se deconnecter</a>
<?php
}
else
{
	if(isset($_COOKIE["username"]))
	{
		$cookieusername = $_COOKIE["username"];
		$cookietime = intval($_COOKIE["time"]);
		?>
			Bienvenue : <?php echo $cookieusername; ?> vous etes actuellement enregistre sur un cookie jusqu'au <?php echo date("Y-m-d H:i:s",$cookietime); ?>
			<br> <a href="logout_cookie.php" title="deconnexion">se deconnecter</a>
		<?php
	}
	else
	{
?>
		<form method="post" action="">
			<label>ton nom:</label><input name="username" type="text" />
			<div id="SeSouvenir">
				<fieldset class="fieldset_connexion">
					<input type="checkbox" name="sesouvenir"><span class="SeSouvenir">Se souvenir de moi</span>
				</fieldset>
			</div>
			<input type="submit" name="connexion" />
		</form>
<?php
	}
}
?>


puis tu créer un autre fichier nommé logout_session.php
<?php
if(isset($_SESSION))
{
	session_destroy();
	unset($_SESSION);
}
header("Refresh: ". 1 ."; Url = index.php");
?>


et enfin tu créer un fichier nommé logout_cookie.php:

<?php
setcookie("username","", time()-100000);
setcookie("time",time()-100000, time()-100000);
header("Refresh: ". 1 ."; Url = index.php");
?>

Admire la personne qui te critique , car prisonniere de ca propre jalousie elle ne fais que t admirer
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
31 juil. 2014 à 12:16
Bonjour,
Merci beaucoup ça à l'air de fonctionner après plusieurs essais.
Je vais essayer de l'adapter à mon site, par contre quelques questions me viennent si je peux me permettre.
je me suis connecté avec mon login de ma BDD et ça marche.
Pourquoi aucune requète pour récupérer les champs de ma BDD?
Excuse moi il y a pas trop longtemps que j'explore le PHP: par rapport à la connexion avec mon login je voudrais comprendre.
par contre je ne sais pas trop si je vais avoir les compétences pour l'adapter à mon site, je vais essayer.
Merci
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
31 juil. 2014 à 12:44
bah la c'était pour l'exemple :) j'ai effectué l'exemple sans requêtes puisque je ne connais pas ta BDD etc :)

si tu n'arrive pas à l'adapter , je t'aiderai sans problème ;)


0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
1 août 2014 à 17:24
Bonjour
Cela m'ennuie de te demander encore ton aide, mais je n'arrive pas à adapter les COOKIE sur mon site.
Je t'envoie la page de "connexion_verif" et la page de "connexion_form"
Ma table c'est "tb_adherent.
Merci encore

page connexion_form.php
<!--#######################################################################################################################################-->
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
							<?php if (isset($_SESSION['login']) && $_SESSION['login'] != NULL) { ?>
							$('#SeConnecter, #DeconnexionReussie, #SeSouvenir').hide();
							<?php } if (!isset($_SESSION['login'])) { ?>
							$('#DeconnexionReussie').hide();
							<?php } if (!isset($_SESSION['login'])) { ?>
							$('#SeDeconnecter').hide();
							<?php } ?>
							})
</script>
<!--#######################################################################################################################################-->
<form name="SeConnecter" id="SeConnecter" action="index.php?body=connexion_verif&type=accueil" method="post" enctype="multipart/form-data">
    <fieldset class="fieldset_connexion">
        <legend class="legend_connexion">Se connecter</legend>
            <center><b><p style="margin: 5px; padding: 5px;">Réservé aux membres</p></b></center>

                <label for="login">Login :</label>	 
                <center><input type="text" id="login" name="login" class="login" value="<?php if (isset($_POST['login'])){echo htmlentities($_POST['login']);}?>" tabindex="1"/></center> 
<br/>	
                <label for="motdepasse">Mot de passe :</label> 
                <center><input type="password" id="motdepasse" name="pass" class="motdepasse" value="<?php if (isset($_POST['pass'])){echo htmlentities($_POST['pass']);}?>" tabindex="2"/></center> 
<br/>
                <center><input  src="image/envoyer.png" width="70%" type="image" name="connexion" class="connexion_form" border="0" Value="" align="middle"/></center>  
	</fieldset>
</form>
<!--#######################################################################################################################################-->
<div id="SeSouvenir">
	<fieldset class="fieldset_connexion">
		<input type="checkbox" name="SeSouvenir"><span class="SeSouvenir">Se souvenir de moi</span>
	</fieldset>
</div>
<!--#######################################################################################################################################-->
<div name="SeDeconnecter" id="SeDeconnecter">
	<fieldset class="fieldset_connexion">					
				<span class="SeDeconnecter"><a href="index.php?erreur=delog">Se Déconnecter</a></span>
	</fieldset>
</div>
<!--#######################################################################################################################################-->
<div name="DeconnexionReussie" id="DeconnexionReussie">
	<fieldset class="fieldset_connexion">
	
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog")) {
		echo '<span class="DeconnexionReussie">Déconnexion réussie... </br>A bientôt '.$_SESSION['prenom'].' !</br></br>';
		echo '<center>';
		echo '<a href="index.php?body=accueil&type=accueil">[Retour Formulaire]</a></span>';
		echo '</center>';
		session_unset();
?>

<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
							$('#DeconnexionReussie').show();
							$('#SeDeconnecter').hide();
							<?php } ?>
							})
</script>

	</fieldset>
</div>	
<!--#######################################################################################################################################-->

page connexion_verif.php
<?php
//on teste si le visiteur a soumis le formulaire
if (!empty($_POST)){
    
    //on vérifie si le login et password ne sont pas vide, nulle ou non définie
    if (!empty($_POST['login']) && (!empty($_POST['pass']))){

        $login = Security::clean($_POST['login']);
		
        $pass = Security::clean($_POST['pass']); 
        $pass = Security::hash($pass);
        
	//on sélectionne les champs que l'on veut récupèrer et on teste les champs login et password
	$sql = ('SELECT *
			FROM tb_gestion
			INNER JOIN (tb_adherent
			INNER JOIN tb_adherent_gestion
			ON tb_adherent.id_adherent = tb_adherent_gestion.rid_adherent)
			ON tb_gestion.id_gestion = tb_adherent_gestion.rid_gestion
			WHERE login=:login
			AND pass=:pass') or die(print_r($bdd->errorInfo()));
	$requete = $bdd->prepare($sql);
	
    //on execute la requète en lui transmettant la liste des paramètres
    $requete->execute(array(
							':login' => $login,
							':pass' => $pass
							));
	
    //on affiche les reponses de la requète dans un tableau
    $donnees = $requete->fetch();

        //si le password est différent on met un message d'erreur
        if ($donnees['pass'] != $pass){
            echo "<span class='erreur_connexion'>Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ?</br>Dans ce cas désolé...</span>";
        }
		else{		
			//on cré des variables accessibles depuis toutes les pages
			$_SESSION['login']            	= $login;
			$_SESSION['id_adherent']      	= $donnees['id_adherent'];
			$_SESSION['nom']              	= $donnees['nom'];
			$_SESSION['prenom']           	= $donnees['prenom'];
			$_SESSION['adresse_mail']     	= $donnees['adresse_mail'];
			$_SESSION['demission']     		= $donnees['demission'];
			$_SESSION['nom_gestion']     	= $donnees['nom_gestion'];

			// Utiliser la redirection ---------------
			redir("index.php?body=compte_profil&type=compte");
		}
    }
	else{
		echo "<span class='erreur_connexion'>Veuillez remplir tous les champs !!!</span>";
		}
}
?>
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
1 août 2014 à 19:12
Tu ajoutes ca dans une page qui est souvent requise ;)
<?php
if(isset($_COOKIE) && !isset($_SESSION))
{
	$cookieid= intval($_COOKIE["id_adherent"]);
	# requete pour voir si l'id existe !
	$sql = ('SELECT *
				FROM tb_gestion
				INNER JOIN (tb_adherent
				INNER JOIN tb_adherent_gestion
				ON tb_adherent.id_adherent = tb_adherent_gestion.rid_adherent)
				ON tb_gestion.id_gestion = tb_adherent_gestion.rid_gestion
				WHERE id_adherent=:id_adherent') or die(print_r($bdd->errorInfo()));
		$requete = $bdd->prepare($sql);
		//on execute la requète en lui transmettant la liste des paramètres
		$requete->execute(array(
							':id_adherent' => $cookieid
							));
		$result = $requete->rowCount();
		if($result > 0)
		{
			$donnees = $requete->fetch();
			$_SESSION['id_adherent']      	= $donnees['id_adherent'];
			$_SESSION['nom']              	= $donnees['nom'];
			$_SESSION['prenom']           	= $donnees['prenom'];
			$_SESSION['adresse_mail']     	= $donnees['adresse_mail'];
			$_SESSION['demission']     		= $donnees['demission'];
			$_SESSION['nom_gestion']     	= $donnees['nom_gestion'];
		}
		$donnees->closeCursor();
}

0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
4 août 2014 à 13:12
Bonjour
Je reviens vers toi car malheureusement je n'arrive pas à créer un COOKIE.
dans ma page connexion_verif.php

on test si le visiteur a soumis le formulaire
on vérif le login et le pass
requète pour sélectionner les champs et on teste login et pass
on éxecute la requète
on affiche la réponse' dans un tableau
on affiche les messages d'erreur
sinon on cré les variables de SESSION

En fait j'ai tourné ça dans tous les sens, je ne sais pas à quel moment je doit créer un COOKIE.
Peux tu encore m'aider s'il te plait.
J'ai adapté ce code ci-dessous mais ça me génère une erreur.
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in ........

Merci encore
	$usr = trim(mysql_real_escape_string($_POST['login']));
	$pwd =trim(mysql_real_escape_string(md5($_POST['pass'])));

		if($usr && $pwd){

			$bdd = mysql_query("SELECT * FROM tb_adherent WHERE login = '".$usr."' AND pass= '".$pwd."' ");

				if(mysql_num_rows($bdd) > 0){//on verifie si le pseudo et le mot de passe sont correctes.
					$donnees=mysql_fetch_assoc($bdd);

					$m_id = $donnees['id_adherent'];
					$m_username = $donnees['login'];
					$m_password = $donnees['pass'];
					$mnt=time();

						if($_POST["SeSouvenir"]=="SeSouvenir"){//on vérifie si on veut garder la session active(se souvenir de moi).
							$temp_cookie=time()+3600*24*30;// la durée du cookie, 3600*24*30 en secondes=30jours.
							// on crée les cookies
							setcookie("id_adherent",$_SESSION['id_adherent'],$temp_cookie);
							setcookie("prenom",$_SESSION['prenom'],$temp_cookie);
						}

							// on crée les sessions
							$_SESSION['id_adherent'] = $m_id;
							$_SESSION['prenom'] = $m_username;

							echo "Vous êtes connecté ".$m_username."."; 
							echo '';//rediriger le membre connecté vers la page d'accueil
				}else{
					//si les informations entrées ne sont pas correcte 
					echo"Le nom d'utilisateur ou le mot de passe est incorrecte.";
					}
		}else{
			// si on a laissé un champ vide
			echo"Veuillez entrer un nom d'utilisateur est un mot de passe";
			}
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
5 août 2014 à 08:26
le cookies de création doit se être placé lors de la création de la session.

ensuite le cookie qui va être utilisé ne doit pas être mis dans une page qui doit être exécuter par validation dans un champs submit , le cookie doit être appeler dans une page qui appelé partout , par exemple :

ta page config.php ;)
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
6 août 2014 à 23:42
Bonjour,
Alors voilà où j'en suis...
Lorsque je coche la case se souvenir de moi alors je cré un cookie
Lorsque je clic sur déconnecté je supprime le cookie et la SESSION se ferme bien sur
Mais lorsque le COOKIE est créé en fermant le navigateur le COOKIE est toujours présent mais je suis quand même obligé de me reconnecté.
As tu une idéé s'il te plait je te joint ce que j'ai mis en place.
Merci
mon fichier index.php
<?php session_start();?>
<?php
	//Si le COOKIE existe et une SESSION n'existe pas
	if(isset($_COOKIE) && !isset($_SESSION)){
		$cookieid= intval($_COOKIE["id_adherent"]);
		//requete pour voir si l'id existe
		$sql = ('SELECT *
				FROM tb_adherent
				WHERE id_adherent=:id_adherent') or die(print_r($bdd->errorInfo()));
		$requete = $bdd->prepare($sql);
		//on execute la requète en lui transmettant la liste des paramètres
		$requete->execute(array(':id_adherent' => $cookieid));

		$result = $requete->rowCount();
		if($result > 0){
			setcookie('clique', $donnees['id_adherent'] . sha1($donnees['login'] . $donnees['pass'] . $_SERVER['REMOTE_ADDR']), time() + 3600 * 24 * 3, '/', 'localhost', false, true);
		}
		else{
			setcookie('clique', '', time() - 3600, '/', 'localhost', false, true);
		}
	}
?>

mon fichier de vérification
<?php
//on teste si le visiteur a soumis le formulaire
if (!empty($_POST)){

    //on vérifie si le login et password ne sont pas vide, nulle ou non définie
    if (!empty($_POST['login']) && (!empty($_POST['pass']))){

        $login = Security::clean($_POST['login']);

        $pass = Security::clean($_POST['pass']); 
        $pass = Security::hash($pass);

	//on sélectionne les champs que l'on veut récupèrer et on teste les champs login et password
	$sql = ('SELECT *
			FROM tb_gestion
			INNER JOIN (tb_adherent
			INNER JOIN tb_adherent_gestion
			ON tb_adherent.id_adherent = tb_adherent_gestion.rid_adherent)
			ON tb_gestion.id_gestion = tb_adherent_gestion.rid_gestion
			WHERE login=:login
			AND pass=:pass') or die(print_r($bdd->errorInfo()));
	$requete = $bdd->prepare($sql);

    //on execute la requète en lui transmettant la liste des paramètres
    $requete->execute(array(
							':login' => $login,
							':pass' => $pass
							));

    //on affiche les reponses de la requète dans un tableau
    $donnees = $requete->fetch();

        //si le password est différent on met un message d'erreur
        if ($donnees['pass'] != $pass){
            echo "<span class='erreur_connexion'>Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</br> Peut-être n'êtes vous pas membre de la Clique ?</br>Dans ce cas désolé...</span>";
        }
		else{
			//on cré des variables accessibles depuis toutes les pages
			$_SESSION['login']            	= $login;
			$_SESSION['id_adherent']      	= $donnees['id_adherent'];
			$_SESSION['nom']              	= $donnees['nom'];
			$_SESSION['prenom']           	= $donnees['prenom'];
			$_SESSION['adresse_mail']     	= $donnees['adresse_mail'];
			$_SESSION['demission']     		= $donnees['demission'];
			$_SESSION['nom_gestion']     	= $donnees['nom_gestion'];

			//Si la case "remember" a été coché on défini la variable "setcookie"
			//Premier paramètre le nom du COOKIE
			//2 - id de l'utilisateur
			//3,4,5 - le login, le mot de pass, l'adresse ip crypter
			//6 - La durée du COOKIE
			//7 - Le chemin accessible du COOKIE
			//8 - Le nom du domaine
			if(isset($_POST['remember'])){
			    setcookie('clique', $donnees['id_adherent'] . sha1($donnees['login'] . $donnees['pass'] . $_SERVER['REMOTE_ADDR']), time() + 3600 * 24 * 3, '/', 'localhost', false, true);
			}
			// Utiliser la redirection ---------------
			redir("index.php?body=compte_profil&type=compte");
		}
    }
	else{
		echo "<span class='erreur_connexion'>Veuillez remplir tous les champs !!!</span>";
		}
}
?>
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
7 août 2014 à 19:37
Bonjour

Si tu as un peu de temps pour me donner ton avis sur mes fichiers, je suis sur la bonne voie je pense, mais encore quelques problème à résoudre pour que je puise passer à la suite.
Je te remercie
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
9 août 2014 à 08:04
Bonjour,
Je reviens vers toi car malgrès un COOKIE de créé, lorsque je réouvre mon navigateur je suis obligé de me reconnecter.
Peux tu encore m'aider s'il te plait, je ne vois pas ce qu'il faut faire.
Je te remercie
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
12 août 2014 à 07:57
c'est bizarre , j'ai réessayer et tous fonctionne , tu es sure que ton navigateur accepte les cookies ? :s
0