Probleme Formulaire PHP & Header Location
Dernière réponse : dans Programmation
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
Lassé par la pub ? Créez un compte
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
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
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 :-?
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 :-?
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
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...
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
et j'obtiens le message d'erreur :
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
<?php
if (($ID <> "") && ($Password <> "") && ($Password2 <> "") && ($Sexe <> "") && ($ann <> "") && ($Pseudo <> ""))
{
header("Location: home.php?click=inscriptionok");
// 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
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 ;-)
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- solutionsProbleme header location index.php php
- ForumHeader location php post
- ForumPhp actualiser avec header location
- ForumPhp - header location
- solutionsPhp header location parent
- ForumPhp header location ne fonctionne pas
- ForumPhp header location ne marche pas
- ForumHeader location php
- ForumHeader location post php
- ForumPhp header location
- Voir plus