Affichage de formulaire

Résolu
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

  1. 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.
    1. 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 } ?>
      1. 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>
        1. "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.
          1. 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() )
            1. Bonsoir,
              Comment est libellé le cookie lorsque tu le place avec setcookie() ?