Variable non récupérée dans mon mailsender

Résolu/Fermé
ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016 - Modifié par ghisloy le 21/12/2015 à 21:28
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 22 déc. 2015 à 12:08
Le mail part mais, l'url <a href="http://www.headlines-group.net/icompare/active.php?NumReservation=<?php echo $nom_hotel['NumReservation'] ?>?lire=<?php echo md5(11); ?>&action=<?php echo md5(0131); ?>"></a> ne récupère pas le NumReservation (permettant d activer la reservation) et pareil pour celui qui récupère le Code (permettant d'annuler la reservation) dans le lien que j'envoie au client. c'est vrai que le lien part mais la partie NumReservation=est vide au lieu de récupérer le numero. svp voyez moi ça. j'ai tout fais depuis hier en vain.
vous pouvez vous rendre sur le site http://www.headlines-group.net/icompare (il s agit d'un comparateur d hotels version amateur) faites une reservation et checker votre mail vous verrez que l'url contenu dedans ne comporte pas les variables que je veux récuperer


<?php   
    require_once("connexion.php"); 
    $NumReservation=strtoupper(substr(md5(uniqid()),0,7));
    if(isset($_POST['bouton'])){
            $code=strtoupper(substr(md5(uniqid()),0,5));
            $requete4="INSERT INTO RESERVATION SET NomClient='".$_POST['NomClient']."',PrenClient='".$_POST['PrenClient']."',TelClient='".$_POST['TelClient']."',AdresClient='".$_POST['AdresClient']."',EmailClient='".$_POST['EmailClient']."',AgeClient='".$_POST['AgeClient']."',Nationalite='".$_POST['Nationalite']."',MotifReservation='".$_POST['MotifReservation']."',Demande='".$_POST['Demande']."',Code='$code',DateReservation='".$_POST['DateReservation']."',NumReservation='".$_POST['NumReservation']."',NumHotel='".$_POST['NumHotel']."'";
            $resultat4=mysql_query($requete4);

            $requete5="INSERT INTO CONCERNER SET NumTypeChambre='".$_POST['NumTypeChambre']."',NumService='".$_POST['NumService']."',NumReservation='".$_POST['NumReservation']."',Qte='".$_POST['Qte']."',DateArrive='".$_POST['DateArrive']."',DateRetour='".$_POST['DateRetour']."' ";
            $resultat5=mysql_query($requete5);
            $reqhotel="SELECT * FROM HOTEL, RESERVATION WHERE HOTEL.NumHotel=RESERVATION.NumHotel AND RESERVATION.NumReservation='".$_GET['NumReservation']."'";
            $resultathotel=mysql_query($reqhotel);
            $nom_hotel=mysql_fetch_array($resultathotel);
            
    // Envoi d'email via PHP Mailer
    include_once("admin/phpmailer/class.phpmailer.php");
    ob_start(); ?>
    <div>Bonjour <?php echo $nom_hotel['NomClient'];?> <?php echo $nom_hotel['PrenClient'];?><br/> Vous venez d'effectuer une réservation de chambre a <?php echo $nom_hotel['NomHotel'];?> merci d’activer votre re´servation en cliquant sur <a href="http://www.headlines-group.net/icompare/active.php?NumReservation=<?php echo $nom_hotel['NumReservation'] ?>?lire=<?php echo md5(11); ?>&action=<?php echo md5(0131); ?>"><b>activer votre réservation</b></a>.<br/>
    Au cas ou vous voudriez procéder à l'annulation de votre réservation, veuillez cliquer sur <a href="http://www.headlines-group.net/icompare/annuler.php?Code=<?php echo $nom_hotel['Code'] ?>?lire=<?php echo md5(121); ?>&action=<?php echo md5(007); ?>"><b>Annuler la réservation</b></a>. <br/><br/>
    
    Merci de bien garder secret ce code <?php echo $nom_hotel['NumReservation'];?> car il vous permettra de donner un avis personnel sur l'hôtel.</br>
    <p style="color:red;">Ceci est un mail automatique. Merci de ne pas y répondre</p></br>
    Cordialement
    </div>
    <?php $contenu = ob_get_clean();
    $mail = new PHPmailer(); $mail->IsMail(); $mail->IsHTML(true);
    $mail->From="icompare@headlines-group.net"; $mail->FromName="I Compare Point Com";
    $mail->AddAddress("{$_POST['EmailClient']}", "{$_POST['NomClient']} {$_POST['PrenClient']}");    
    //$mail->AddBCC("adresse_emal_cci", "Identite CCI");
    $mail->AddReplyTo("icomparenoreply@headlines-group.net", " No Reply");  
    $mail->Subject="Activer de votre réservation";
    $mail->Body=$contenu; 
    $mail->Send(); 
    $mail->SmtpClose(); 
    unset($mail);

    }
    
    
    
    if(isset($_GET['lire'])){
        $requete1="SELECT AVOIR.Prix,AVOIR.NumTypeChambre,AVOIR.NumHotel,TYPE_CHAMBRE.NumTypeChambre,TYPE_CHAMBRE.LibTypeChambre,HOTEL.NumHotel,NomHotel,DescriptionHotel,Photo,TelHotel,Situation,AdresHotel,Email,Image1,Image2,Image3,Image4,Image5,Image6,VILLE.LibVille FROM VILLE,HOTEL,TYPE_CHAMBRE,AVOIR WHERE md5( HOTEL.NumHotel ) LIKE '%".$_GET['lire']."%' AND TYPE_CHAMBRE.NumTypeChambre=AVOIR.NumTypeChambre AND HOTEL.NumHotel=AVOIR.NumHotel AND  VILLE.NumVille=HOTEL.NumVille  ";
        $resultat1=mysql_query($requete1) or die(mysql_error());



        $requete2="SELECT CARACTERISTIQUE.LibCaracteristique,DISPOSER.NumCaracteristique,DISPOSER.NumTypeChambre,AVOIR.Prix,AVOIR.NumTypeChambre,AVOIR.ImageType,AVOIR.NumHotel,TYPE_CHAMBRE.NumTypeChambre,TYPE_CHAMBRE.LibTypeChambre,HOTEL.NumHotel, NomHotel,Caracteristique,DescriptionHotel,Photo,TelHotel,Situation,AdresHotel,Email,Image1,Image2,Image3,Image4,Image5,Image6,Image7,Image8,Image9,Image10,VILLE.LibVille FROM VILLE,DISPOSER,CARACTERISTIQUE,HOTEL,TYPE_CHAMBRE,AVOIR WHERE  md5(HOTEL.NumHotel) LIKE  '%".$_GET['lire']."%' AND TYPE_CHAMBRE.NumTypeChambre=AVOIR.NumTypeChambre AND  md5(HOTEL.NumHotel)= md5(AVOIR.NumHotel) AND  VILLE.NumVille=HOTEL.NumVille AND CARACTERISTIQUE.NumCaracteristique=DISPOSER.NumCaracteristique AND TYPE_CHAMBRE.NumTypeChambre=DISPOSER.NumTypeChambre";
        $resultat2=mysql_query($requete2);

        $requetetop="UPDATE HOTEL SET HOTEL.TopRech=HOTEL.TopRech+1 WHERE md5(NumHotel) LIKE'%".$_GET['lire']."%'";
        $restop=mysql_query($requetetop);


    }
        $requete3="SELECT * FROM SERVICE_PLUS";
        $resultat3=mysql_query($requete3);

    
?>

3 réponses

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
21 déc. 2015 à 20:57
Bonjour ( SI si ... ça se dit !!!! )

Et puis... un petit texte explicatif indiquant le souci rencontré (en détail....) serait le bienvenue non ?

Donc... quel est le souci ?
De quelles variables parles tu ?
Qu'as tu déjà vérifié ?





0
ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016
Modifié par ghisloy le 21/12/2015 à 21:31
salut Jordane45 mes excuses c'était une erreur

Le mail part mais, l'url
<a href="http://www.headlines-group.net/icompare/active.php?NumReservation=<?php echo $nom_hotel['NumReservation'] ?>?lire=<?php echo md5(11); ?>&action=<?php echo md5(0131); ?>"></a>
ne récupère pas le NumReservation (permettant d activer la reservation) et pareil pour celui qui récupère le Code (permettant d'annuler la reservation) dans le lien que j'envoie au client. c'est vrai que le lien part mais la partie NumReservation=est vide au lieu de récupérer le numero. svp voyez moi ça. j'ai tout fais depuis hier en vain.
vous pouvez vous rendre sur le site http://www.headlines-group.net/icompare (il s agit d'un comparateur d hotels version amateur) faites une reservation et checker votre mail vous verrez que l'url contenu dedans ne comporte pas les variables que je veux récuperer
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié par jordane45 le 21/12/2015 à 22:12
Petite question.. pourquoi passes tu par de l'ob_start ?

    ob_start(); ?>
    <div>Bonjour <?php echo $nom_hotel['NomClient'];?> <?php echo $nom_hotel['PrenClient'];?><br/> Vous venez d'effectuer une réservation de chambre a <?php echo $nom_hotel['NomHotel'];?> merci d’activer votre re´servation en cliquant sur <a href="http://www.headlines-group.net/icompare/active.php?NumReservation=<?php echo $nom_hotel['NumReservation'] ?>?lire=<?php echo md5(11); ?>&action=<?php echo md5(0131); ?>"><b>activer votre réservation</b></a>.<br/>
    Au cas ou vous voudriez procéder à l'annulation de votre réservation, veuillez cliquer sur <a href="http://www.headlines-group.net/icompare/annuler.php?Code=<?php echo $nom_hotel['Code'] ?>?lire=<?php echo md5(121); ?>&action=<?php echo md5(007); ?>"><b>Annuler la réservation</b></a>. <br/><br/>
    
    Merci de bien garder secret ce code <?php echo $nom_hotel['NumReservation'];?> car il vous permettra de donner un avis personnel sur l'hôtel.</br>
    <p style="color:red;">Ceci est un mail automatique. Merci de ne pas y répondre</p></br>
    Cordialement
    </div>
    <?php $contenu = ob_get_clean();


Ne serait-ce pas plus simple de le faire comme ceci :
$NomClient =  $nom_hotel['NomClient'] ;
$PrenClient = $nom_hotel['PrenClient'];
$NomHotel = $nom_hotel['NomHotel'];
$NumReservation = $nom_hotel['NumReservation'];
$Code = $nom_hotel['Code'];

$contenu = "<div>Bonjour $NomClient $PrenClient
             <br/> Vous venez d'effectuer une réservation de chambre a $NomHotel
       merci d’activer votre réservation en cliquant sur <a href='http://www.headlines-group.net/icompare/active.php?NumReservation=$NumReservation&lire=".md5(11)."&action=". md5(0131)."
       <b>activer votre réservation</b></a>.
       <br/> Au cas ou vous voudriez procéder à l'annulation de votre réservation, veuillez cliquer sur <a href='http://www.headlines-group.net/icompare/annuler.php?Code=$Code&lire=".md5(121)."&action=".md5(007)."'>
       <b>Annuler la réservation</b></a>.
       <br/><br/>Merci de bien garder secret ce code $NumReservation car il vous permettra de donner un avis personnel sur l'hôtel.</br>
             <p style='color:red;'>Ceci est un mail automatique. Merci de ne pas y répondre</p></br>
              Cordialement
            </div>";


Cordialement, 
Jordane                                                                 
0
ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016
22 déc. 2015 à 08:40
c'est le script de mail sender que l'on m a donné ça. parait que ceci n'envoie pas les mails dans le spam donc voilà pourquoi je l'ai utilisé
0
ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016
22 déc. 2015 à 10:08
j'ai recopier puis coller ton script mais c est le meme resultat. je me suis rendu compte que en fait cette requette
$reqhotel="SELECT * FROM HOTEL, RESERVATION WHERE HOTEL.NumHotel=RESERVATION.NumHotel AND RESERVATION.NumReservation='".$_GET['NumReservation']."'";

            $resultathotel=mysql_query($reqhotel);

            $nom_hotel=mysql_fetch_array($resultathotel);

ne marche pas car elle ne GET pas le NumReservation :-( je ne m en sors pas.
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016
Modifié par jordane45 le 22/12/2015 à 10:34
Tu as quoi dans la barre d'adresse ?
La variable NumReservation est présente ?

Si tu mets un
 print_r($_GET); ?> 
au début de ta page... qu'est-ce que ça t'affiche ?
0
ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016
Modifié par ghisloy le 22/12/2015 à 10:41
non la variable n'est pas presente ça met NumReservation=(vide) il n y a rien apres le =

http://www.headlines-group.net/icompare/active.php?NumReservation=&lire=6512bd43d9caa6e02c990b0a82652dca&action=7647966b7343c29048673252e490f736


j ai mis echo afin d afficher le resultat de la requette et j obtiens

Notice: Undefined index: NumReservation in C:\Program Files (x86)\EasyPHP-12.1\www\IIComparePointCom\info.php on line 12
Resource id #5
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016
22 déc. 2015 à 10:42
A quel moment est généré l'URL qui est sensée contenir ce NumReservation ?
Quelle ligne de code exactement ?
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié par jordane45 le 22/12/2015 à 12:09
Bon...
Histoire de rendre ton code plus propre et plus facile à lire il faut :
- Découper en fonctions
- Faire des retours à la ligne au niveau de tes requêtes
- Récupérer proprement les différentes variables ...


Voici le début du code retravaillé :
<?php

//connexion à la BDD
require_once("connexion.php"); 

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
//fonction getParams()
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
//permet de récupérer proprement les variables....
//par défaut : Méthode = POST
// valeur par défaut : ''
if(!function_exists('getParams')){
 function getParams($name,$method="POST",$default=''){  
     switch ($method){
     case "POST":
         $var = isset($_POST[$name])?$_POST[$name]:$default;
         break;
     case "GET":
          $var = isset($_GET[$name])?$_GET[$name]:$default;
         break;
     }
     return trim($var);
 }
}


//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
// Fonctions
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

function INSERT_INTO_RESERVATION($NomClient,$PrenClient,$TelClient,$AdresClient,$EmailClient,$AgeClient,$Nationalite,$MotifReservation,$Demande,$DateReservation,$NumReservation,$NumHotel){
 $code=strtoupper(substr(md5(uniqid()),0,5));
 $sql="INSERT INTO RESERVATION 
        SET NomClient='$NomClient'
        ,PrenClient='$PrenClient'
        ,TelClient='$TelClient'
        ,AdresClient='$AdresClient'
        ,EmailClient='$EmailClient'
        ,AgeClient='$AgeClient'
        ,Nationalite='$Nationalite'
        ,MotifReservation='$MotifReservation'
        ,Demande='$Demande'
        ,Code='$code'
        ,DateReservation='$DateReservation'
        ,NumReservation='$NumReservation'
        ,NumHotel='$NumHotel'";
 
 $result=mysql_query($sql) or die('<br>Erreur !<br>'.$sql);
 return $result;
}

function INSERT_INTO_CONCERNER($NumTypeChambre,$NumService,$NumReservation,$Qte,$DateArrive,$DateRetour){
 $sql="INSERT INTO CONCERNER 
     SET NumTypeChambre='$NumTypeChambre'
       ,NumService='$NumService'
       ,NumReservation='$NumReservation'
       ,Qte='$Qte'
       ,DateArrive='$DateArrive'
       ,DateRetour='$DateRetour' ";
 $result=mysql_query($sql) or die('<br>Erreur !<br>'.$sql);
 return $result;
}


function GET_INFOS_RESERVATION($NumReservation){
 $sql="SELECT * 
       FROM HOTEL, RESERVATION 
    WHERE HOTEL.NumHotel=RESERVATION.NumHotel 
    AND RESERVATION.NumReservation='$NumReservation'";
 $result = mysql_query($reqhotel)  or die('<br>Erreur !<br>'.$sql);
 return mysql_fetch_array($resultathotel);
 
}

function SendMail($EmailClient,$NomClient,$PrenClient,$datas){
 $NomClient =  $datas['NomClient'] ;
 $PrenClient = $datas['PrenClient'];
 $NomHotel = $datas['NomHotel'];
 $NumReservation = $datas['NumReservation'];
 $Code = $datas['Code'];

 $contenu = "<div>Bonjour $NomClient $PrenClient
        <br/> Vous venez d'effectuer une réservation de chambre a $NomHotel
        merci d’activer votre réservation en cliquant sur <a href='http://www.headlines-group.net/icompare/active.php?NumReservation=$NumReservation&lire=".md5(11)."&action=". md5(0131)."
        <b>activer votre réservation</b></a>.
        <br/> Au cas ou vous voudriez procéder à l'annulation de votre réservation, veuillez cliquer sur <a href='http://www.headlines-group.net/icompare/annuler.php?Code=$Code&lire=".md5(121)."&action=".md5(007)."'>
        <b>Annuler la réservation</b></a>.
        <br/><br/>Merci de bien garder secret ce code $NumReservation car il vous permettra de donner un avis personnel sur l'hôtel.</br>
        <p style='color:red;'>Ceci est un mail automatique. Merci de ne pas y répondre</p></br>
        Cordialement
       </div>";
 
   $mail = new PHPmailer(); 
  $mail->IsMail();
  $mail->IsHTML(true);
    $mail->From="icompare@headlines-group.net"; 
  $mail->FromName="I Compare Point Com";
    $mail->AddAddress("$EmailClient", "$NomClient $PrenClient");    
    //$mail->AddBCC("adresse_emal_cci", "Identite CCI");
    $mail->AddReplyTo("icomparenoreply@headlines-group.net", " No Reply");  
    $mail->Subject="Activer de votre réservation";
    $mail->Body=$contenu; 
    $mail->Send(); 
    $mail->SmtpClose(); 
    unset($mail);
}

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
//récupération propre des variables
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
$NomClient = getParams('NomClient');
$PrenClient = getParams('PrenClient');
$TelClient = getParams('TelClient');
$AdresClient = getParams('AdresClient');
$EmailClient = getParams('EmailClient');
$AgeClient = getParams('AgeClient');
$Nationalite = getParams('Nationalite');
$MotifReservation = getParams('MotifReservation');
$Demande = getParams('Demande');
$DateReservation = getParams('DateReservation');
$NumHote = getParams('NumHote');
$NumTypeChambre = getParams('NumTypeChambre');
$NumService = getParams('NumService');
$Qte = getParams('Qte');
$DateArrive = getParams('DateArrive');
$DateRetour = getParams('DateRetour');





// Début du programme :
if(isset($_POST['bouton'])){
 $NumReservation = getParams('NumReservation','POST',strtoupper(substr(md5(uniqid()),0,7)););
 
 INSERT_INTO_RESERVATION($NomClient,$PrenClient,$TelClient,$AdresClient,$EmailClient,$AgeClient,$Nationalite,$MotifReservation,$Demande,$DateReservation,$NumReservation,$NumHotel);$
 
 INSERT_INTO_CONCERNER($NumTypeChambre,$NumService,$NumReservation,$Qte,$DateArrive,$DateRetour);
 
 $infos = GET_INFOS_RESERVATION($NumReservation);
 
 //envoie du mail :
 SendMail($EmailClient,$NomClient,$PrenClient,$infos);
 
}



Je te laisse faire le reste sur le même modèle.




Cordialement, 
Jordane                                                                 
0