Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2012, 17h09   #1
Invité de passage
 
Homme
Inscription : février 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : février 2012
Messages : 4
Points : 0
Points : 0
Par défaut affichage variable dans cookie

Bonjour à tous,

je suis en train d'apprendre le php.
J'essaye de faire une page de connexion toute bête pour m'entrainer.
j'ai un formulaire où l'on tape son pseudo et son mot de passe, un script php qui vérifie le tout et si les informations sont correctes, redirige vers une page qui doit afficher le pseudo qui est enregistré dans un cookie.
Seulement voilà, cette page d'accueil m'affiche un magnifique message d'erreur :

Code :
1
2
3
4
( ! ) Notice: Undefined index: pseudo in C:\wamp\www\chess\compte\accueil.php on line 10
Call Stack
# Time Memory Function Location
1 0.0002 363440 {main}( ) ..\accueil.php:0
La première page est une page de connexion toute simple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 
	<head>
		<title>Connexion</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	</head>
 
	<body>
 
		<p>Veuillez entrer votre identifiant et votre mot de passe</p>
 
		<form action="login/check_login.php" method="post">
		<p>
			Identifiant :<input type="text" name="login" /><br />
			Mot de passe :<input type="password" name="password" /><br />
			<input type="submit" value="Envoyer" /> Si vous n'avez pas de compte, inscrivez vous <a href='inscription/inscription.php'>ici</a></p>
		</p>
 
	</body>
 
</html>
Ensuite j'envoie les paramètres dans une autre page php pour les vérifier :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
	try
	{
		// On se connecte à MySQL
		$bdd = new PDO('mysql:host=localhost;dbname=chess', 'root', '');
	}
	catch(Exception $e)
	{
	// En cas d'erreur, on affiche un message et on arrête tout
	die('Erreur : '.$e->getMessage());
	}
	// Si tout va bien, on peut continuer
 
	if (!empty($_POST['login']) AND (!empty($_POST['password']))) //les champs "login" et "password" ont été remplis	 			
		{
			$hache_password = sha1($_POST["password"]); //on hache le mot de passe
			$req = $bdd->prepare('select * from identifiant where login = :login and password = :password') or die(print_r($bdd->errorInfo())); // on prépare la requête pour les identifiants
			$req->execute(array('login' =>$_POST["login"], 'password' =>$hache_password)); //on exécute la requête avec les variables
			$resultat = $req->fetch(); //On récupère le résultat de la requête
			$req->closeCursor(); //libère la connexion du serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées
 
			if (!$resultat) //on vérifie que les identifiants existent
				{
					echo "<p>Votre identifiant et/ou votre mot de passe sont faux ! Veuillez retourner à la page de connexion en cliquant <a href='http://localhost/chess/index.php'>ici</a></p>";
				}
			else
				{			
					setcookie('pseudo', $_POST['login'], time() + 0);
					header('Location:/chess/compte/accueil.php'); //on redirige vers la page d'accueil					
				}						
		}
	else //un ou plusieurs champs n'ont pas été remplis			
		{
			echo "<p>Vous n'avez pas renseigné tous les champs ! Veuillez retourner à la page de connexion en cliquant <a href='http://localhost/chess/index.php'>ici</a></p>";
		}
 
?>
Puis si tout va bien je redirige vers une page pour tester l'affichage du pseudo après un simple bonjour.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 
	<head>
		<title>Accueil</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	</head>
 
	<body>
		Bonjour <?php echo $_COOKIE['pseudo']; ?>
	</body>
 
</html>
Mais j'ai tout le temps le même message d'erreur comme je vous l'ai écrit en début de message. Je ne vois pas mon erreur
Merci d'avance pour votre aide
greatzoulou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 18h11   #2
Membre expérimenté
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 414
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2006
Messages : 414
Points : 539
Points : 539
Envoyer un message via MSN à amoiraud
Salut,

Je pense que ca viens du time() + 0 que tu à mis dans ton setcookie(), en gros la il expire au même moment ou il est créé, met simplement 0 pour qu'il expire à la fin de la session.

Et pour éviter d'avoir le message d'erreur pour les utilisateurs pas connectés, je te conseil de l'afficher plutôt comme ca :
Code :
1
2
3
4
5
6
 
if (isset($_COOKIE['pseudo']) {
    echo 'Bonjour ' . $_COOKIE['pseudo'];
} else {
    echo 'Bonjour invité';
}
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 16h42   #3
Invité de passage
 
Homme
Inscription : février 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : février 2012
Messages : 4
Points : 0
Points : 0
Salut,

alors j'ai suivie ton conseil, voilà ce que j'ai fait pour la ligne setcookie :
Code :
1
2
 
setcookie('pseudo', $_POST['login'], time()+3600*24);
et j'ai rajouté ton bout de code pour ma page d'accueil :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
		<?php
			if (isset($_COOKIE['pseudo']))
				{
					echo 'Bonjour ' . $_COOKIE['pseudo'];
				} 	
			else 
				{
					echo 'Bonjour invité';
				}	
		?>
Mais j'ai beau taper le bon login et mot de passe, il m'affiche toujours le "bonjour invité" comme si le cookie n'existait pas. alors je vais regarder dans les cookie de mon navigateur et j'ai bien un cookie localhost ayant pour nom pseudo avec la bonne variable

Je suis un peu perdu, je ne vois pas ce que je fais de mal ...

Merci pour ton aide
greatzoulou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 16h49   #4
Membre expérimenté
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 414
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2006
Messages : 414
Points : 539
Points : 539
Envoyer un message via MSN à amoiraud
Et il t'affiche quoi si tu fait un print_r($_COOKIE); sur ta page d'accueil ?
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 18h13   #5
Invité de passage
 
Homme
Inscription : février 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : février 2012
Messages : 4
Points : 0
Points : 0
il m'affiche :
Array ( )

J'interprète ça comme s'il ne voyait pas la variable dans le cookie et donc ne l'affiche pas.

Pour info (je ne sais pas si c'est utile mais bon...) j'utilise firefox 10.0.1 et voila ce qu'il me donne comme info quand je jette un coup d'oeil dans mon cookie localhost :

Nom : pseudo
Contenu : toto
Hôte : localhost
Chemin : /chess/login (chemin dans le dossier /www de wampserver)
Envoi pour : Tout type de connexion
Expire : A la fin de la session

J'utilise wampserver 2.1 avec :
Apache 2.2.17
Mysql 5.5.8
PHP 5.3.5

En espérant avoir été le plus complet possible dans ma description du problème.
greatzoulou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2012, 14h19   #6
Invité de passage
 
Homme
Inscription : février 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : février 2012
Messages : 4
Points : 0
Points : 0
je suis vraiment bloqué avec ce problème. je ne sais aps trop quoi faire
greatzoulou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h34.


 
 
 
 
Partenaires

Hébergement Web