Votre question

Probleme Formulaire PHP & Header Location

Tags :
  • Serveur
  • Programmation
Dernière réponse : dans Programmation
17 Février 2006 09:51:06

Bonjour, j'ai créé un formulaire d'inscription en PHP. Lorsque l'on clique sur le bouton valider, ca renvoie a la meme page, car j'y ai aussi intégré les scripts de verification et de validation. Jusque la tout fonctionne tres bien, la page affiche les erreurs de remplissage etc. Mon souci, c'est justement quand tout est correctement rempli: j'ai mi une condition quand tout est correctement rempli qui lance l'insertion dans les bases de données (ce qui fonctionne toujours tres bien) suivi d'un Header Location pour rediriger vers une page de remerciement. Mais mon Header Location ne fonctionne pas : Header("Location: inscriptionok.htm"); la page revient sur le formulaire. Je suis desespéré j'ai essayé plein de choses meme en utilisant exit; et rien a faire. Merci d'avance de m'éclairer

Autres pages sur : probleme formulaire php header location

17 Février 2006 12:07:46

montre ton code.
17 Février 2006 14:21:31

rajoute a la premiere ligne de ta page :

<?
ob_start("ob_gzhandler");

et a la derniere :
ob_end_flush();
?>

au passage ta page va etre compressée sa taille va reduire de 60 a 80%


Contenus similaires
17 Février 2006 17:14:37

il marche pas ton code tripollite :/  :( 
17 Février 2006 17:18:52

Tu peux pas mettre ton code ? Car là c'est bizarre...
17 Février 2006 17:19:04

koi qui marche pas ?

ca doit etre l premier ligne avant tout les include etc avant tout tout tout !

et pour celui de la derniere ligne fo le metttre aussi apres ton header('location: blalbal ');

et rajouter unn exit; apres le header
17 Février 2006 17:32:32

Mon formulaire est super long et plein de CSS donc je mettrai pas tout. Allons a l'essentiel :
Ceci est le contenu de ma page inscription.php , et je le reprecise, dont le Submit renvoit a elle meme :

<form action="home.php?click=inscription" method="post" enctype="multipart/form-data" name="form" id="form">
[...] mes champs [...]
<input name="Submit" type="submit" value="Enregistrer mon Inscription" />

et au bas de ma source :
<?php
if (($Nom<> "") && ($Prenom<> ""))
{
mysql_connect....
Header("Location: inscriptionok.htm");
mysql_close();
exit;
}
?>

Voila... en gros c'est ça
17 Février 2006 17:36:52

Il y a comme un hic... le PHP s'exécute côté serveur...

Alors que ton formulaire se remplit côté client puis est envoyé au serveur. Or comme tes tests et ton formulaire sont sur la même page, ton serveur va d'abord "traduire" le PHP côté serveur avant de l'envoyé au client. Le client recoit donc une page de formulaire avec les tests déjà "accomplis" et en l'occurence où tout est non remplis...

Ton test, il faut le faire au moment où l'utilisateur clique sur le bouton submit et aller sur une page qui testera tout ton machin...

il ne faut aps mettre le test en même temps que ton formulaire... sinon tu m'étonnes que ca ne marche pas...

A moins que tu ais fait ca sur plusieurs pages différentes mais dans ce cas c'est aps très clair tes explications :-?
17 Février 2006 17:37:13

donc au tout debut tu rajoute ce que je t dis et a la fin aussi et just apres to header tu rajoutes
ob_end_flush(); mais avant le exit;


on ne peut pas renoyver 2 header dans une page sauf si tu applique ma methode
ps : tu peux tres bien faire le teste et le formulaire sur la meme page.
17 Février 2006 17:48:44

ou a tu placer dans ta page ton header?
17 Février 2006 19:23:03

Citation :

Melkior a écrit :
ou a tu placer dans ta page ton header?



dans les 3 dernieres lignes de la page.

17 Février 2006 19:24:07

Citation :

tripollite a écrit :
donc au tout debut tu rajoute ce que je t dis et a la fin aussi et just apres to header tu rajoutes
ob_end_flush(); mais avant le exit;


on ne peut pas renoyver 2 header dans une page sauf si tu applique ma methode
ps : tu peux tres bien faire le teste et le formulaire sur la meme page.


bah jtassure j'ai fait exactement ça et ça change rien du tout :-? alala god help me :-o
17 Février 2006 19:27:15

Il ne doit pas y avoir de code HTML ou de cookie envoyé avant la fonction header , lire la documentation officiel ;-)
17 Février 2006 19:34:53

Citation :

SiM07 a écrit :
Il ne doit pas y avoir de code HTML ou de cookie envoyé avant la fonction header , lire la documentation officiel ;-)


Bon alors peux tu m'expliquer ce que je dois faire pour que ma redirection fonctionne si et seulement si toutes les données de mon formulaire sont bonnes? Montre un exemple si possible...
17 Février 2006 20:14:50

euh exemple a la con en non rapport avec ton truc :

  1. <?php
  2. if(isset($machin)) {
  3. <html>
  4. truc a la con
  5. </html>
  6. }
  7. else {
  8. header()
  9. }
  10. ?>


et dans ce cas le traaitement php est fait avant le html, et si tu suis le raisonnement le header est envoyer en tout premier sans code html
17 Février 2006 20:47:34

J'ai essayé ton principe, j'ai fait :


Warning: Cannot modify header information - headers already sent by (output started at /home/TiFoXy/www/2/home.php:2) in /home/TiFoXy/www/2/inscription.php on line 245
  1. <?php
  2. if (($ID <> "") && ($Password <> "") && ($Password2 <> "") && ($Sexe <> "") && ($ann <> "") && ($Pseudo <> ""))
  3. {
  4. header("Location: home.php?click=inscriptionok");
  5. // reste du code... mysql etc.


et j'obtiens le message d'erreur :
Citation :
Warning: Cannot modify header information - headers already sent by (output started at /home/TiFoXy/www/2/home.php:2) in /home/TiFoXy/www/2/inscription.php on line 245


:( 
17 Février 2006 22:36:30

Ce que je te propose c'est faire ton formulaire normal sans code php. Une vois validé, le formulaire renvoi sur une page PHP qui va tester les différentes valeurs de tes différents champs. Si les tests sont bon, tu fais une redirection sur une page. Si le test renvoit une erreur tu renvois sur le formulaire html voire tu renvois sur un formulaire PHP qui indiquera par une petite croix rouge les champs où il y a erreur... et ainsi de suite ;-)
17 Février 2006 23:08:52

tu a surement un ligne d'espace avant <?php car sinon c'est pas possible ! vérifie bien !
17 Février 2006 23:56:32

eh ben
ma foi j'y suis arrivé
au lieu de m'embeter avec un header location j'ai carrément fait des "echo" du code html de la page que je voulais rediriger... et ça marche ^^
;-)
Merci a tous
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS