Affichage de formulaire

Résolu/Fermé
hystox Messages postés 21 Date d'inscription mercredi 3 novembre 2010 Statut Membre Dernière intervention 21 juillet 2013 - 13 nov. 2010 à 14:18
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 14 nov. 2010 à 13:12
Bonjour,

Je viens de créer un système d'informations. Le but est très simple : une personne rentre des informations dans un formulaire et je créé un cookie contenant les infos.

J'aimerais cependant que le formulaire s'affiche uniquement si les cookies n'existent pas dans le cas contraire je voudrais directement envoyé la personne sur une page ( bienvenue.php ).
Mais malgrès le code suivant, le formulaire s'affiche tout le temps même si les cookies existent.

Le code du formulaire :
<!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" >
    <head>
        <title>Formulaire d'infos</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<link href="style.css" rel="stylesheet" type="text/css" /> 
    </head>
        
    <body>
	<?php if (isset($_COOKIE['prenom, nom']))
	{
    header('Location: bienvenue.php');
	}
	else
	{
	?>
        <h1>Bonjour !</h1>
        <p>Merci de remplir les formulaires suivant qui nous permettrons de mieux vous connaitre :</p>
		
<form action="creationcookie.php" method="post">
<p>

<p> Votre nom : <input type="text" name="nom" /> </p>
<p> Votre prenom : <input type="text" name="prenom" /> </p>
    <input type="submit" value="Valider" />
	<?php } ?>
</form>
</body>
</html>


Merci d'avance de votre aide !

6 réponses

Bonsoir,
Comment est libellé le cookie lorsque tu le place avec setcookie() ?
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
13 nov. 2010 à 17:28
Salut.

Ton header() n'a aucune chance de fonctionner : il ne faut aucune sortie avant son appel.

$_COOKIE['prenom, nom'] : Essaye en le nommant "prenom_nom" (n'oublie pas de modifier le setcookie() )
0
hystox Messages postés 21 Date d'inscription mercredi 3 novembre 2010 Statut Membre Dernière intervention 21 juillet 2013
13 nov. 2010 à 19:54
"Ton header() n'a aucune chance de fonctionner : il ne faut aucune sortie avant son appel. "

Tout d'abord merci de ta réponse et excuse moi mais je suis débutant en PHP et je ne comprends pas trop.
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
13 nov. 2010 à 21:47
La fonction header() modifie les entêtes HTTP.
Ces entêtes sont envoyées avant le premier caractère.
Après leur envoie, il est impossible de les modifier.
Hors, le serveur aura déjà envoyé toute la partie avant "<?php" avant l'utilisation de header(), donc les entêtes sont déjà envoyées.

Ça devrait fonctionne ainsi :
<?php
if(isset($_COOKIE['prenom_nom'])) {
	header('Location: bienvenue.php');
	exit();
} ?><!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">
<head>
	<title>Formulaire d'infos</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>

	<h1>Bonjour !</h1>
	<p>Merci de remplir les formulaires suivant qui nous permettrons de mieux vous connaitre :</p>

	<form action="creationcookie.php" method="post">
		<p>Votre nom : <input type="text" name="nom" /></p>
		<p>Votre prenom : <input type="text" name="prenom" /></p>
		<input type="submit" value="Valider" />
	</form>

</body>
</html>
0

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

Posez votre question
hystox Messages postés 21 Date d'inscription mercredi 3 novembre 2010 Statut Membre Dernière intervention 21 juillet 2013
13 nov. 2010 à 23:24
Merci beaucoup !
J'ai essayé le code que tu as donné et presque tout fonctionne.
J'ai modifié des petites choses sinon sa ne fonctionne pas.

Code final :
<?php
if(isset($_COOKIE['prenom'])) {
	header('Location: bienvenue.php');
	exit();
}
else
{ ?><!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">
<head>
	<title>Formulaire d'infos</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>

	<h1>Bonjour !</h1>
	<p>Merci de remplir les formulaires suivant qui nous permettrons de mieux vous connaitre :</p>

	<form action="creationcookie.php" method="post">
		<p>Votre nom : <input type="text" name="nom" /></p>
		<p>Votre prenom : <input type="text" name="prenom" /></p>
		<input type="submit" value="Valider" />
	</form>

</body>
</html>
<?php } ?>
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
14 nov. 2010 à 13:12
Inutile de faire un else : le visiteur sera redirigé, donc il ne verra pas le formulaire.
En plus, la fonction exit() stoppe net l'exécution du code, donc ce qui suit n'est pas envoyé au navigateur.
0