Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2949 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°710250
juanetfann​y
Posté le 27-04-2004 à 20:58:16  profilanswer
 

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
mood
Publicité
Posté le 27-04-2004 à 20:58:16  profilanswer
 

n°710254
jagstang
Pa Capona ಠ_ಠ
Posté le 27-04-2004 à 21:07:32  profilanswer
 

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à

n°710318
juanetfann​y
Posté le 27-04-2004 à 23:13:51  profilanswer
 

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
n°710320
juanetfann​y
Posté le 27-04-2004 à 23:20:10  profilanswer
 

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
n°710405
juanetfann​y
Posté le 28-04-2004 à 08:20:58  profilanswer
 

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

n°710409
jagstang
Pa Capona ಠ_ಠ
Posté le 28-04-2004 à 08:34:28  profilanswer
 

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]

n°710412
juanetfann​y
Posté le 28-04-2004 à 08:48:04  profilanswer
 

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

n°710414
jagstang
Pa Capona ಠ_ಠ
Posté le 28-04-2004 à 08:55:24  profilanswer
 

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.

n°710426
juanetfann​y
Posté le 28-04-2004 à 09:15:21  profilanswer
 

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  ;)  
 

n°710437
jagstang
Pa Capona ಠ_ಠ
Posté le 28-04-2004 à 09:22:53  profilanswer
 

$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)

mood
Publicité
Posté le 28-04-2004 à 09:22:53  profilanswer
 

n°710446
juanetfann​y
Posté le 28-04-2004 à 09:28:17  profilanswer
 

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 !
 

n°710467
juanetfann​y
Posté le 28-04-2004 à 09:55:31  profilanswer
 

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:  

n°710481
jagstang
Pa Capona ಠ_ಠ
Posté le 28-04-2004 à 10:13:13  profilanswer
 

de rien [:cutter]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
[PHP/MYSQL] Problème d'UPDATE . : RESOLU : .[Résolu] Changer l'url d'un lien, et conserver son Id
[PHP] Mettre à jour les variables de session [resolu]probleme de nom décoré DLL C (résolu)
Programmer proprementImpossible de réccupéré une variable... [Resolu]
Aligner verticalement en xhtml [résolu][OpenGL] Programmer sur Mac en C++/OpenGL
Commentaires en PHP ... [Résolu][Delphi] créer son propre IE avec des option !! [RESOLU]
Plus de sujets relatifs à : [RESOLU][HEADER] Solution ultime pour programmer propre ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR