[RESOLU][HEADER] Solution ultime pour programmer propre ?

Solution ultime pour programmer propre ? [RESOLU][HEADER] - PHP - Programmation

Marsh Posté le 27-04-2004 à 20:58:16    

Bonjour à tous !
 
Et bien comme la plupart d'entre vous, je me retrouve confronté au problème du header (enfin le problème c'est pas le header, ce serait plutot moi   :pt1cable:  ).
 
Donc, j'ai une bête page bien présentée, bien propre sur elle avec un formulaire d'identification pour la page d'admin. Quand je m'identifie correctement, je voudrais bien évidemment aller sur une page plus ou moins identique à la première avec des liens spéciaux en lieu et place du formulaire d'identification.
 
Forcément, j'ai ça  

Code :
  1. if ($result2 == 0)
  2.         {
  3.         echo "echec de l'insertion";
  4.         }
  5. else
  6. { header("location: confirm.php" ); }


et qui bien sûr ne fonctionne pas puisque le header de la page est déjà passé depuis un moment !
 
Alors, c'est quoi l'astuce pour s'en sortir proprement ??? Je n'ai aucun impératif de présentation, le tout c'est que ça fonctionne correctement  :wahoo:  
 
 :jap:  bien de votre aide. Les réponses que j'ai trouvées suite à ma recherche restent relativement obscur pour moi  [:airforceone]  
 
 :hello:


Message édité par juanetfanny le 28-04-2004 à 09:56:41
Reply

Marsh Posté le 27-04-2004 à 20:58:16   

Reply

Marsh Posté le 27-04-2004 à 21:07:32    

ton code fonctionne parfaitement. il ne faut pas de code HTML AVANT le header. même pas un espace, même pas un retour à la ligne. voilà

Reply

Marsh Posté le 27-04-2004 à 23:13:51    

oui, c'est correct mais ça ne peut pas fonctionner justement parce qu'il est impossible de ne rien avoir avant le header (sauf si le site se résume à une page blanche !).
 
Pour essayer de contourner le problème ,j'ai mis ça tout en haut de ma première page (celle avec le formulaire) :
 

Code :
  1. <? $redirection = (isset($validation) ) ? $validation : Null;
  2. if ($redirection) {header("location: confirm.php" );} ?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0...........
  4. ......


 
 
et dans ma page, je teste si le formulaire est bien rempli :
 

Code :
  1. if ($result2 == 0)
  2.         {
  3.         echo "echec de l'insertion";
  4.         }
  5. else
  6. {
  7.  mail($email,"Votre inscription", "Bonjour $prenom $nom !\n\nVotre login
  8.  est :" . $pseudo . "\nVotre mot de passe : $password\n\n" );
  9.  $validation = 1;
  10. }


 
Je crée donc la variable $validation que je teste en haut de page mais elle n'est pas globale donc cela ne fonctionne pas  [:bounty]  
 
Est-ce qu'il existe une solution pour résoudre ce problème ?
 
 :jap:  d'avance
 :hello:


Message édité par juanetfanny le 28-04-2004 à 08:24:13
Reply

Marsh Posté le 27-04-2004 à 23:20:10    

Ah oui, j'ai essayé ça aussi :
 

Code :
  1. if ($result2 == 0)
  2.           {
  3.             echo "echec de l'insertion";
  4.           }
  5.    else
  6.      
  7.    {
  8.       mail($email,"Votre inscription", "Bonjour $prenom $nom !\n\nVotre login
  9.       est :" . $pseudo . "\nVotre mot de passe : $password\n\n" );
  10.       $validation = 1;
  11.       include("inscription.php" );
  12.    }


 
Donc en rajoutant le include.
Mais ça n'est toujours pas bon (ça boucle et me fait quand même une erreur de header).


Message édité par juanetfanny le 28-04-2004 à 08:24:59
Reply

Marsh Posté le 28-04-2004 à 08:20:58    

Un p'tit up du matin :-)
Bon, personne ne voit une solution ?

Reply

Marsh Posté le 28-04-2004 à 08:34:28    

Citation :


oui, c'est correct mais ça ne peut pas fonctionner justement parce qu'il est impossible de ne rien avoir avant le header (sauf si le site se résume à une page blanche !).  


 
t'as pas tout compris là. [:spamafote]

Reply

Marsh Posté le 28-04-2004 à 08:48:04    

bin, c'est quoi le truc que je n'ai pas compris ?  :(  

Reply

Marsh Posté le 28-04-2004 à 08:55:24    

il n'est pas impossible de ne rien avoir avant le header. on parle bien de code envoyé au navigateur. Après tu fais ce que tu veux.

Reply

Marsh Posté le 28-04-2004 à 09:15:21    

D'accord, ça c'est ok  ;)
 
Ce que je n'arrive pas à faire en fait, du moins, ce que je ne sais pas faire, c'est tester en haut de ma page si le test à réussi et si oui, on redirige vers une page de confirmation.
 
Voilà un peu le code de ma page :
 

Code :
  1. <? $redirection = (isset($validation) ) ? $validation : Null;
  2. if ($redirection) {header("location: confirm.php" );} ?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  5. <head>
  6.       <title>Test</title>
  7.       <link rel="stylesheet" type="text/css" href="i.css" />
  8.       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  9. </head>
  10. <body>
  11. <? include ("entete.htm" ); ?>
  12. <!-- code html de présentation de la page //-->
  13. <?
  14. // si le formulaire a été validé
  15. $action = (isset($_POST['action']) ) ? $_POST['action'] : Null;
  16. if ($action)
  17. {
  18.    $pseudo = $_POST['pseudo'];
  19.    $email = $_POST['email'];
  20.    $nom = $_POST['nom'];
  21.    $prenom = $_POST['prenom'];
  22.    $adresse = $_POST['adresse'];
  23.    $adresse2 = $_POST['adresse2'];
  24.    $cp = $_POST['cp'];
  25.    $ville = $_POST['ville'];
  26.    // On initialise le tableau des erreurs éventuelles
  27.    $error = array();
  28.    // Gestion de chaque erreur du formulaire
  29.    // On commence par la validité de l'email...
  30.    if (!ereg("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $email))
  31.    {
  32.       // si invalide, on insère une entrée dans le tableau
  33.       array_push($error, "Attention, email non valide" );
  34.    }
  35.    // Validité du nom
  36.    if (empty($pseudo) or empty($nom) or empty($prenom) or empty($adresse) or empty($cp) or empty ($ville))
  37.    {
  38.       array_push($error, "Vous n'avez pas rempli correctement le formulaire !" );
  39.    }
  40.    // etc.........
  41.    // On regarde si notre tableau d'erreur contient quelque chose...
  42.    if (count($error))
  43.    {
  44.       // Affichage des différentes erreurs
  45.       echo "<font face='verdana' size='2' color='#cc0000'><b>";
  46.       // tant que le tableau n'est pas vide
  47.       while ($error)
  48.       {
  49.             echo array_shift($error) . "<br>"; // on le dépile par le haut
  50.       }
  51.       echo "</b></font>";
  52.     }
  53.     // s'il n'y a pas d'erreur...
  54.     else
  55.     {
  56.    
  57. // On se connecte à la base de données
  58. include('connect.php');
  59. // on génère un mot de passe de 8 caractères
  60. $password ="";
  61. $chaine = "abBDEFcdefghijkmnPQRSTUVWXYpqrst23456789"; //caractères possibles
  62. srand((double)microtime()*1000000);
  63. for($i=0; $i<8; $i++)
  64. {
  65.          $password .= $chaine[rand()%strlen($chaine)];
  66.         }
  67.      
  68. // On enregistre les données et on s'en va !
  69. $today = date("Y-m-d" );
  70. $queryform = "INSERT INTO membre (Login, Password, Nom, Prenom, Adresse, ";
  71. $queryform .= "Adresse2, CP, Ville, Email, DateInscription) VALUES ('$pseudo','$password', ";
  72. $queryform .= "'$nom', '$prenom', '$adresse', '$adresse2', '$cp', '$ville', ";
  73. $queryform .= "'$email', '$today');";
  74.         $result2 = mysql_query($queryform);
  75.         if ($result2 == 0)
  76.         {
  77.         echo "echec de l'insertion";
  78.         }
  79. else
  80. {
  81.  // On définit une variable comme quoi tout est ok
  82.  $validation = 1;
  83.  include("inscription.php" );
  84.    }
  85.      }
  86. // Fin du traitement après validation du formulaire
  87. ?>
  88. <br><p class="titrenews">Tous les champs marqués d&acute;une étoile sont obligatoires</p><br>
  89. <form method="post" action="inscription.php">
  90. ... là c'est le formulaire proprement dit...
  91. ...
  92. ...
  93. <tr>
  94.     <td colspan="3">
  95.      <div align="center">   
  96.      <input type="hidden" name="action" value="1">
  97.      <input type="submit" name="submit" value="S'inscrire !">
  98.      <input type="reset" value="Effacer" >
  99.      </div>
  100.     </td></tr>
  101. </table>
  102. </form>
  103. </div>
  104. </div>
  105. <? include ("footer.htm" ); ?>
  106. </body>
  107. </html>


 
C'est là ou j'ai le else {$validation=1;} que ça cloche. Si le else est exécuté, c'est que tout est ok, l'insertion à bien eu lieu. Il faut trouver un moyen de recharger la page et en tête de page faire le test pour savoir si $validation existe. C'est ça ou je me trompe ?
 
Merci de ton aide en tout cas  ;)  
 

Reply

Marsh Posté le 28-04-2004 à 09:22:53    

$validation ne vaut rien lorsque la page se recharge... utilise une autre méthode que cette variable pour déterminer si la validation est ok. (GET ou session)

Reply

Marsh Posté le 28-04-2004 à 09:22:53   

Reply

Marsh Posté le 28-04-2004 à 09:28:17    

Là pour un formulaire d'inscription, je n'ai pas encore besoin des sessions. Mais comment puis-je utiliser $_GET pour faire mon test ? C'est ça que je ne sais pas faire :-))
Je vois bien dans le cas d'un formulaire avec $_POST mais là je sèche ;-( Merci à toi d'éclairer un peu ma lanterne !
 

Reply

Marsh Posté le 28-04-2004 à 09:55:31    

Bon, effectivement, j'ai réétudié mon code et j'ai enfin compris !
 
j'ai enlevé mon test avec $validation et j'ai placé mon html après tout mes test, ce que j'aurais du faire dès le début ! C'est affligeant d'être bête à ce point  :pt1cable:   :lol:  
 
Enfin, maintenant ça marche ! Mille mercis en tout cas de ton aide  :jap:  
 
 :hello:  

Reply

Marsh Posté le 28-04-2004 à 10:13:13    

de rien [:cutter]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed