Redirection web

Bonjour,
1ere question
je souhaite apres un formulaire faire une redirection vers une page du site, ca ne marche pas je suis débutant et j'ai du faire une erreur, voici le code en php :
<?php
$nom = "envoi nom:\t$envoi_nom\n";
$prenom = "envoi prenom:\t$envoi_prenom\n";
$adresse = "envoi adresse:\t$envoi_adresse\n";
$ville = "envoi ville:\t$envoi_ville\n";
$teldom = "envoi teldom:\t$envoi_teldom\n";
$telport = "envoi telport:\t$envoi_telport\n";
$email = "envoi email:\t$envoi_email\n";
$temps = "envoi temps:\t$envoi_temps\n";
$infos = "envoi infos:\t$envoi_infos\n";
$msg= "$nom, $prenom, $adresse, $ville, $teldom, $telport, $email, $temps, $infos";
$recipient = "contact@monsite.com";
$subject = "demande de concept";
$mailheaders = "De: monsite.com <> \n";
$mailheaders .= "Repondre à: $envoi_email\n\n";
mail($recipient, $subject, $msg, $mailheaders);
echo "<HTML><HEAD>";
echo "<TITLE>Form envoi</TITLE>";
echo "</HEAD><BODY>";
echo "<H1 align=center>Merci, $envoi_nom</H1>";
echo "<P align=center>";
echo "Votre demande a été prise en compte.</P>";
echo "<P align=center>";
echo "<a href="http:www.monsite.com/mapage.html"><input type="button" value="Accéder à la partie réservée"></a></P>";
echo "</BODY></HTML>";
?>
</body>
</html>
2eme question
lorsque je fais appel à ma page php pour traiter le formulaire, est il possible d'éviter l'ouverture d'une page balnche ou de la page ou je dis merci, en appyant sur le bouton envoyer les informations du formulaire, y a t'il un moyen de l'envoyer via post et de rediriger direct?
3eme question
comment puis je transformer une page web formulaire en fichier pdf

merci pour vos réponses
Configuration: Windows Vista
Internet Explorer 7.0

21 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Plusieurs intervenants tentent d’effectuer une redirection après l’envoi d’un formulaire en PHP et rencontrent des difficultés liées à l’emplacement des sorties HTML et au moment d’émettre les en-têtes. Les conseils indiquent généralement de placer les en-têtes de redirection avant tout affichage et d’éviter tout écho ou espace avant le code PHP, ou d’opter pour une redirection via Location. D’autres évoquent des alternatives comme l’envoi des données en POST puis une redirection directe, ou l’utilisation de JavaScript pour éviter une page blanche, selon les préférences et le contexte. Enfin, des questions apparaissent aussi sur la conversion d’une page web contenant un formulaire en fichier PDF, et sur la meilleure approche pour une intégration côté serveur ou client.

Bobot (l’IA à votre service)
  1. Contributeur
    je te conseille une redirection par header:
    https://www.google.fr/search?hl=fr&q=header+redirection&btnG=Rechercher&meta=&gws_rd=ssl

    le header doit etre envoyé AVANT TOUTE AUTRE DONNEES QUE TU ENVOIE PAR ECHO

    sinon tu peux faire en javascript:
    https://www.google.fr/search?hl=fr&q=redirection+javascript&meta=&gws_rd=ssl
    1. merci mais je ne suis pas un pro dans mon formulaire php pourrais tu me donner un exemple stp
    2. Contributeur
      @phiphidu77tu degages tes echo, et a la place tu met
      $url="manouvellepage.php";
      header("Request-URI: $url");
      header("Content-Location: $url");
      header("Location: $url",301);
    3. @Nabla'sdonc je fais :
      <?php
      $nom = "envoi nom:\t$envoi_nom\n";
      $prenom = "envoi prenom:\t$envoi_prenom\n";
      $adresse = "envoi adresse:\t$envoi_adresse\n";
      $ville = "envoi ville:\t$envoi_ville\n";
      $teldom = "envoi teldom:\t$envoi_teldom\n";
      $telport = "envoi telport:\t$envoi_telport\n";
      $email = "envoi email:\t$envoi_email\n";
      $temps = "envoi temps:\t$envoi_temps\n";
      $infos = "envoi infos:\t$envoi_infos\n";
      $msg= "$nom, $prenom, $adresse, $ville, $teldom, $telport, $email, $temps, $infos";
      $recipient = "contact@monsite.com";
      $subject = "demande de concept";
      $mailheaders = "De: monsite.com <> \n";
      $mailheaders .= "Repondre à: $envoi_email\n\n";
      mail($recipient, $subject, $msg, $mailheaders);
      $url="manouvellepage.html";
      header("Request-URI: $url");
      header("Content-Location: $url");
      header("Location: $url",301);
      ?>

      ca ne marche pas !!! je dois être un idiot lol
  2. Contributeur
    j a pas testé le code que je t ai donné, car e suis au boulot...
    dis moi ce qui se passe, quel message d erreur ...
    1. as tu un tel stp merci
    2. Contributeur
      @phiphidu77si tu cliques sur mon pseudo, tu verra que me telephoner sur mon portable va te couter cher ....
  3. je ne connais pas le prix d'une communication pour le danemark lol
    1. Contributeur
      europe zone1... je connais pas otn operateur. depuis chez sfr, c est 55 cts je croi, amsi mieu vaut resoudre ton pb par le net, c est ggratuit, les autres pourront en profiter et nous aider
      1. voila ce qu'il affiche comme message d'erreur
        Warning: Cannot modify header information - headers already sent by (output started at /var/www/data/lri/4/4/J/2/44J258RP/faire_envoiform.php:9) in /var/www/data/lri/4/4/J/2/44J258RP/faire_envoiform.php on line 27

        Warning: Cannot modify header information - headers already sent by (output started at /var/www/data/lri/4/4/J/2/44J258RP/faire_envoiform.php:9) in /var/www/data/lri/4/4/J/2/44J258RP/faire_envoiform.php on line 28

        Warning: Cannot modify header information - headers already sent by (output started at /var/www/data/lri/4/4/J/2/44J258RP/faire_envoiform.php:9) in /var/www/data/lri/4/4/J/2/44J258RP/faire_envoiform.php on line 29
    2. Contributeur
      je t ai dit en post 1 que tu devais mettre cette fonction avant tout affichage! et ligne 9 tu as un affichage qui se fait... ca veut aussi dire pas de code HTML avant, et meme pas un espace ou un saut de ligne en debut de fichier avant les balises php
      1. voici ce qui reste
        <?php
        $nom = "envoi nom:\t$envoi_nom\n";
        $prenom = "envoi prenom:\t$envoi_prenom\n";
        $adresse = "envoi adresse:\t$envoi_adresse\n";
        $ville = "envoi ville:\t$envoi_ville\n";
        $teldom = "envoi teldom:\t$envoi_teldom\n";
        $telport = "envoi telport:\t$envoi_telport\n";
        $email = "envoi email:\t$envoi_email\n";
        $temps = "envoi temps:\t$envoi_temps\n";
        $infos = "envoi infos:\t$envoi_infos\n";
        $msg= "$nom, $prenom, $adresse, $ville, $teldom, $telport, $email, $temps, $infos";
        $recipient = "contact@monsite.com";
        $subject = "demande de concept";
        $mailheaders = "De: monsite.com <> \n";
        $mailheaders .= "Repondre à: $envoi_email\n\n";
        mail($recipient, $subject, $msg, $mailheaders);
        $url="manouvellepage.html";
        header("Request-URI: $url");
        header("Content-Location: $url");
        header("Location: $url",301);
        ?>

        bien je remplace ma nouvelle page par la mienne mais rien
        1. Contributeur
          desolé mais ta ligne 9 est toujours la, a priori c est :

          $temps = "envoi temps:\t$envoi_temps\n";

          d ailleurm jai limpression que tu utilises les variables superglobales.... c est pas conseillé, et c est meme desactivé par defaut sur les nouvelles versions de php...
          $envoi_temps ca vient du formulaire ca ? si oui, tu dois faire $_POST[envoi_temps]
          1. ok ca marche as tu une solution pour ma 3eme question car la 2eme se trouve résolu d'office

            merci pour ton intervention supersympa, j'en ai appris un peu plus aujourd'hui
            1. non ligne etait avant il y avait du html j'ai tout supprimé et ca marche, qu'appelles tu valeur superglobale, c'est quoi la difference entre
              $nom = "envoi nom:\t$envoi_nom\n";
              et
              $nom = "$_POST[envoi_nom]"
              mon formulaire marche comme il est maintenant si il y ades améliorations je suis preneur

              en tout cas merci
              1. Contributeur
                en gros, la difference, entre
                $envoi_nom
                et
                $_POST[envoi_nom]

                c est que dans la 2 eme, tu sait d ou vien ta valeur... du formulaire! et par methode post, pas GET ...

                je prend un autre exemple, la session...
                imagine que tu utilisees le champ $_SESSION['login'] pour savoir si qqcn est connecté, en utilisant la fonction isset....
                et ben il suffit qu a la fin de l url je mette ?login=hacker et je serai loggé...
                alors que si tu fais isset($_SESSSION['login']), tu es sur de ne pas te gourrer et de pas controller n importe quel login, en l occurence celui de isset($_GET['login']). GET et POST sont fourni par le client: variables non sur!. Session est sur le serveur: sur
                1. QUE PENSES TU DE CELA QUI NE MARCHE PAS NON PLUS
                  <?php
                  $nom=$_POST['nom'] ;
                  $mdp=$_POST['mdp'] ;
                  $url="dossier.html";
                  if ($nom=="DOSSIER")
                  if ($mdp=="1A2B6543")
                  {
                  header("Request-URI: $url");
                  header("Content-Location: $url");
                  header("Location: $url",301);
                  }
                  else{
                  echo "<HTML><HEAD>";
                  echo "<TITLE>pagesecurise</TITLE></HEAD><BODY>";
                  echo "<H1 align=center>Accés refusé</H1>";
                  echo "<P align=center>";
                  echo "<INPUT TYPE ="button" Value = "retour" onclick = "self.history.back();"></P>";
                  echo "</BODY></HTML>";
                  }
                  ?>
                  1. CA ME DONNE CELA EN EREUR
                    Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /var/www/data/lri/4/4/J/2/44J258RP/pagesecurise.php on line 17
                    1. j'ai trouvé
                      voilà
                      <?php
                      $nom=$_POST['nom'] ;
                      $mdp=$_POST['mdp'] ;
                      if ($nom=="DOSSIER")
                      if ($mdp=="1A2B6543")
                      {
                      $url="dossier.html";
                      header("Request-URI: $url");
                      header("Content-Location: $url");
                      header("Location: $url",301);
                      }
                      else{
                      $url="acces.html";
                      header("Request-URI: $url");
                      header("Content-Location: $url");
                      header("Location: $url",301);
                      }
                      ?>

                      par contre je voudrais faire afficher que c'est pas le bon code?
                      1. Contributeur
                        a ce moment la, le code devient

                        <?php
                        $nom=$_POST['nom'] ;
                        $mdp=$_POST['mdp'] ;
                        if ($nom=="DOSSIER")
                        if ($mdp=="1A2B6543")
                        {
                        $url="dossier.html";
                        header("Request-URI: $url");
                        header("Content-Location: $url");
                        header("Location: $url",301);
                        }
                        else{
                        echo "degage ou je vais te casser les dents";
                        }
                        ?>
                        1. merci mais dans ce cas je ne paux pas faire une redirection sur le else vars la page d'acces car j'ai mis un echo?
                          1. Contributeur
                            en effet... c est pour te dire qu a la place tu peux mettre du code HTML aussi ;)
                            apres c est toi qui gère ton affaire
                            1. merci mais dans le cas présent je voudrais les 2 est ce possible rediriger et mettre un message comme quoi le code est faux
                              • 1
                              • 2