Tom's Guide > Forum > Programmation > Probleme Formulaire PHP & Header Location
Mot :    Pseudo :           
 

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

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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%


Répondre à tripollite

il marche pas ton code tripollite :/ :(

Répondre à TiFoXy

Tu peux pas mettre ton code ? Car là c'est bizarre...

Répondre à Darit

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

Répondre à tripollite

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

Répondre à TiFoXy

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 :-?

Répondre à Darit

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.

Répondre à tripollite

ou a tu placer dans ta page ton header?

Répondre à Melkior@IDN

Citation :


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




dans les 3 dernieres lignes de la page.

Répondre à TiFoXy

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

Répondre à TiFoXy

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

Répondre à SiM07

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...

Répondre à TiFoXy

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

Code :
  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

Répondre à SiM07

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

Code :
  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



:(

Répondre à TiFoXy

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

Répondre à Darit

tu a surement un ligne d'espace avant <?php car sinon c'est pas possible ! vérifie bien !

Répondre à SiM07

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

Répondre à TiFoXy
Tom's Guide > Forum > Programmation > Probleme Formulaire PHP & Header Location
Aller à :

Il y a 270 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens