SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Jean-Marie Renouard 
LightPath 2014©
Le logo PHP est du domaine public 
http://commons.wikimedia.org/wiki/File:PHP-logo.svg 
Ce document est licencié sous licence 
◦Attribution-NonCommercial-ShareAlike 
◦CC BY-NC-SA 
Plus de détails: 
http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ 
LightPath 2014© - http://www.jmrenouard.fr 
2
Base de l’accès HTTP 
Récupération d’un page WEB 
Récupération dans un fichier 
Poster des données de formulaire 
Nettoyage des données 
Positionner des entêtes HTTP 
Passer l’authentification 
Sécurisation HTTPS 
Accès multiples 
LightPath 2014© - http://www.jmrenouard.fr 
3
LightPath 2014© - http://www.jmrenouard.fr 
4
Curl_init: initialise une session HTTP 
Curl_setopt: initialise les options 
◦Entête HTTP 
◦Authentification 
◦User-agent 
◦… 
Curl_exec: exécution d’un requête HTTP 
Curl_close: fermeture de la session HTTP 
LightPath 2014© - http://www.jmrenouard.fr 
5
LightPath 2014© - http://www.jmrenouard.fr 
6
<?php 
// Création d'une nouvelle ressource cURL 
$ch = curl_init(); 
// Configuration de l'URL et d'autres options 
curl_setopt($ch, CURLOPT_URL, "http://www.php.net/"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
// Récupération de l'URL et affichage sur le naviguateur 
curl_exec($ch); 
// Fermeture de la session cURL 
curl_close($ch); 
?> 
LightPath 2014© - http://www.jmrenouard.fr 
7
LightPath 2014© - http://www.jmrenouard.fr 
8
Sortie par défaut, la sortie standard. 
Possibilité de stocker dans un fichier 
$ch = curl_init("http://www.example.com/"); 
$fp = fopen("page.html", "w"); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_exec($ch); 
curl_close($ch); 
fclose($fp); 
LightPath 2014© - http://www.jmrenouard.fr 
9
LightPath 2014© - http://www.jmrenouard.fr 
10
GET: par défaut 
GET; curl_setopt($ch, CURLOPT_HTTPGET, true); 
POST: curl_setopt($ch, CURLOPT_POST, true); 
PUT :POST: curl_setopt($ch, CURLOPT_PUT, true); 
TRACE / HEAD: pas disponible 
LightPath 2014© - http://www.jmrenouard.fr 
11
… 
<input type="text" name="firstName" value="Name"> 
<input type="text" name=« lastName" value="Name"> 
… 
LightPath 2014© - http://www.jmrenouard.fr 
12
Urlencode: fonction d’encodage pour URL. 
$post_data['firstName'] = ‘Jean-Marie'; 
$post_data[‘lastName'] = ‘Renouard‘; 
foreach ( $post_data as $key => $value) { 
$post_items[] = urlencode($key) . '=' . urlencode($value); 
} 
$post_string = implode ('&', $post_items); 
LightPath 2014© - http://www.jmrenouard.fr 
13
curl_setopt( 
$curl_connection, 
CURLOPT_POSTFIELDS, 
$post_string); 
LightPath 2014© - http://www.jmrenouard.fr 
14
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.php.net/"); 
curl_setopt($ch, CURLOPT_POST, true); 
$post_data['firstName'] = ‘Jean-Marie'; 
$post_data[‘lastName'] = ‘Renouard‘; 
foreach ( $post_data as $key => $value) { 
$post_items[] = urlencode($key) . '=' . urlencode($value); 
} 
$post_string = implode ('&', $post_items); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $post_string); 
curl_exec($ch); 
curl_close($ch); 
LightPath 2014© - http://www.jmrenouard.fr 
15
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.php.net/"); 
curl_setopt($ch, CURLOPT_POST, true); 
$post_data['firstName'] = ‘Jean-Marie'; 
$post_data[‘lastName'] = ‘Renouard‘; 
curl_setopt($ch,CURLOPT_POSTFIELDS, $post_data); 
curl_exec($ch); 
curl_close($ch); 
LightPath 2014© - http://www.jmrenouard.fr 
16
LightPath 2014© - http://www.jmrenouard.fr 
17
Urlencode: encodage des données POST 
Les données postées par CURL doivent être url encodées afin de conserver le format des données. 
LightPath 2014© - http://www.jmrenouard.fr 
18
htmlentities: encodage des caractères en entités HTML 
html_entity_decode: décodage des entités HTML. 
Idéal, lors de la réception de page Web. 
LightPath 2014© - http://www.jmrenouard.fr 
19
Strip_tags: retrait des tags HTML. 
Idéal pour la conservation au format TXT 
LightPath 2014© - http://www.jmrenouard.fr 
20
<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.php.net/"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANFER, true); 
$page=curl_exec($ch); 
$page=strip_tags($page); 
$page= html_entity_decode($page); 
curl_close($ch); 
file_put_contents(« result.txt », $page); 
?> 
LightPath 2014© - http://www.jmrenouard.fr 
21
LightPath 2014© - http://www.jmrenouard.fr 
22
Indication du navigateur utilisé. 
◦curl_setopt($ch, CURLOPT_USERAGENT, « Mozilla/5.0 »); 
Indication de la page d’origine de l’appel 
◦curl_setopt($ch, CURLOPT_REFERER, « http://www.google.com/ »); 
LightPath 2014© - http://www.jmrenouard.fr 
23
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
Jusqu’à un certain point, je veux bien suivre: 
curl_setopt($ch, CURLOPT_MAXRES, 10); 
LightPath 2014© - http://www.jmrenouard.fr 
24
Il est possible d’ajouter ses entêtes HTTP 
$headers= array ( "Content-Type: text/xml; charset=utf-8", "Expect: 100-continue" ) ; 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
LightPath 2014© - http://www.jmrenouard.fr 
25
LightPath 2014© - http://www.jmrenouard.fr 
26
2 appels pour initialiser l’authentification type BASIC 
Format des données d’authentification : 
◦[login] : [password] 
Appels à réaliser: 
◦curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ) ; 
◦curl_setopt($curl, CURLOPT_USERPWD, "username:password"); 
LightPath 2014© - http://www.jmrenouard.fr 
27
Curl supporte plusieurs type d’authentification. 
◦curl_setopt($curl, CURLOPT_HTTPAUTH, XXXX ) ; 
Types d’authentification possibles: 
◦CURLAUTH_BASIC 
◦CURLAUTH_DIGEST 
◦ CURLAUTH_GSSNEGOTIATE 
◦ CURLAUTH_NTLM 
◦ CURLAUTH_ANY: idéal pour passer une authentification 
◦CURLAUTH_ANYSAFE. 
LightPath 2014© - http://www.jmrenouard.fr 
28
LightPath 2014© - http://www.jmrenouard.fr 
29
Activation du HTTPS sans vérification. 
◦curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
LightPath 2014© - http://www.jmrenouard.fr 
30
Récupérer le certificat X509 de l’autorité de certification 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, SECURECA.crt"); 
LightPath 2014© - http://www.jmrenouard.fr 
31
LightPath 2014© - http://www.jmrenouard.fr 
32
Indication du proxy HTTP et de l’URL 
options = array( 
CURLOPT_HTTPPROXYTUNNEL=> 1, 
CURLOPT_PROXYTYPE => 'URLPROXY_HTTP', 
CURLOPT_PROXY => 'url_proxy:port' 
); 
curl_setopt_array($ch, $options); 
LightPath 2014© - http://www.jmrenouard.fr 
33
$options = array( 
CURLOPT_PROXYTYPE => 'URLPROXY_HTTP', 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
CURLOPT_PROXY => 'url_proxy:port', 
CURLOPT_PROXYAUTH =>'URLAUTH_ANY', 
CURLOPT_PROXYUSERPWD => $userpwd 
); 
curl_setopt_array($ch, $options); 
LightPath 2014© - http://www.jmrenouard.fr 
34
LightPath: 
◦Société de conseil et d’ingénierie 
◦Formations, Conseil, Audit et mise en oeuvre 
◦jmrenouard@lightpath.fr 
Jean-Marie RENOUARD 
◦jmrenouard@gmail.com 
◦Twitter: @jmrenouard 
◦http://www.jmrenouard.fr 
LightPath 2014© - http://www.jmrenouard.fr 
35

Contenu connexe

Tendances

Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHPJean-Marie Renouard
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapBassem ABCHA
 
Beautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirBeautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirYves Van Goethem
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLDamien Seguy
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partiekadzaki
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en gokader15
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015Stéphane Legrand
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1Régis Lutter
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Kristen Le Liboux
 

Tendances (18)

Configuration PHP5
Configuration PHP5Configuration PHP5
Configuration PHP5
 
PHP 5 et la programmation objet
PHP 5 et la programmation objetPHP 5 et la programmation objet
PHP 5 et la programmation objet
 
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
 
Javascript et JQuery
Javascript et JQueryJavascript et JQuery
Javascript et JQuery
 
MVC / Frameworks PHP
MVC / Frameworks PHPMVC / Frameworks PHP
MVC / Frameworks PHP
 
SQL et MySQL
SQL et MySQLSQL et MySQL
SQL et MySQL
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrap
 
Php & My Sql
Php & My SqlPhp & My Sql
Php & My Sql
 
Beautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirBeautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenir
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
 
Php4 Mysql
Php4 MysqlPhp4 Mysql
Php4 Mysql
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
 

Similaire à Le client HTTP PHP5

Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Mickael Perraud
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en goAbdoul Kader Sarambe
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docxVincentBweka
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPjulien pauli
 
Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4🏁 Pierre-Henry Soria 💡
 
Persona: un système d'identité pour le Web
Persona: un système d'identité pour le WebPersona: un système d'identité pour le Web
Persona: un système d'identité pour le WebFrancois Marier
 
Atelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressAtelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressIZZA Samir
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afupJulien Vinber
 
Présentation de DBAL en PHP
Présentation de DBAL en PHPPrésentation de DBAL en PHP
Présentation de DBAL en PHPMickael Perraud
 
Wordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsWordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsBoiteaweb
 
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfCours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfRihabBENLAMINE
 
Authentification sociale en angular 1.pptx
Authentification sociale en angular 1.pptxAuthentification sociale en angular 1.pptx
Authentification sociale en angular 1.pptxMickael ROLO
 
Meet up symfony 11 octobre 2016 - Les formulaire
Meet up symfony 11 octobre 2016 - Les formulaireMeet up symfony 11 octobre 2016 - Les formulaire
Meet up symfony 11 octobre 2016 - Les formulaireJulien Vinber
 
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Engineor
 

Similaire à Le client HTTP PHP5 (20)

Chap2
Chap2Chap2
Chap2
 
Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
 
Les structures de données PHP5
Les structures de données PHP5Les structures de données PHP5
Les structures de données PHP5
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docx
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4
 
Persona: un système d'identité pour le Web
Persona: un système d'identité pour le WebPersona: un système d'identité pour le Web
Persona: un système d'identité pour le Web
 
Php Data Object
Php Data ObjectPhp Data Object
Php Data Object
 
Atelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressAtelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPress
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afup
 
Présentation de DBAL en PHP
Présentation de DBAL en PHPPrésentation de DBAL en PHP
Présentation de DBAL en PHP
 
Wordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsWordpress et la sécurité des plugins
Wordpress et la sécurité des plugins
 
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfCours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
 
Authentification sociale en angular 1.pptx
Authentification sociale en angular 1.pptxAuthentification sociale en angular 1.pptx
Authentification sociale en angular 1.pptx
 
Formation php pdo
Formation php pdoFormation php pdo
Formation php pdo
 
Meet up symfony 11 octobre 2016 - Les formulaire
Meet up symfony 11 octobre 2016 - Les formulaireMeet up symfony 11 octobre 2016 - Les formulaire
Meet up symfony 11 octobre 2016 - Les formulaire
 
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 

Plus de Jean-Marie Renouard

Plus de Jean-Marie Renouard (7)

Manuel De Securite 1.8 (Mise à jour avec DOCKER)
Manuel De Securite  1.8 (Mise à jour avec DOCKER)Manuel De Securite  1.8 (Mise à jour avec DOCKER)
Manuel De Securite 1.8 (Mise à jour avec DOCKER)
 
ManuelDeSecurite-1.7.pdf
ManuelDeSecurite-1.7.pdfManuelDeSecurite-1.7.pdf
ManuelDeSecurite-1.7.pdf
 
Manuel de sécurité Linux
Manuel de sécurité Linux Manuel de sécurité Linux
Manuel de sécurité Linux
 
Ssh cookbook v2
Ssh cookbook v2Ssh cookbook v2
Ssh cookbook v2
 
Ssh cookbook
Ssh cookbookSsh cookbook
Ssh cookbook
 
Manuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur LinuxManuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur Linux
 
Structure de données en PHP
Structure de données en PHPStructure de données en PHP
Structure de données en PHP
 

Dernier

présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfalainfahed961
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesangevaleryn
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptbentaha1011
 
Support de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptxSupport de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptxdocteurgyneco1
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 

Dernier (9)

présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniques
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
 
Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024
 
Support de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptxSupport de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptx
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 

Le client HTTP PHP5

  • 2. Le logo PHP est du domaine public http://commons.wikimedia.org/wiki/File:PHP-logo.svg Ce document est licencié sous licence ◦Attribution-NonCommercial-ShareAlike ◦CC BY-NC-SA Plus de détails: http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ LightPath 2014© - http://www.jmrenouard.fr 2
  • 3. Base de l’accès HTTP Récupération d’un page WEB Récupération dans un fichier Poster des données de formulaire Nettoyage des données Positionner des entêtes HTTP Passer l’authentification Sécurisation HTTPS Accès multiples LightPath 2014© - http://www.jmrenouard.fr 3
  • 4. LightPath 2014© - http://www.jmrenouard.fr 4
  • 5. Curl_init: initialise une session HTTP Curl_setopt: initialise les options ◦Entête HTTP ◦Authentification ◦User-agent ◦… Curl_exec: exécution d’un requête HTTP Curl_close: fermeture de la session HTTP LightPath 2014© - http://www.jmrenouard.fr 5
  • 6. LightPath 2014© - http://www.jmrenouard.fr 6
  • 7. <?php // Création d'une nouvelle ressource cURL $ch = curl_init(); // Configuration de l'URL et d'autres options curl_setopt($ch, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch, CURLOPT_HEADER, 0); // Récupération de l'URL et affichage sur le naviguateur curl_exec($ch); // Fermeture de la session cURL curl_close($ch); ?> LightPath 2014© - http://www.jmrenouard.fr 7
  • 8. LightPath 2014© - http://www.jmrenouard.fr 8
  • 9. Sortie par défaut, la sortie standard. Possibilité de stocker dans un fichier $ch = curl_init("http://www.example.com/"); $fp = fopen("page.html", "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); LightPath 2014© - http://www.jmrenouard.fr 9
  • 10. LightPath 2014© - http://www.jmrenouard.fr 10
  • 11. GET: par défaut GET; curl_setopt($ch, CURLOPT_HTTPGET, true); POST: curl_setopt($ch, CURLOPT_POST, true); PUT :POST: curl_setopt($ch, CURLOPT_PUT, true); TRACE / HEAD: pas disponible LightPath 2014© - http://www.jmrenouard.fr 11
  • 12. … <input type="text" name="firstName" value="Name"> <input type="text" name=« lastName" value="Name"> … LightPath 2014© - http://www.jmrenouard.fr 12
  • 13. Urlencode: fonction d’encodage pour URL. $post_data['firstName'] = ‘Jean-Marie'; $post_data[‘lastName'] = ‘Renouard‘; foreach ( $post_data as $key => $value) { $post_items[] = urlencode($key) . '=' . urlencode($value); } $post_string = implode ('&', $post_items); LightPath 2014© - http://www.jmrenouard.fr 13
  • 14. curl_setopt( $curl_connection, CURLOPT_POSTFIELDS, $post_string); LightPath 2014© - http://www.jmrenouard.fr 14
  • 15. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch, CURLOPT_POST, true); $post_data['firstName'] = ‘Jean-Marie'; $post_data[‘lastName'] = ‘Renouard‘; foreach ( $post_data as $key => $value) { $post_items[] = urlencode($key) . '=' . urlencode($value); } $post_string = implode ('&', $post_items); curl_setopt($ch,CURLOPT_POSTFIELDS, $post_string); curl_exec($ch); curl_close($ch); LightPath 2014© - http://www.jmrenouard.fr 15
  • 16. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch, CURLOPT_POST, true); $post_data['firstName'] = ‘Jean-Marie'; $post_data[‘lastName'] = ‘Renouard‘; curl_setopt($ch,CURLOPT_POSTFIELDS, $post_data); curl_exec($ch); curl_close($ch); LightPath 2014© - http://www.jmrenouard.fr 16
  • 17. LightPath 2014© - http://www.jmrenouard.fr 17
  • 18. Urlencode: encodage des données POST Les données postées par CURL doivent être url encodées afin de conserver le format des données. LightPath 2014© - http://www.jmrenouard.fr 18
  • 19. htmlentities: encodage des caractères en entités HTML html_entity_decode: décodage des entités HTML. Idéal, lors de la réception de page Web. LightPath 2014© - http://www.jmrenouard.fr 19
  • 20. Strip_tags: retrait des tags HTML. Idéal pour la conservation au format TXT LightPath 2014© - http://www.jmrenouard.fr 20
  • 21. <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANFER, true); $page=curl_exec($ch); $page=strip_tags($page); $page= html_entity_decode($page); curl_close($ch); file_put_contents(« result.txt », $page); ?> LightPath 2014© - http://www.jmrenouard.fr 21
  • 22. LightPath 2014© - http://www.jmrenouard.fr 22
  • 23. Indication du navigateur utilisé. ◦curl_setopt($ch, CURLOPT_USERAGENT, « Mozilla/5.0 »); Indication de la page d’origine de l’appel ◦curl_setopt($ch, CURLOPT_REFERER, « http://www.google.com/ »); LightPath 2014© - http://www.jmrenouard.fr 23
  • 24. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); Jusqu’à un certain point, je veux bien suivre: curl_setopt($ch, CURLOPT_MAXRES, 10); LightPath 2014© - http://www.jmrenouard.fr 24
  • 25. Il est possible d’ajouter ses entêtes HTTP $headers= array ( "Content-Type: text/xml; charset=utf-8", "Expect: 100-continue" ) ; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); LightPath 2014© - http://www.jmrenouard.fr 25
  • 26. LightPath 2014© - http://www.jmrenouard.fr 26
  • 27. 2 appels pour initialiser l’authentification type BASIC Format des données d’authentification : ◦[login] : [password] Appels à réaliser: ◦curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ) ; ◦curl_setopt($curl, CURLOPT_USERPWD, "username:password"); LightPath 2014© - http://www.jmrenouard.fr 27
  • 28. Curl supporte plusieurs type d’authentification. ◦curl_setopt($curl, CURLOPT_HTTPAUTH, XXXX ) ; Types d’authentification possibles: ◦CURLAUTH_BASIC ◦CURLAUTH_DIGEST ◦ CURLAUTH_GSSNEGOTIATE ◦ CURLAUTH_NTLM ◦ CURLAUTH_ANY: idéal pour passer une authentification ◦CURLAUTH_ANYSAFE. LightPath 2014© - http://www.jmrenouard.fr 28
  • 29. LightPath 2014© - http://www.jmrenouard.fr 29
  • 30. Activation du HTTPS sans vérification. ◦curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); LightPath 2014© - http://www.jmrenouard.fr 30
  • 31. Récupérer le certificat X509 de l’autorité de certification curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, SECURECA.crt"); LightPath 2014© - http://www.jmrenouard.fr 31
  • 32. LightPath 2014© - http://www.jmrenouard.fr 32
  • 33. Indication du proxy HTTP et de l’URL options = array( CURLOPT_HTTPPROXYTUNNEL=> 1, CURLOPT_PROXYTYPE => 'URLPROXY_HTTP', CURLOPT_PROXY => 'url_proxy:port' ); curl_setopt_array($ch, $options); LightPath 2014© - http://www.jmrenouard.fr 33
  • 34. $options = array( CURLOPT_PROXYTYPE => 'URLPROXY_HTTP', curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); CURLOPT_PROXY => 'url_proxy:port', CURLOPT_PROXYAUTH =>'URLAUTH_ANY', CURLOPT_PROXYUSERPWD => $userpwd ); curl_setopt_array($ch, $options); LightPath 2014© - http://www.jmrenouard.fr 34
  • 35. LightPath: ◦Société de conseil et d’ingénierie ◦Formations, Conseil, Audit et mise en oeuvre ◦jmrenouard@lightpath.fr Jean-Marie RENOUARD ◦jmrenouard@gmail.com ◦Twitter: @jmrenouard ◦http://www.jmrenouard.fr LightPath 2014© - http://www.jmrenouard.fr 35