Redirection apres envoi formulaire
Résolu
louseb84
-
ghuysmans99 Messages postés 2496 Date d'inscription Statut Contributeur Dernière intervention -
ghuysmans99 Messages postés 2496 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour a toutes et tous,
je veiens de boucler le codage de mon livre d'or ou j'utilise la fonction header pour rediriger l'internaute vers la page de diffusion afin qu'il puisse voir son message et etre sur qu'il soit bien enregistre.
voici le code erreur
Warning: Cannot modify header information - headers already sent by (output started at /homez.170/lousebph/www/livre_d_or_formulaire.php:5) in /homez.170/lousebph/www/livre_d_or_formulaire.php on line 77
et le code php utiliser sur ma page.
<?php
// Si les variables existent
if (isset($_POST['pseudo']) AND isset($_POST['mail']) AND isset($_POST['localisation']) AND isset($_POST['site_internet']) AND isset($_POST['votre_message']))
{
//condition qui vérifie si les champ sont remplient et si ils ne le sont pas, sa ouvre une petite popup sans recharger la page
if ($_POST['pseudo'] == '')
{
echo "<script language='JavaScript'>alert('merci de bien vouloir renseigner le champ pseudo');history.back();</script>";
exit();
}
elseif ($_POST['localisation'] == '')
{
echo "<script language='JavaScript'>alert('merci de bien vouloir renseigner le champ ville, région.');history.back();</script>";
exit();
}
elseif ($_POST['votre_message'] == '')
{
echo "<script language='JavaScript'>alert('merci de bien vouloir renseigner le champ message.');history.back();</script>";
exit();
}
// D'abord, on se connecte à MySQL
mysql_connect("", "", "");
mysql_select_db("")or die (mysql_error());
// une requête pour enregistré l'heure et la date a laquel le message a était poster
$date = date("Y-m-d");
$heure = date("H:i:s");
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$votre_message = mysql_real_escape_string(htmlspecialchars($_POST['votre_message']));
$site_internet = mysql_real_escape_string(htmlspecialchars($_POST['site_internet']));
$localisation = mysql_real_escape_string(htmlspecialchars($_POST['localisation']));
$mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
// Ensuite on enregistre le message
mysql_query("INSERT INTO livre_d_or VALUES('', '" . $pseudo . "', '" . $mail . "', '" . $localisation . "', '" . $site_internet . "', '" . $votre_message . "', '" . $date . "', '" . $heure . "') ") or die (mysql_error());
// On se déconnecte de MySQL
mysql_close();
//redirection vers la page livre_or_diffusion
header('Location: livre_d_or_diffusion.php');
}
merci a toute personne qui s'aurrait me dire ou est l'erreur dans mon script, sa fait deux heures que je cherche sans trouver.....!!!
je veiens de boucler le codage de mon livre d'or ou j'utilise la fonction header pour rediriger l'internaute vers la page de diffusion afin qu'il puisse voir son message et etre sur qu'il soit bien enregistre.
voici le code erreur
Warning: Cannot modify header information - headers already sent by (output started at /homez.170/lousebph/www/livre_d_or_formulaire.php:5) in /homez.170/lousebph/www/livre_d_or_formulaire.php on line 77
et le code php utiliser sur ma page.
<?php
// Si les variables existent
if (isset($_POST['pseudo']) AND isset($_POST['mail']) AND isset($_POST['localisation']) AND isset($_POST['site_internet']) AND isset($_POST['votre_message']))
{
//condition qui vérifie si les champ sont remplient et si ils ne le sont pas, sa ouvre une petite popup sans recharger la page
if ($_POST['pseudo'] == '')
{
echo "<script language='JavaScript'>alert('merci de bien vouloir renseigner le champ pseudo');history.back();</script>";
exit();
}
elseif ($_POST['localisation'] == '')
{
echo "<script language='JavaScript'>alert('merci de bien vouloir renseigner le champ ville, région.');history.back();</script>";
exit();
}
elseif ($_POST['votre_message'] == '')
{
echo "<script language='JavaScript'>alert('merci de bien vouloir renseigner le champ message.');history.back();</script>";
exit();
}
// D'abord, on se connecte à MySQL
mysql_connect("", "", "");
mysql_select_db("")or die (mysql_error());
// une requête pour enregistré l'heure et la date a laquel le message a était poster
$date = date("Y-m-d");
$heure = date("H:i:s");
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$votre_message = mysql_real_escape_string(htmlspecialchars($_POST['votre_message']));
$site_internet = mysql_real_escape_string(htmlspecialchars($_POST['site_internet']));
$localisation = mysql_real_escape_string(htmlspecialchars($_POST['localisation']));
$mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
// Ensuite on enregistre le message
mysql_query("INSERT INTO livre_d_or VALUES('', '" . $pseudo . "', '" . $mail . "', '" . $localisation . "', '" . $site_internet . "', '" . $votre_message . "', '" . $date . "', '" . $heure . "') ") or die (mysql_error());
// On se déconnecte de MySQL
mysql_close();
//redirection vers la page livre_or_diffusion
header('Location: livre_d_or_diffusion.php');
}
merci a toute personne qui s'aurrait me dire ou est l'erreur dans mon script, sa fait deux heures que je cherche sans trouver.....!!!
A voir également:
- Redirection apres envoi formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Envoi impossible messenger - Forum Facebook Messenger
- Civilité sur un formulaire - Forum VB / VBA
- Formulaire de reclamation instagram - Guide
5 réponses
D'abord, une ligne que tu peux optimiser :
Le message d'erreur dit que tu as déjà affiché quelque chose avant l'appel de la fonction header(). 'Commentarise' cette ligne et regarde ce qui est affiché ...
Google is your best friend
VB.NET is good ... VB6 is better !
mysql_query("INSERT INTO livre_d_or VALUES('', '$pseudo', '$mail', '$localisation', '$site_internet', '$votre_message', '$date', '$heure'); ") or die (mysql_error());
Le message d'erreur dit que tu as déjà affiché quelque chose avant l'appel de la fonction header(). 'Commentarise' cette ligne et regarde ce qui est affiché ...
Google is your best friend
VB.NET is good ... VB6 is better !
oups oui c'etait apres que mon script me renvoi une erreur sur cette ligne que j'ai rajouter les " . ." comme c'est sur le site du zero pour voir si sa venait de la....
qu'entend tu par commentarise cette ligne?
au chargement de ma page seul mon formulaire en html s'affiche et l'erreur d'eja afficher....
merci de te pencher sur mon cas c cool
qu'entend tu par commentarise cette ligne?
au chargement de ma page seul mon formulaire en html s'affiche et l'erreur d'eja afficher....
merci de te pencher sur mon cas c cool
commentariser, c'est mettre // devant une ligne pour qu'elle ne soit pas exécutée.
Justement tu ne dois afficher ton formulaire que si l'utilisateur n'a rien envoyé ...
Justement tu ne dois afficher ton formulaire que si l'utilisateur n'a rien envoyé ...
oui je suis bien bete mais le probleme n'est pas que mon formulaire ou que ma page qui affiche les commentaire ne marche pas mais que lorsque j'envoie le formulaire je revient sur ma page formulaire et qu'a ce moment la j'ai le message d'erreur qui s'affiche.
en surfant sa et la je viens de lire que la fonction header doit etre placer avant tous code html pour ne pas quel m'affiche le code erreur headers already sent by.... il me semble pourtant que c'est le cas dans ma page le code php etant positioner juste apres le </head> et avant le <body>......
apparament il est possible de faire une redirection par meta tag dans le <head> mais je n'ai trouver qu'une qui s'execute apres 10 secondes sur la page....
en surfant sa et la je viens de lire que la fonction header doit etre placer avant tous code html pour ne pas quel m'affiche le code erreur headers already sent by.... il me semble pourtant que c'est le cas dans ma page le code php etant positioner juste apres le </head> et avant le <body>......
apparament il est possible de faire une redirection par meta tag dans le <head> mais je n'ai trouver qu'une qui s'execute apres 10 secondes sur la page....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bon histoire de faire avancer le shmilbik je vais repondre a tous les gens qui font la meme betise que moi et on est nombreux au vu de tous les poste que j'ai pu lire sur l'erreur headers already sent by.....!!!!!
QUAND ON DIT QUE LE HEADER DOIT ETRE PLACER AVANT TOUT HTML C"EST VRAIMENT TOUT......!!!!!
le placer avant la balise <html> et ne laisser aucun espace sur la page de code avant le <?php.........
bref pour faire simple comme je viens d'apprendre que le php peut etre placer n'importe ou sur la page il est preferable de prendre l'habitude de le mettre sur la premiere ligne de script de sa page et sans espace avant le <?php
QUAND ON DIT QUE LE HEADER DOIT ETRE PLACER AVANT TOUT HTML C"EST VRAIMENT TOUT......!!!!!
le placer avant la balise <html> et ne laisser aucun espace sur la page de code avant le <?php.........
bref pour faire simple comme je viens d'apprendre que le php peut etre placer n'importe ou sur la page il est preferable de prendre l'habitude de le mettre sur la premiere ligne de script de sa page et sans espace avant le <?php
Il a compris ... enfin ! Et en cadeau, ta page (t'as qu'à ajouter le contenu du form) :
<?php function DisplayForm() { ?> <form method="post" action="?Action=go"> [...] </form> <?php } function DisplayAlert($s) { ?><script type="text/javascript"> alert('<?php echo(addslashes($s));?>'); history.back(); </script><?php } if (isset($_GET['Action'])) // Formulaire envoyé ? Si oui, on récupère les données { $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); $localisation = mysql_real_escape_string(htmlspecialchars($_POST['localisation'])); $votre_message = mysql_real_escape_string(htmlspecialchars($_POST['votre_message'])); $site_internet = mysql_real_escape_string(htmlspecialchars($_POST['site_internet'])); $mail = mysql_real_escape_string(htmlspecialchars($_POST['mail'])); if ($pseudo=='') $err = 'pseudo'; if ($localisation=='') $err = 'ville, région'; if ($votre_message=='') $err = 'message'; if ($err) { DisplayAlert("Merci de bien vouloir renseigner le champ $err."); exit(); } // D'abord, on se connecte à MySQL mysql_connect('', '', ''); mysql_select_db('') or die (mysql_error()); // On met la date et l'heure dans des variables $date = date('Y-m-d'); $heure = date('H:i:s'); // Ensuite on enregistre le message mysql_query("INSERT INTO livre_d_or VALUES('', '$pseudo', '$mail', '$localisation', '$site_internet', '$votre_message', '$date', '$heure');") or die (mysql_error()); // On se déconnecte de MySQL mysql_close(); // On redirige l'utilisateur header('Status: 301 Moved Permanently'); header('Location: livre_d_or_diffusion.php'); } else DisplayForm();
salut ghuysmans99...!!!!!
ET OUI IL A ENFIN COMPRIS apres seulement une centaine d'heure d'apprentissage HTML, PHP et CSS...... rires......
la fonction header status j'ai lu quel servait uniquement au navigateur pour le referencement.... c'est sa??
pour le reste,je pige vraiment pas grand chose au javascript mais de ce que j'en ai compris tu me fait remplacer mes condition qui verifie si mes variable existe en PHP par du javascript.....
histoire que je copie pas un script betement (j'aime pas sa et je risque pas d'apprendre comme ca) tu peut m'expliquer quel est l'interet d'afficher les messages d'erreur en java plutot qu'en PHP???
mon site en pleine construction mais si sa te dis d'aller y faire un tour et de me dire ce que tu en pense dans l'ensemble.......
le diaporama n'est pas de moi bien evidament et quelques lien ne sont pas encore actif mais un systeme de news est bientot boucler. il me reste a mettre des miniatures a la place du sous-menu un peu comme j'ai fait sur la page du livre d'or egalement.....!!!!
louseb-photographie.com
ET OUI IL A ENFIN COMPRIS apres seulement une centaine d'heure d'apprentissage HTML, PHP et CSS...... rires......
la fonction header status j'ai lu quel servait uniquement au navigateur pour le referencement.... c'est sa??
pour le reste,je pige vraiment pas grand chose au javascript mais de ce que j'en ai compris tu me fait remplacer mes condition qui verifie si mes variable existe en PHP par du javascript.....
histoire que je copie pas un script betement (j'aime pas sa et je risque pas d'apprendre comme ca) tu peut m'expliquer quel est l'interet d'afficher les messages d'erreur en java plutot qu'en PHP???
mon site en pleine construction mais si sa te dis d'aller y faire un tour et de me dire ce que tu en pense dans l'ensemble.......
le diaporama n'est pas de moi bien evidament et quelques lien ne sont pas encore actif mais un systeme de news est bientot boucler. il me reste a mettre des miniatures a la place du sous-menu un peu comme j'ai fait sur la page du livre d'or egalement.....!!!!
louseb-photographie.com
1) Oui
2) Non : le seul truc en JS sur ta page est le contenu de la fonction DisplayAlert(). J'aurais pu y mettre un echo() avec un paramètre kilométrique dedans mais je trouvais plus clair de mettre ?> et <?php .
3) On ne peut pas afficher de boites de dialogue en pur PHP : ce langage s'exécute du côté serveur. Ce sont JS, Flash et Java (mais y'en a d'autres, je t'ai cités les principaux) qui s'exécutent côté client.
4) Ca donne pas mal, mais ne mets pas tes éléments de menu en noir lorsqu'on passe dessus ...
2) Non : le seul truc en JS sur ta page est le contenu de la fonction DisplayAlert(). J'aurais pu y mettre un echo() avec un paramètre kilométrique dedans mais je trouvais plus clair de mettre ?> et <?php .
3) On ne peut pas afficher de boites de dialogue en pur PHP : ce langage s'exécute du côté serveur. Ce sont JS, Flash et Java (mais y'en a d'autres, je t'ai cités les principaux) qui s'exécutent côté client.
4) Ca donne pas mal, mais ne mets pas tes éléments de menu en noir lorsqu'on passe dessus ...