Probleme compatibilité php 7.3

Résolu
mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

5 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Au passage, quelques conseils à appliquer dans l'écriture de ton code php ( plus particulièrement.. l'activation des erreurs php )
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
0
mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   14
 
Bonjour,
Merci beaucoup pour votre répondre extrêmement claire et précise ;-)

Je fais les modifications tout de suite...
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, pourquoi penses-tu que ton code n'est pas compatible?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
il suffit peut-être de remplacer $HTTP_POST_VARS par $_POST.
0
mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   14
 
bonjour, quand je fais le test, je ne reçois aucun message
0
mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   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
mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention  
 
Il nous faudrait le message d'erreur exact ainsi que le code que tu as modifié
0
mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Ta balise d'ouverture de code PHP ne se situe pas au début de ton fichier
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
mathieu_n Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   14 > jordane45 Messages postés 38486 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