Probleme compatibilité php 7.3

Résolu
mathieu_n Messages postés 67 Statut Membre -  
mathieu_n Messages postés 67 Statut Membre -
Bonsoir,
Je suis un peu perdu car mon site internet ne me permet plus de recevoir les messages via mon formulaire de contact.

Mon hébergeur ne prend plus en charge ma vieille version PHP 5.2 et me demande de migrer vers une version PHP 7.3

Il me semble qu'il n'y a que ce fichier qui utilise du PHP


<?php
$TO = "mon_mail@monsite.fr";

//$email=$_POST['email'];
//$header= 'From:'.$email.'';

$headers = "From: ".$_POST['email'] ."";
//$headers .= "X-Mailer: PHP/" . phpversion();

$subject="www.monsite.fr";
$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}

//test si bien envoyé
if(mail($TO, $subject, $message, $h)){

Header("Location: merci.html");

}else{

echo "Problème d'envoi du mail";
}

?>


Si quelqu'un pouvait avoir la gentillesse de me dire les modification à faire sur ce fichier afin qu'il soit compatible en php 7.3

Merci de votre contribution

5 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    La seule fonction qui ne fonctionnera plus c'est "each"

    Avertissement
    Cette fonction est OBSOLÈTE à partir de PHP 7.2.0. Dépendre de cette fonction est fortement déconseillé.

    https://www.php.net/manual/fr/function.each.php

    donc,
    while (list($key, $val) = each($HTTP_POST_VARS)) {
    $message .= "$key : $val\n";
    }
    

    a remplacer par
       foreach($HTTP_POST_VARS as $key=>$val){
            $message .= "$key : $val\n";
        }
    

    1
    1. mathieu_n Messages postés 67 Statut Membre 14
       
      Bonjour,
      Merci beaucoup pour votre répondre extrêmement claire et précise ;-)

      Je fais les modifications tout de suite...
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, pourquoi penses-tu que ton code n'est pas compatible?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      il suffit peut-être de remplacer $HTTP_POST_VARS par $_POST.
      0
    2. mathieu_n Messages postés 67 Statut Membre 14
       
      bonjour, quand je fais le test, je ne reçois aucun message
      0
  3. mathieu_n Messages postés 67 Statut Membre 14
     
    Je viens de faire le changement...

    Je reçois bien le mail sur ma messagerie, par contre à la place de l'adresse mail de l'expéditeur, j'ai "CGI-Mailer"...

    Je préfèrerais avoir l'adresse mail de l'expéditeur pour pouvoir répondre directement...
    0
    1. mathieu_n Messages postés 67 Statut Membre 14
       
      Bon finalement, ca ne marche plus avec php 7.3

      lorsque j'essaie d'envoyer mon formulaire de contact, il me retourne un message d'erreur.



      error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); Probl�me d'envoi du mail
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > mathieu_n Messages postés 67 Statut Membre
         
        Il nous faudrait le message d'erreur exact ainsi que le code que tu as modifié
        0
  4. mathieu_n Messages postés 67 Statut Membre 14
     
    Merci beaucoup pour ton aide...

    voici le message d'erreur sur le site:
    error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE);

    voici mon fichier formmail.php


    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);

    <?php
    $TO = "contact@monsite.fr";

    //$email=$_POST['email'];
    //$header= 'From:'.$email.'';

    $headers = "From: ".$_POST['email'] ."";
    //$headers .= "X-Mailer: PHP/" . phpversion();

    $subject="www.monsite.fr";
    $message = "";

    foreach($HTTP_POST_VARS as $key=>$val){
    $message .= "$key : $val\n";
    }

    //test si bien envoyé
    if(mail($TO, $subject, $message, $h)){

    Header("Location: merci.html");

    }else{

    echo "Problème d'envoi du mail";
    }

    ?>
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ta balise d'ouverture de code PHP ne se situe pas au début de ton fichier
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mathieu_n Messages postés 67 Statut Membre 14
     
    Désolé pour ces erreurs de débutant!!!

    J'ai donc réalisé les modifs, voici les messages d'erreur:

    Notice: Undefined variable: HTTP_POST_VARS in /homepages/28/d397070128/htdocs/formmail.php on line 24

    Warning: Invalid argument supplied for foreach() in /homepages/28/d397070128/htdocs/formmail.php on line 24

    Notice: Undefined variable: h in /homepages/28/d397070128/htdocs/formmail.php on line 29

    Warning: mail(): headers parameter must be string or array in /homepages/28/d397070128/htdocs/formmail.php on line 29
    Probl�me d'envoi du mail
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Oui,
      Comme te l'avais indiqué Yg_be, HTTP_POST_VARS est également obsolète et il faut le remplacer par $_POST
      https://www.php.net/manual/fr/reserved.variables.post.php

      Tu as également fait une erreur sur le nom de ta variabe
      ce n'est pas $h mais $headers
      0
      1. mathieu_n Messages postés 67 Statut Membre 14 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci pour ta réactivité et ton aide!!!!
        C'est vraiment super sympa

        Tout fonctionne parfaitement... Merci beaucoup ;-)
        0