web-dev-qa-db-fra.com

Envoyez une requête cURL POST) à une URL externe avec les paramètres du contrôleur

Est-il possible de rediriger vers une URL externe avec les paramètres d'un contrôleur? J'utilise joomla 2.5.9 et j'ai un contrôleur qui envoie des courriels à l'administrateur. Une fois le courrier électronique envoyé, je dois envoyer certains détails à un autre site pour poursuivre les procédures. Puis-je utiliser cURL comme core php? Voici mon code de contrôleur:

$mailer = JFactory::getMailer();
            $config = JFactory::getConfig();
            $sender = array($config->getValue( 'config.mailfrom' ),$config->getValue( 'config.fromname' ));
            $mailer->setSender($sender);
            $admin = JFactory::getUser(42);
            $admin_email = ($admin->email)? $admin->email: $config->getValue( 'config.mailfrom' );
            $mailer->addRecipient($admin_email);
            $mailer->setSubject('New Reservation ('.ucfirst($data['package_hotel']).')');
            $body   = 'Dear Manager,<br><br>'
                    .'<div>You have received a new reservation request ('.$data['package_hotel'].') from '
                    .$data['name'].'. '
                    .'"'.$package_hotel_name.'" '.$data['package_hotel'].' dated '.$data['date_from'].'.</div><br>'
                    .'<h3>Details</h3>'
                    .'<div>Name: '.$data['name'].'</div>'
                    .'<div>Address: '.$data['address'].'</div>'
                    .'<div>Email: '.$data['email'].'</div>'
                    .'<div>Mobile Number: '.$data['mobile'].'</div>'
                    .'<div>Phone Number: '.$data['phone'].'</div>'
                    .'<div>Arrival Date: '.$data['date_from'].'</div>'
                    .'<div>Departure Date: '.$data['date_to'].'</div>'
                    .'<div>'.ucfirst($data['package_hotel']).': '.$package_hotel_name.'</div>'
                    .'<div>No of Adults: '.$data['adults'].'</div>'
                    .'<div>No of Children: '.$data['children'].'</div>'
                    .'<div>Comments: '.$data['message'].'</div>'
                    .'<br><br><div>Regards,</div>'
                    .'<div>Godwin Holidays</div>';
            $mailer->isHTML(true);
            $mailer->Encoding = 'base64';
            $mailer->setBody($body);
            $send = $mailer->Send();

Si le courrier électronique a été envoyé avec succès, je souhaite envoyer les informations ci-dessus à un autre site, par exemple example.com. Je suis nouveau sur Joomla, alors aidez-moi s'il vous plaît

2
geeth

Premièrement, 2.5.9 a 4 ans et demi et présente un certain nombre de failles de sécurité connues.

Deuxièmement, il semble que vous souhaitiez faire une demande de message curl et non aucun type de redirection.

Si l'e-mail est envoyé, le $send variable sera véridique afin que vous écriviez quelque chose comme ce qui suit juste après votre code ci-dessus.

if($send){
   // set your destination
   $url = 'https://example.com/have_some_data';

   // build up array of all the data you wish to send
   $fields = array(
       'name' => $data['name'],
       'address' => $data['address']
   );

   // prep data to work with default content type (will probably work)
   $fields_string = http_build_query($fields);

   // send the data
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL,$url);
   curl_setopt($ch, CURLOPT_POST,1);
   curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $response = curl_exec($ch);
}
3
jamesgarrett