Affichage de formulaire

Résolu
hystox Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
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

Twinpics
 
Bonsoir,
Comment est libellé le cookie lorsque tu le place avec setcookie() ?
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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   Statut Membre Dernière intervention  
 
"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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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   Statut Membre Dernière intervention  
 
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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