Cookies

Résolu/Fermé
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 - 14 avril 2011 à 13:57
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 19 avril 2011 à 14:11
Bonjour,

Je suis en train de mettre en place un formulaire de connexion et je souhaiterai que l'utilisateur soit reconnu via les cookies.
Je commence tout juste avec PHP et après avoir lu des tutos la-dessus je ne sais pas par quel bout commencer.

Pouvez-vous m'aider ça serai très généreux de votre part.

Merci beaucoup, j'ai un formulaire sans BDD avec mot de passe: ens, login:ens c'est pour débuter afin de mieux comprendre disons plus facilement.

<form method="post" action="authentification.php" id="formulaire">
	<input type="text" name="prenom" id="prenom"/><label for="prenom" class="prenom">Prenom:</label>
	<input type="text" name="login" id="login"/><label for="login" class="login">Login :</label>
	<input type="text" name="password" id="password"/><label for="password" class="password">Password :</label>
	<input type="submit" name="submit" value="Envoyer" id="envoyer"/>
</form>	




15 réponses

JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 14/04/2011 à 16:29
Salut ...
1 - Tu commence par une condition qui verifie que les champs ont bien été remplis.
2 - Tu sécurise les variables $_POST.
3 - Avec bdd, tu fait une requête vers la base de données qui vérifie si l'utilisateur existe.
3.1 - Si c'est le cas(1), tu vérifie si le mot de passe entré correspond au mot de passe stocké dans la bdd.
3.1.1 - Si c'est le cas(2), alors tu crée un cookie ou tu y stocke par exemple le pseudo de l'utilisateur.
3.1.2 - Si c'est pas le cas(2), tu affiche un message d'erreur, comme quoi le mot de passe est incorrect.
3.2 - Si c'est pas le cas(1), ça veut dire que le pseudo n'existe pas dans la bdd, or, tu peut lui proposer de s'inscrire avec ce dernier.
4 - Sans bdd, je vois pas l'intérêt.

a+
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
15 avril 2011 à 11:17
Bonjour

Pouvez-vous me dire ou mon script de ma redirection est faux.
Ca ne fonctionne pas tout en sachant que mon login et mot de passe c'est le même "ens" j'ai fait ça pour commencer après je ferai avec une BDD.
Toutes mes vérifications au niveau login et mot de passe sont bien faites.
Merci beaucoup
<?php
if(!isset($_COOKIE['login'])){
Setcookie('login', 'ens', time()+3600);
echo ("c'est votre première visite");
echo ("$_COOKIE['login']."<br/>";
}
else{
Setcookie('login', 'ens', time()+3600);
echo ("Ce n'est pas votre première visite");
echo ("$_COOKIE['login']."<br/>";
}
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 15/04/2011 à 12:23
Salut, Essaye avec setcookie, sans majuscule ...

EDIT :
echo "c'est votre première visite";
echo $_COOKIE['login']."<br/>";
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
15 avril 2011 à 12:34
Bonjour tu peux me dire si les données dans setcookie c'est juste
en sachant comme je te l'ai dit le login et mot de passe c'est "ens"

Merci

<?php
if(!isset($_COOKIE['login'])){
setcookie('login', 'ens', time()+3600);
echo ("c'est votre première visite");
echo ("$_COOKIE['login']."<br/>";
}
else{
setcookie('login', 'ens', time()+3600);
echo ("Ce n'est pas votre première visite");
echo ("$_COOKIE['login']."<br/>";
}
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
15 avril 2011 à 13:03
Oui, c'est juste, ...Pourquoi, ça fonctionne pas ??!
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
15 avril 2011 à 13:23
je ne sais pas ça devrait m'afficher si il y a pas de cookie de créer
au moins "c'est votre première visite" ?

Merci
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
15 avril 2011 à 13:41
<?php
if(!isset($_COOKIE['login'])){
setcookie('login', 'ens', time()+3600);
echo "c'est votre première visite";
}
else{
setcookie('login', 'ens', time()+3600);
echo "Ce n'est pas votre première visite : ";
echo $_COOKIE['login']."<br/>";
}
?>
0

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

Posez votre question
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
15 avril 2011 à 14:32
Merci ça fonctionne

Excuse moi il se peux que j'ai une autre question à se sujet.(cookies)

Je vais regarder ça et je te redit si ça na te dérange pas trop.
Merci
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
15 avril 2011 à 14:44
Voilà ce que j'ai fait tout en début de page avant tout code
<?php
setcookie('login', 'ens', time() + 365*34*3600, '/', 0);
setcookie('password', 'ens', time() + 365*34*3600, '/', 0);
?>

Tu peux me dire ce que tu en penses
Merci
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 15/04/2011 à 14:54
C'est pour quel intérêt ??

Edit: 24 a la place de 34 ...
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
15 avril 2011 à 15:02
sur le site que je teste en local c'est pour éviter que ça me redemande me me reconnecter à chaque fois que je vais sur mon site.
j'ai remplacé 34 par 24
Merci
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
15 avril 2011 à 15:07
C'est ok si c'est temporaire et si c'est en localhost ...
Sinon, tu devra tout supprimer une fois que t'utilisera les base de données, et pourquoi pas les sessions.
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
15 avril 2011 à 15:22
sur quel page je doit mettre ça?
car je n'arrive pas à créer mes cookies je regarde dans chrome mais il y en à pas de créer.
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 17/04/2011 à 11:50
Tu réserve un endroit dans tes pages spécial pour les connexion du membre ...genre une zone membre ...
tu crée une page par exemple login.php, et tu y colle le code qui suit ...
Puis dans la zone que t'as réserver, tu fait un include de la page login.php.
Donc si le cookie n'existe pas, dans cette zone apparaîtra un formulaire de connexion.
Sinon, c'est le pseudo de l'utilisateur qui sera afficher.

<?php        
// Connexion sans BDD        
if(!empty($_POST['login']) AND !empty($_POST['mdp']) AND !isset($_COOKIE['login'])) {        
  if($_POST['mdp'] == '123') { // Le mot de passe        
    setcookie('login', $_POST['login'], time()+3600); 
    header("Location: http:/".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
  }        
  else echo 'Mot de passe incorrect';
}        
elseif(isset($_COOKIE['login'])) {        
  setcookie('login', $_COOKIE['login'], time()+3600);        
  echo "Bonjour Mr/Mme. ".$_COOKIE['login']."<br>";        
  echo '<a href="http:/".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."?deco=ok">Deconnexion</a>';
}
else { ?>
  <form method="POST" action="http:/<?php echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>">
    <p>Psuedo :<input type="text" name="login" /></p>        
    <p>Mdp :<input type="password" name="mdp" /></p>        
    <p><input type="submit" value="Se connecter" /></p>        
  </form>        
<?php }        
if(isset($_GET['deco']) AND isset($_COOKIE['login']) AND $_GET['deco'] == 'ok') {
  setcookie('login', '', 0); // Pour détruire le cookie
  header("Location: http:/".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']");
}        
?>        


EDIT : Ajoute un slash a chaque http
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
17 avril 2011 à 09:55
Bonjour un grand merci de ton aide.
Peux tu juste me dire à quoi correspond cette adresse s'il te plait.
Merci et je suis en train d'essayer de comprendre ton script.

http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']">
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 17/04/2011 à 11:42
Oups, c'est plutôt ça ...

<form method="POST" action="http://<?php echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>">

ça correspond a l'adresse en cours...
Exemple si tu te trouve sur http://localhost/dossier/page_1.php Alors le code suivant ...<?php echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?> affichera cette derniere ...

Tu peut faure des tests...

PS :
$_SERVER['HTTP_HOST'] => http://localhost/
$_SERVER['REQUEST_URI'] => dossier/page_1.php
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
18 avril 2011 à 11:26
Bonjour merci encore de ton aide.

J'avance à petit pas et je pense avoir compris ton script d'ailleurs je l'ai commenté.
Peux tu me dire si c'est bon mes commentaires?

Et puis je te fait voir ma page complète lorsque le COOKIE est créé j'arrive sur la page index.php avec en tête "Bonjour Mr/Mme..." mais je souhaite afficher le menu "header" mais je n'arrive pas.
Aussi le lien de déconnexion qui ne fonctionnait pas.

Merci mille fois.

<?php
//vérifie que le formulaire a bien été soumis en fait si nos champs contienent bien un nom
//si les cookies n'existent pas on les cré
if(!empty($_POST['login']) AND !empty($_POST['password']) AND !isset($_COOKIE['login'])) {
	//redirection des pages suivant le statut de l'utilisateur
	if($_POST['password'] == 'ens') {
		setcookie('login', $_POST['login'], time()+3600);
		header("location: enseignant.php");
	}
	else echo 'Mot de passe incorrect';
}
elseif(isset($_COOKIE['login'])) {
	setcookie('login', $_COOKIE['login'], time()+3600);
	echo "Bonjour Mr/Mme. ".$_COOKIE['login']."<br>";
	echo '<a>Deconnexion</a>';
}
else { ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
<script type="text/javascript" language="javascript" src="jquery.js"></script>
<script type="text/javascript" language="javascript" src="script.js"></script>
	</head>

	<body>
<div data-role="page">
	<div data-role="header" data-theme="b">
		<h1><img src="image/logo.jpg" width="100%"/></h1>
		<div data-role="navbar">
				<ul>
					<li><a href="index.php" data-icon="home">Accueil</a></li>
					<li><a href="contact.php" data-icon="info">Contact</a></li>
				</ul>
		</div>
	</div>
			
	<div data-role="content">
		<form method="post" id="formulaire" action="http://<?php echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>">
			<div data-role="fieldcontain">
				<input type="text" name="login" id="login" value=""/><label for="login" class="login">Login :</label>
			</div>
			<div data-role="fieldcontain">
				<input type="text" name="password" id="password" value=""/><label for="password" class="password">Password :</label>
			</div>
			<div data-role="fieldcontain">
				<input type="submit" name="submit" value="Envoyer" id="envoyer"/>
			</div>

		</form>
<?php }
if(isset($_GET['deco']) AND isset($_COOKIE['login']) AND $_GET['deco'] == 'ok') {
setcookie('login', '', 0); // Pour détruire le cookie
header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
}
?>
	</div>	
</div>
	</body>
</html>

0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 19/04/2011 à 14:09
Re ...
C'est normal que le lien de déconnexion ne fonctionne pas, vu que ce que tu as mis n'a pas d'attribut href ...
Voila ce que ça devrais être ...
<a href="enseignant.php?deco=ok">Deconnexion</a>

C'est normal aussi qu'il n'affiche pas ton menu, vu que tu as fermer l'accolade de la condition ... => elseif(isset($_COOKIE['login'])) { } avant d'avoir inclus le menu ...
Qui veut dire que si le cookie existe, il n'affichera que se qui se trouve entre les deux accolades, alors pour afficher autre chose, il faut mettre ce "autre chose" entre les accolades précédentes, et non pas entre les accolades du else, sinon, il affichera le menu seulement dans le cas ou le cookie n'existe pas ...
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
19 avril 2011 à 05:34
Bonjour

Tout fonctionne ou presque il y a juste le lien de déconnexion qui ne produit aucun effet.
Merci beaucoup j'ai bien étudié ton script cela ma permis de bien le comprendre c'est nickel.
Encore mille fois merci.
Si tu peux juste me donner ton avis pour ce lien.
echo '<a href="http://"enseignant.php?deco=ok">Deconnexion</a>';

<?php }
if(isset($_GET['deco']) AND isset($_COOKIE['login']) AND $_GET['deco'] == 'ok') {
setcookie('login', '', 0); // Pour détruire le cookie
header("location: index.php");
}
?>
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 19/04/2011 à 14:11
J'ai fait un erreur, normalement c'est Sans http, ou bien http://localhost/ensignant.php ..

Si tu peux juste me donner ton avis pour ce lien.
Je comprend pas la question, une explication tu veut dire ??
0
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
19 avril 2011 à 10:18
Bonjour et un très grand merci pour tout.

Tout fonctionne à merveille.

Bonne continuation.
0