HTTP et HTTPS
PHP 4, PHP 5, PHP 6. https:// depuis PHP 4.3.0
- http://example.com
- http://example.com/file.php?var1=val1&var2=val2
- http://user:[email protected]
- https://example.com
- https://example.com/file.php?var1=val1&var2=val2
- https://user:[email protected]
Permet des acc�s en lecture uniquement, pour des fichiers accessibles sur le r�seau avec la m�thode GET de HTTP 1.0. Un en-t�te Host: est envoy� avec la requ�te, pour g�rer les h�tes virtuels, bas�s sur des noms. Si vous avez configur� une version de navigateur avec l'option user_agent dans votre fichier php.ini, ou via le contexte de flux, il sera aussi utilis� dans votre requ�te.
Lorsque vous utilisez SSL, le serveur IIS de Microsoft violera le protocole en fermant la connexion sans envoyer l'indicateur close_notify. PHP le reportera en tant que "SSL: Fatal Protocol Error" quand vous arrivez � la fin des donn�es. L'astuce est de baisser le niveau de la directive error_reporting pour ne pas inclure les alertes. � partir de PHP 4.3.7, le bogue est d�tect� automatiquement lors de l'ouverture du flux en utilisant https:// et supprimera cet avertissement pour vous. Si vous utilisez fsockopen() pour cr�er une socket ssl://, vous devez vous occuper vous-m�me de supprimer l'erreur.
Les redirections sont support�es depuis PHP 4.0.5; si vous utilisez une version plus ancienne, vous devrez ajouter vous-m�me les slash finaux dans vos URL. S'il est important de conna�tre l'URL de la ressource qui vous a fourni le document, une fois que toutes les redirections ont �t� suivies, vous devez analyser les en-t�tes de r�ponses retourn�s par le flux.
Exemple #1 http:// et redirections
<?php
$url = 'http://www.example.com/redirecting_page.php';
$fp = fopen($url, 'r');
/* Avant PHP 4.3.0 utilisez $http_response_header
au lieu de stream_get_meta_data() */
$meta_data = stream_get_meta_data($fp);
foreach($meta_data['wrapper_data'] as $response) {
/* Redirections? */
if (substr(strtolower($response), 0, 10) == 'location: ') {
/* modification de $url avec la nouvelle URL */
$url = substr($response, 18);
}
}
?>
Le flux donne l'acc�s au corps (body) de la ressource. Les ent�tes sont stock�s dans la variable $http_response_header. Depuis PHP 4.3.0, les en-t�tes sont aussi accessibles avec la fonction stream_get_meta_data().
Les connexions HTTP sont en lecture seule. Vous ne pouvez pas �crire dans des fichiers ouverts via le protocole HTTP.
Note: HTTPS est support� depuis PHP 4.3, si vous avez compil� le support d'OpenSSL.
Attribut | Support� |
---|---|
Limit� par allow_url_fopen | Oui |
Autoris� en lecture | Oui |
Autoris� en �criture | Non |
Autoris� en ajout | Non |
Autorise les lectures / �critures simultan�es | Non applicable |
Supporte stat() | Non |
Supporte unlink() | Non |
Supporte rename() | Non |
Supporte mkdir() | Non |
Supporte rmdir() | Non |
Les en-t�tes personnalis�s peuvent �tre envoy�s avec une requ�te HTTP dans les versions ant�rieures � la version 5 en tirant avantage d'un effet de bord dans la gestion de la configuration INI de user_agent. D�finissez user_agent en n'importe quelle cha�ne valide (comme la cha�ne par d�faut, PHP/version) suivi d'un caract�re de retour chariot et d'un caract�re de nouvelle ligne, suivis des ent�tes additionnels. Cette m�thode fonctionne en PHP 4 ainsi que toutes les versions suivantes.
Exemple #2 Envoi d'en-t�tes personnalis�s avec une requ�te HTTP
<?php
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");
$fp = fopen('http://www.example.com/index.php', 'r');
?>
�quivaut � la requ�te suivante :
GET /index.php HTTP/1.0 Host: www.example.com User-Agent: PHP X-MyCustomHeader: Foo