Pb formulaire

Bonjour,

je ne maitrise pas du le php et j'ai fait un formulaire qui marche très bien mais qui affiche une fois cliqué, un page blanche avec le message comme quoi tout a été bien envoyé.

je n'arrive pas à trouver la solution pour rediriger immédiatement sur la home par exemple.

Pouvez vous m'aider ? Voici le code php :
<?php
$from = "***@***";
$to = $from;
$subject = "Contact";
$message = "Contact\n";
$headers = "From:" .$from. "\r\n" ;
$headers .='Reply-To:'.$from."\r\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\r\n";
$headers .='Content-Transfer-Encoding: 7bit'."\r\n";
 
foreach ($_POST as $cle => $valeur) {
 $message.= "$cle : $valeur.\n";
} 

 if(mail($to,$subject,$message,$headers))    {
          echo 'Le message a bien été envoyé';
 } else {
    echo 'Le message n\'a pu être envoyé';
} //*******************/
?>
?>


5 réponses

  1. Bonsoir,

    Pour faire une redirection en php, tu as la fonction header() (https://www.php.net/manual/fr/function.header.php sauf : N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé.
    <?php
    $from = "***@***";
    $to = $from;
    $subject = "Contact";
    $message = "Contact\n";
    $headers = "From:" .$from. "\r\n" ;
    $headers .='Reply-To:'.$from."\r\n";
    $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\r\n";
    $headers .='Content-Transfer-Encoding: 7bit'."\r\n";
     
    foreach ($_POST as $cle => $valeur) {
     $message.= "$cle : $valeur.\n";
    } 
    
    if(mail($to,$subject,$message,$headers)) {
     header('Location: URL');
    } else {
     echo 'Le message n\'a pu être envoyé';
    }
    ?>


    Sinon tu peux le faire via javascript :
    <!DOCTYPE html>
    <html lang="fr">
     <head>
      <script type="text/javascript">
      function RedirectionJavascript($url) {
       window.location = $url;
      }
      </script>
     </head>
     <body>
    <?php
    $from = "***@***";
    $to = $from;
    $subject = "Contact";
    $message = "Contact\n";
    $headers = "From:" .$from. "\r\n" ;
    $headers .='Reply-To:'.$from."\r\n";
    $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\r\n";
    $headers .='Content-Transfer-Encoding: 7bit'."\r\n";
     
    foreach ($_POST as $cle => $valeur) {
     $message.= "$cle : $valeur.\n";
    } 
    
    if(mail($to,$subject,$message,$headers)) {
     echo '<script type="text/javascript">RedirectionJavascript("URL");</script>';
    } else {
     echo 'Le message n\'a pu être envoyé';
    }
    ?>
     </body>
    </html>
    1. Modérateur
      Essayes ceci :
      
      <?php
      
      $from = "***@***";
      $to = $from;
      $subject = "Contact";
      $message = "Contact\n";
      
      $headers = "From:" .$from. "\r\n" ;
      $headers .='Reply-To:'.$from."\r\n";
      $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\r\n";
      $headers .='Content-Transfer-Encoding: 7bit'."\r\n";
      
      if(isset($_POST)){
      	foreach ($_POST as $cle => $valeur) {
      	 $message.= "$cle : $valeur.\n";
      	} 
      
      	if(mail($to,$subject,$message,$headers)){
      		echo 'Le message a bien été envoyé';
      			print("<script type='text/javascript'>
      					 alert('redirection...');
      					 location='contact.php';
      				 </script>");
      	}else {
      		echo 'Le message n\'a pas pu être envoyé';
      	} //*******************/
      		
      
      }else{
       echo "<br> Aucune valeur POST !";
      }
      ?>
      
      
      

      1. J'ai bien collé l'ensemble du code, complété le formulaire, tombé sur la page blanche avec le message "votre message a bien été envoyé" puis eu 2 boites de dialogues et reçu mon message test puis une trentaine sans rien dedans ! la redirection n'a pas marché....
      2. et c'est en train de pourrir ma boite mail, maintenant plus de 125 messages reçus, j'ai pourtant remplacer le fichier php que j'avais avant sur mon serveur et rien n'y fait....
      3. Modérateur
        Pour la redirection.. en effet.. je pense qu'avec document.location ça fonctionnerait mieux...
        echo 'Le message a bien été envoyé';
        			print("<script type='text/javascript'>
        					 alert('redirection...');
        					 document.location='contact.php';
        				 </script>");
         
        


        Si ça ne marche pas.. essayes avec window.location

        puis eu 2 boites de dialogues et reçu mon message test puis une trentaine sans rien dedans !

        Tu n'aurais pas mis ton code dans une boucle ??
        De toutes façons.. ceci est un autre problème (qui n'est pas en rapport avec la question initiale qui concerne la redirection....)
        Une fois le souci de redirection traité... je t'invite à ouvrir une autre discussion pour traiter ce sujet séparément...
        Cela facile grandement la recherche sur le forum.. pour peu que d'autres internautes rencontrent un jour le même problème que toi.
      4. @jordane45les mais continuent d'arriver.... je fais comment pour les arrêter ?
      5. Modérateur
        @sandLa redirection marche ??
        Si oui... question résolue !

        Pour ce nouveau problème... merci d'ouvrir une nouvelle discussion
    2. Modérateur
      Bonjour,

      Dans ton code php...(sous ton IF) tu peux ajouter ceci :
      print("<script type=\"text/javascript\">setTimeout('location=(\"page.php\")' ,1000);</script>");
      

      En modifiant : page.php ... pas la page sur laquelle tu veux faire ta redirection.

      PS: Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
      Explications disponibles ici :
      https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
      1. Bonjour Jordan45 je viens d'essayer et cela ne marche pas :(
        et désolé pour la coloration syntaxique
      2. Modérateur
        @sandça ne marche pas ??!
        Montres ton code modifié que l'on regarde si tu l'as bien fait.....
      3. pour info m'a m'a envoyé une dizaine de message sans rien dedans et j'ai toujours la page blanche avec le msg comme quoi cela a bien été envoyé et tjs pas redirection


        <?php

        $from = "***@***";

        $to = $from;

        $subject = "Contact";

        $message = "Contact\n";

        $headers = "From:" .$from. "\r\n" ;

        $headers .='Reply-To:'.$from."\r\n";

        $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\r\n";

        $headers .='Content-Transfer-Encoding: 7bit'."\r\n";

        foreach ($_POST as $cle => $valeur) {

        $message.= "$cle : $valeur.\n";

        }

        if(mail($to,$subject,$message,$headers))

        {

        echo 'Le message a bien été envoyé';

        }

        else

        {

        echo 'Le message n\'a pu être envoyé';

        } //*******************/

        print("<script type=\"text/javascript\">setTimeout('location=(\"contact.php\")' ,1000);</script>");
        ?>

        ?>
      4. sorry je te met le code avec les bonnes balises

        <?php
        
        
        $from = "***@***";
        
         
        
        $to = $from;
        
         
        
        $subject = "Contact";
        
         
        
        $message = "Contact\n";
        
         
        $headers = "From:" .$from. "\r\n" ;
        
        $headers .='Reply-To:'.$from."\r\n";
        
        $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\r\n";
        
        $headers .='Content-Transfer-Encoding: 7bit'."\r\n";
        
         
        
         
        foreach ($_POST as $cle => $valeur) {
        
         
        
         
        $message.= "$cle : $valeur.\n";
        
         
        } 
        
         if(mail($to,$subject,$message,$headers))
        
            {
        
                  echo 'Le message a bien été envoyé';
        
            }
        
            else
        
            {
        
                  echo 'Le message n\'a pu être envoyé';
        
            } //*******************/
        	
        print("<script type=\"text/javascript\">setTimeout('location=(\"contact.php\")' ,1000);</script>");
        ?>
        
        ?>
    3. ça ne marche pas du tout, même en changeant la notion de temps dans content je me retrouve encore avec la même page blanche sans être redirigé.

      ne faut il pas changer des données dans le fichier php plutôt ?
      1. Bonjour,

        Dans tes deux balises <head> mets ça
        <meta http-equiv="refresh" content="5; URL=http://www.manouvelleadresse.com">

        en modifiant l'adresse. Content est le temps d'attente avant la redirection