Probleme de variable non definies

Résolu
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 20 avril 2024 à 12:11
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 21 avril 2024 à 23:21

Bonjour à tous,

Je viens de réaliser une mise à jour sur mon serveur, passant de PHP version 7.4 à PHP 8. Auparavant, je ne rencontrais aucun souci, mais suite à cette mise à jour, j'ai dû gérer plusieurs erreurs. Cependant, je bloque actuellement sur mon bon de commande qui semble rencontrer des variables non définies.

Voici comment est constitué mon code :

Vu la taille du code, il m'est impossible de le poster dans son intégralité. Cependant, voici comment il fonctionne : il se divise en trois parties.

La première partie est "panier.php", contenant le code principal.

La deuxième partie est l'envoi par e-mail, géré par "mail.php".

La troisième partie est "panier.js", qui gère le JavaScript.

Le problème semble se situer dans le fichier "mail.php". J'en suis convaincu car dans mon fichier principal "panier.php", je ne rencontre aucune erreur PHP.

Comment pourrais-je faire pour afficher les erreurs rencontrées dans "mail.php" ?

Voici la partie de mon code qui gère l'envoi des données vers "mail.php" :

            <script src="panier.js"></script>
            <!-- pour envoyer les infos vers mail.php -->
            <script>
                function commander(
                    nom,
                    prenom,
                    adresse,
                    cp,
                    email,
                    adressepoint,
                    cppoint,
                    villepoint,
                    commande,
                    prix_total,
                    remise,
                    nouveau_prix,
                    prix_depart,
                    total_qte_bas,
                    message,
                    promotioncases,
                    ancien_prix_livraison_incluse,
                    ville,
                    pays,
                    detail_livraison,
                    code_promo,
                    coefficient_promo,
                    nouveau_prix_sans_livraison,
                    ancien_prix_livraison_incluse_azerty,
                    nameazerty,
                    myImg,
                    cb_Nom,
                    cb_Adresse,
                    cb_CP,
                    cb_VILLE,
                    cb_PAYS
                ) {
                    $.ajax({
                        url: "mail.php",
                        type: "POST",
                        data:
                            "nom=" +
                            nom +
                            "&prenom=" +
                            prenom +
                            "&adresse=" +
                            adresse +
                            "&cp=" +
                            cp +
                            "&email=" +
                            email +
                            "&adressepoint=" +
                            adressepoint +
                            "&cppoint=" +
                            cppoint +
                            "&villepoint=" +
                            villepoint +
                            "&commande=" +
                            commande +
                            "&prix_total=" +
                            prix_total +
                            "&remise=" +
                            remise +
                            "&nouveau_prix=" +
                            nouveau_prix +
                            "&prix_depart=" +
                            prix_depart +
                            "&total_qte_bas=" +
                            total_qte_bas +
                            "&message=" +
                            message +
                            "&promotioncases=" +
                            promotioncases +
                            "&ancien_prix_livraison_incluse=" +
                            ancien_prix_livraison_incluse +
                            "&ville=" +
                            ville +
                             "&pays=" +
                            pays +
                            "&detail_livraison=" +
                            detail_livraison +
                            "&code_promo=" +
                            code_promo +
                            "&coefficient_promo=" +
                            coefficient_promo +
                           "&nouveau_prix_sans_livraison=" +
                            nouveau_prix_sans_livraison +
                            "&ancien_prix_livraison_incluse_azerty=" +
                            ancien_prix_livraison_incluse_azerty +
                            "&nameazerty=" +
                            nameazerty +
							"&myImg=" +
                            myImg + 
							"&cb_Nom=" +
                            cb_Nom +
                            "&cb_Adresse=" +
                            cb_Adresse +
                            "&cb_CP=" +
                            cb_CP +
                            "&cb_VILLE=" +
                            cb_VILLE +
                            "&cb_PAYS=" +
                            cb_PAYS,
                        dataType: "html",
                        success: function (reponse) {
                            if (reponse == "1") {
                                //MonPanier.clearpanier();
                                afficherpanier();
                                document.body.scrollTop = 0;
                                document.documentElement.scrollTop = 0;
                                $("#mymodal").modal("show");
                            }
                            if (reponse == "0-1") {
                                $("#mymodal_erreur_1").modal("show");
                            }
                  
                            if (reponse == "0") {
                                $("#mymodal_erreur").modal("show");
                            }
                        },
                    });
                }
                $("#commander").click(function () {
                    var nom = document.getElementById("nom").value;
                    var prenom = document.getElementById("prenom").value;
                    var adresse = document.getElementById("adresse").value;
                    var cp = document.getElementById("cp").value;
                    var ville = document.getElementById("ville").value;
                    var pays = document.getElementById("pays").value;
                    var email = document.getElementById("email").value;
                    var adressepoint = document.getElementById("adressepoint").value;
                    var cppoint = document.getElementById("cppoint").value;
                    var villepoint = document.getElementById("villepoint").value;
                    var commande = JSON.stringify(panier);
                    var detail_livraison = document.getElementById("livraison-detail").innerHTML;
                    var code_promo = document.getElementById("code_promo").innerHTML;
                    var coefficient_promo = document.getElementById("coefficient_promo").innerHTML;
                    var nouveau_prix_sans_livraison = document.getElementById("nouveau_prix_sans_livraison").innerHTML;
                    var ancien_prix_livraison_incluse_azerty = document.getElementById("ancien_prix_livraison_incluse_azerty").innerHTML;
                    var nameazerty = document.getElementById("nameazerty").innerHTML;
					var myImg = document.getElementById("myImg").innerHTML;
                    var prix_total = document.getElementById("prix_total").innerHTML;
                    var remise = document.getElementById("remise").innerHTML;
                  var nouveau_prix = document.getElementById("nouveau_prix").innerHTML;
                    var prix_depart = document.getElementById("prix_depart").innerHTML;
                    var total_qte_bas = document.getElementById("total_qte_bas").innerHTML;
                    var message = encodeURIComponent(document.getElementById("message").value);
                    var promotioncases = document.querySelector("input[name=promotioncases]:checked").value;
                    var ancien_prix_livraison_incluse = document.getElementById("ancien_prix_livraison_incluse").innerHTML;
                    var cb_Nom = document.getElementById("cb_Nom").value;
                    var cb_Adresse = document.getElementById("cb_Adresse").value;
                  var cb_CP = document.getElementById("cb_CP").value;
                    var cb_VILLE = document.getElementById("cb_VILLE").value;
                    var cb_PAYS = document.getElementById("cb_PAYS").value;
                    //console.log(promotioncases);
                    //console.log(commande);
                       
                    commander(
                        nom,
                        prenom,
                        adresse,
                        cp,
                        email,
                        adressepoint,
                        cppoint,
                        villepoint,
                        commande,
                        prix_total,
                        remise,
                        nouveau_prix,
                        prix_depart,
                        total_qte_bas,
                        message,
                        promotioncases,
                       ancien_prix_livraison_incluse,
                        ville,
                        pays,
                        detail_livraison,
                        code_promo,
                       coefficient_promo,
                       nouveau_prix_sans_livraison,
                        ancien_prix_livraison_incluse_azerty,
                        nameazerty,
						myImg,
                        cb_Nom,
                        cb_Adresse,
                        cb_CP,
                        cb_VILLE,
                        cb_PAYS
                    );
                });
            </script>

3 réponses

flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
Modifié le 20 avril 2024 à 15:31

Voilà, je viens de vérifier avec le débogage de l'Ajax et les données sont bien transmises à l'autre page, à savoir mail.php.

J'ai donc réalisé une autre expérience : j'ai copié-collé le contenu de mail.php dans mon code panier.php. Enfin, j'ai pu voir les erreurs.

J'ai corrigé les erreurs au niveau du PHP, donc plus aucune erreur.

Cependant, l'envoi du mail ne fonctionne toujours pas.

pourtant l'onglet requete posséde bien les données

1
jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
20 avril 2024 à 15:32

Sans voir le code php concerné .......  impossible de te répondre.

Il faudrait également nous dire où tu héberges ton site .. certains hébergeurs bloquants ou limitant les envois de mails

1
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187 > jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024
20 avril 2024 à 16:06

Voir le code, cela est impossible, il fait des centaines de lignes. Cependant, dans mail.php, j'ai aussi un enregistrement dans la base de données qui fonctionne.

Donc, je pense que ma façon d'envoyer les e-mails ne fonctionne tout simplement plus avec PHP 8. Ce qui est bizarre, c'est que je devrais recevoir des messages d'erreur.

Pourtant, je vois l'echo s'afficher à 10000, ce qui indique que le mail est bien envoyé. Bien évidemment, j'ai essayé plusieurs adresses e-mail mais sans succès

$sujet = 'Commande reçue d\'un client';

$messagez = "
Nom: <span style='color:red;font-weight: bold;'>".$nom."</span><br>
Prénom: <span style='color:red;font-weight: bold;'>".$prenom."</span><br>
Adresse: <span style='color:red;font-weight: bold;'>".$adresse."</span><br>
Code postal: <span style='color:red;font-weight: bold;'>".$cp."</span><br>
Ville: <span style='color:red;font-weight: bold;'>".$ville."</span><br>
Pays: <span style='color:red;font-weight: bold;'>".$pays."</span><br>
Adresse e-Mail: <span style='color:red;font-weight: bold;'>".$email."</span><br>
Message: <span style='color:red;font-weight: bold;'>".$message."</span><br>
Adresse du point d'enlèvement: <span style='color:red;font-weight: bold;'>".$adressepoint."</span><br>
Code postal du point d'enlèvement: <span style='color:red;font-weight: bold;'>".$cppoint."</span><br>
Ville du point d'enlèvement: <span style='color:red;font-weight: bold;'>".$villepoint."</span><br>
Nom de mondial_relay: <span style='color:red;font-weight: bold;'>".$cb_Nom."</span><br>
Adresse de mondial_relay: <span style='color:red;font-weight: bold;'>".$cb_Adresse."</span><br>
Code postal de mondial_relay: <span style='color:red;font-weight: bold;'>".$cb_CP."</span><br>
Ville de mondial_relay: <span style='color:red;font-weight: bold;'>".$cb_VILLE."</span><br>
Pays de mondial_relay: <span style='color:red;font-weight: bold;'>".$cb_PAYS."</span><br><br>
Votre commande <br>";


$headers = "From: \"Le client vient de passer une commande\" <".$destinataire.">\n";
$headers .= "Reply-To: ".$destinataire."\n";
$headers .= "Content-Type: text/html; charset=\"utf-8\"";

// Si tout est bon, je passe à l'envoi pour le client 
// Cela est divisé en conditions suivant le mode de livraison
if (mail("tal@gmail.com", $sujet, $messagez, $headers)) {
    echo "10000000";
}
1
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187 > flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024
Modifié le 20 avril 2024 à 16:14

je suis chez hostinger

je viens d'essayer de cette facon mais c'est pareil
et pour rappel avec php7.3 cela fonctionne
 

$to      = 'tal@gmail.com';
     $subject = 'le sujet';
     $message = 'Bonjour !';
     $headers = 'From: webmaster@example.com' . "\r\n" .
     'Reply-To: webmaster@example.com' . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

     mail($to, $subject, $message, $headers);
1
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187 > jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024
Modifié le 20 avril 2024 à 17:03

Merci pour la reponse en fait je pense que cela vient de mon hebergeur 
car meme le plus simple des codes dans un fichier php pour un envois de mail ne fonctionne pas

je dois donc tenter autre chose je pense comme phpmailer sauf erreurde ma part

je viens d'essayer de m'envoyer un message voici la reponse

 

Échec de la remise pour ces destinataires ou groupes :

phil@pecheperle.be (phil@pecheperle.be)
Votre message n’a pas été remis car le fournisseur de courrier du destinataire l’a rejeté.

1
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187 > flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024
21 avril 2024 à 09:32

Bonjour,

Je reviens vers vous car apparemment mes e-mails fonctionnent à présent.

Voici les vérifications et tests que je viens d'effectuer ainsi que mes constatations.

Je possède un bon de commande avec un fichier mail.php.

Dans ce fichier mail.php, j'ai plusieurs parties :

  • La récupération des données envoyées.
  • Le traitement des données.
  • L'enregistrement dans la base de données de la commande.
  • L'envoi par e-mail de la commande.

Sous PHP 7.3, tout fonctionne correctement. En revanche, sous PHP 8, l'enregistrement en base de données fonctionne, mais l'envoi par e-mail ne fonctionne pas.

Je poste donc uniquement mon fichier mail.php que j'ai réduit à sa plus simple expression possible afin de déterminer où cela peut bien bloquer.

$destinataire = "phil@pecheperle.be";

$livraison = !empty($_POST["detail_livraison"]) ? trim($_POST["detail_livraison"]) : NULL;

//donnees postale
$nom = !empty($_POST["nom"]) ? trim($_POST["nom"]) : NULL;
$prenom = !empty($_POST["prenom"]) ? trim($_POST["prenom"]) : NULL;
$adresse = !empty($_POST["adresse"]) ? trim($_POST["adresse"]) : NULL;
$cp = !empty($_POST["cp"]) ? trim($_POST["cp"]) : NULL;
$ville = !empty($_POST["ville"]) ? trim($_POST["ville"]) : NULL;
$pays = !empty($_POST["pays"]) ? trim($_POST["pays"]) : NULL;
$email = !empty($_POST["email"]) ? trim($_POST["email"]) : NULL;

//donnees mndial relay
$cb_Nom = !empty($_POST["cb_Nom"]) ? trim($_POST["cb_Nom"]) :0;
$cb_CP = !empty($_POST["cb_CP"]) ? trim($_POST["cb_CP"]) : 0;
$cb_PAYS = $pays ;
$cb_ID = "0";
$cb_VILLE = !empty($_POST["cb_VILLE"]) ? trim($_POST["cb_VILLE"]) : 0;
$cb_Adresse = !empty($_POST["cb_Adresse"]) ? trim($_POST["cb_Adresse"]) : 0;

//le message
$message = !empty($_POST["message"]) ? trim($_POST["message"]) : 0;

$promotioncases = !empty($_POST["promotioncases"]) ? trim($_POST["promotioncases"]) : 0;
$ancien_prix_livraison_incluse = !empty($_POST["ancien_prix_livraison_incluse"]) ? trim($_POST["ancien_prix_livraison_incluse"]) : 0;

//point retrait
$adressepoint = !empty($_POST["adressepoint"]) ? trim($_POST["adressepoint"]) : 0;
$cppoint = !empty($_POST["cppoint"]) ? trim($_POST["cppoint"]) : 0;
$villepoint = !empty($_POST["villepoint"]) ? trim($_POST["villepoint"]) : 0;

//prix normal
$prix_depart = !empty($_POST["prix_depart"]) ? trim($_POST["prix_depart"]) : NULL;
$total_qte_bas = !empty($_POST["total_qte_bas"]) ? trim($_POST["total_qte_bas"]) : 0;
$prix_total = !empty($_POST["prix_total"]) ? trim($_POST["prix_total"]) : NULL;
$livraison = !empty($_POST["detail_livraison"]) ? trim($_POST["detail_livraison"]) : NULL;
$commande = isset($_POST["commande"]) ? trim($_POST["commande"]) : NULL;

//code promo
$nouveau_prix = !empty($_POST["nouveau_prix"]) ? trim($_POST["nouveau_prix"]) : 0 ;
$myImg = !empty($_POST["myImg"]) ? trim($_POST["myImg"]) : 0 ;
$code_promo = !empty($_POST["code_promo"]) ? trim($_POST["code_promo"]) : 0 ;
$coefficient_promo = !empty($_POST["coefficient_promo"]) ? trim($_POST["coefficient_promo"]) : NULL;
$nouveau_prix_sans_livraison = !empty($_POST["nouveau_prix_sans_livraison"]) ? trim($_POST["nouveau_prix_sans_livraison"]) : 0;
$remise = isset($_POST["remise"]) ? trim($_POST["remise"]) : 0;
$frais_fixe = isset($_POST["frais_fixe"]) ? trim($_POST["frais_fixe"]) : 0;
$ancien_prix_livraison_incluse_azerty= isset($_POST["ancien_prix_livraison_incluse_azerty"]) ? trim($_POST["ancien_prix_livraison_incluse_azerty"]) : 0;
$nameazerty= isset($_POST["nameazerty"]) ? trim($_POST["nameazerty"]) : 0;


$date = date('Y/m/d');




include('base.php');

 $sql = "INSERT INTO commander (nom,prenom,adresse,cp,ville,pays,email,adressepoint,cppoint,villepoint,livraison,message,commande,prix_total,frais_fixe,remise,total_qte_bas,prix_depart,code_promo,cb_ID,cb_Nom,cb_Adresse,cb_CP,cb_VILLE,cb_PAYS,date ) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

 $datas = array($nom ,$prenom,$adresse,$cp,$ville,$pays,$email,$adressepoint,$cppoint,$villepoint,$livraison,$message, $commande,$prix_total,$frais_fixe,$remise,$total_qte_bas,$prix_depart,$code_promo,$cb_ID,$cb_Nom,$cb_Adresse,$cb_CP,$cb_VILLE,$cb_PAYS,$date);

//Execution de la requete
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($datas) ;
}catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas);
}


$sujet = 'Commande reçue d un client';

$messagez ="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
$headers = "From: \"Le client vient de passer une commande  \"<".$destinataire.">\n";
$headers .= "Reply-To: ".$destinataire."\n";
$headers .= "Content-Type: text/html; charset=\"utf-8\"";

//si tout est bon je passe a l'envois pour le client 
//cela est diviser en condition suivant le mode de livraison 
 if(mail("2@gmail.com",$sujet,$messagez,$headers))
  {
    echo "10000000";/*
1
jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
20 avril 2024 à 13:26
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
20 avril 2024 à 14:40

bonjour jordane

Merci je regarde a cela 

0