Voir la page Facebook de Dewep.net Voir la page Google Plus de Dewep.net Voir la page Twitter de Dewep.net

Tutoriel - Utiliser cURL (PHP)

CC BY-NC-SA 3.0

L'ensemble des tutoriels est soumis à la licence CC BY-NC-SA 3.0 (Code Juridique).
Vous êtes donc libre de remixer et partager l'oeuvre aux conditions de l'attribuer (lien vers cette page), de ne pas l'utiliser à des fins commerciales, et de la partager avec une licence identique ou similaire.

Tutoriel sur l'utilisation de cURL, en PHP.
Afin de mieux comprendre son fonctionnement, nous pratiquerons au fur et à mesure un code permettant d'héberger un fichier sur votre compte MegaUpload, le tout seulement en PHP.
Ce tutoriel est destiné aux personnes voulant connaître cette fonction ; un minimum de savoir en PHP est tout de même requis.


Présentation de cURL


Tout d'abord, une petite présentation de cURL.

Cette bibliothèque, créée par Daniel Stenberg, vous permet de vous connecter et de communiquer avec des sites distants.
Par exemple, il vous est possible via cURL de récupérer la source d'une page externe, d'envoyer une requête POST, ...


A la fin de ce tutoriel, vous serez capable :
  • Récupérer la source d'une page
  • Envoyer des requêtes POST à une page (y comprit l'envoi de fichiers)
  • Se connecter à un site, et ensuite, permettre de voir des pages restreintes aux membres connectés



Le tutoriel sera accompagné d'exemples, permettant d'interagir avec l'hébergeur MegaUpload.



Récupérer la source d'une page


Première étape, initialiser une nouvelle session cURL.
Pour cela :


Cette fonction retourne un identifiant de session cURL, que nous utiliserons plus tard avec les fonctions curl_setopt, curl_exec, et curl_close.


Maintenant, nous allons devoir définir des options de transmission à cette session.
Il va par exemple falloir lui fournir l'url de la page à récupérer.


Pour cela, nous devons ajouter :

Cette session interagira alors avec l'adresse : http://google.fr

Il est aussi possible de définir cette option directement en initialisant la session :



Deuxième option à définir :

Cette option permet d'indiquer que nous voulons recevoir le résultat du transfert au lieu de l'afficher.


Nous pouvons (et je vous le recommande) de définir une autre option :

Cette option permet de dire à cURL de démarrer un nouveau cookie session.
Cela lui force alors à ignorer tous les cookies provenant de sessions antérieures.


Pour récupérer la source d'une page, nous n'avons pas besoin d'utiliser plus d'options.


Il suffit ensuite d'exécuter la requête :


La variable $return a alors récupérer la source de la page distantes.

Il nous reste maintenant à fermer la session cURL :

Cela ferme la session cURL et libère toutes les ressources réservées.


Vous avez donc, par le biais de la variable $return le contenu de la page que vous souhaitiez.



Envoyer une requête POST



Introduction


Le code de base est le même que précédemment.
Nous allons juste lui ajouter de nouvelles options.

Rappel du code de base :



Nous allons alors ajouter de nouvelles options, toujours via la fonction curl_setopt.


Pour envoyer une requête POST, il va alors tout d'abord dire à la fonction de faire un HTTP POST (comme pour les formulaires) :



Ensuite, il va falloir définir via un array les requêtes POST à envoyer.

Pour que vous compreniez bien, nous allons utiliser un exemple concret : Se connecter à son compte MegaUpload.

En regardant d'un peu plus près le code source de la page de connexion (http://megaupload.com/?c=login), on remarque qu'il nous faut envoyer 3 informations :
  • username : Le pseudo de votre compte
  • password : Le mot de passe de votre compte
  • login : C'est une spécialité pour le site MegaUpload, cela doit toujours valoir "1"


Sous forme d'array, ça donne alors :



Il suffit alors ensuite d'ajouter une nouvelle option contenant ces données :




Et si les données sont correctes, cela vous connecte à votre compte MegaUpload.

Exemple complet :




Garder la connexion


Avec l'exemple précédent, nous nous sommes connectés.
Ok, c'est bien, sauf que si vous refaites une requête avec cURL, vous aurez perdu la connexion.

Pour ne pas perdre la connexion, nous allons alors sauvegarder les cookies lors de la connexion.


Pour cela, nous allons ajouter une nouvelle option qui va sauvegarder les cookies récupérés dans un fichier :


Attention cependant de bien avoir les permissions pour créer ce fichier.


Et maintenant, il nous fait alors récupérer le contenu de ce fichier pour être encore connecté lors de la prochaine requête.

Donc lors de la deuxième requête, on ajoute ceci :



Ainsi, vous serez encore connecté.


Ne pas oublier à la fin de supprimer ce fichier :



Exemple complet :





Envoyer des fichiers ?


Il est bien entendu aussi possible d'envoyer des fichiers.

Nous allons prendre comme exemple d'héberger un nouveau fichier sur votre compte MegaUpload.
Nous utiliserons la page : http://www.megaupload.com/multiupload/index.php

En analysant la page, vous remarquerez que l'action du formulaire est dynamique. En effet, MegaUpload attribut un "UPLOAD_IDENTIFIER" à chaque chargement de page.

Nous allons donc devoir procéder en deux étapes :
  • Récupérer une première fois la source de la page pour récupérer un "UPLOAD_IDENTIFIER"
  • Envoyer notre fichier sur le compte MegaUpload



A savoir qu'il faut tout d'abord être connecté.



Ce code a pour but donc de récupérer l'url de l'action dynamique (dans la variable $action).
Rien de nouveau, nous avons déjà vu avant ce code.
Il y a juste le preg_match en plus ; cependant, ce n'est pas le but de ce tutoriel, donc je ne vous expliquerez pas d'avantage.


Il nous suffit alors maintenant d'envoyer en méthode POST notre fichier.

En analysant le code source une fois de plus de cette même page, vous verrez qu'il faut envoyer en données :
  • multifile_0 : Notre fichier
  • multimessage_0 : La description de notre fichier
  • accept : Doit toujours valoir "on", c'est le champ qui permet de dire que vous acceptez les conditions



Pour ajouter notre fichier alors, il faut faire ainsi :


Il faut donc comme vous le voyez, ajouter un arrobase suivit du chemin vers le fichier à uploader (uploader = héberger).

Nous avons donc tout pour pouvoir faire notre code :



Il y a encore un preg_match à la fin, il sert ici à récupérer le lien de votre fichier.






Vous savez alors maintenant utiliser toutes les fonctions importantes de cURL.

Vous pouvez trouver d'autres informations sur cette bibliothèque sur php.net.
Et plus précisément si vous souhaitez ajouter d'autres options à votre requête : http://www.php.net/manual/fr/function.curl-setopt.php.




Questions / Remarques / Améliorations ?


N'hésitez pas à me contacter pour toutes questions / remarques / ou amélioration : http://dewep.net/Contact