FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
On peut avoir besoin de modifier les entêtes que PHP fait parvenir par défaut lors d'une communication avec un serveur HTTP. Il vous est notamment possible de modifier le type de requête pour POST (GET étant la méthode par défaut) et d'y adjoindre différentes données, de fixer un délai d'expiration pour la requête, de limiter le nombre de redirections dont vous pourriez faire l'objet, de vous faire passer pour un navigateur standard, etc. Pour ce faire, il faut créer un nouveau contexte (fonction stream_context_create) pour modifier le comportement par défaut, puis le rendre opérationnel grâce à la fonction libxml_set_streams_context qui le fera valoir à la librairie de plus bas niveau libxml sur laquelle les extensions DOM et SimpleXML sont toutes deux basées.
$post
=
array(
'
selection
'
=>
array(1
,
10
,
3
),
'
titre
'
=>
'
Test
'
,
'
submit
'
=>
'
valider
'
);
$contexte
=
stream_context_create(
array(
'
http
'
=>
array(
'
method
'
=>
'
POST
'
,
'
header
'
=>
"
User-Agent: PHP5 & DOM/SimpleXML
\r\n
Content-type: application/x-www-form-urlencoded
"
,
'
content
'
=>
http_build_query($post
),
'
max_redirects
'
=>
10
,
/* Suivre, au maximum, 10 redirections (requiert une version >= à 5.1.0) */
'
timeout
'
=>
10
/* Ne sera honoré que sur les versions >= à 5.2.1 */
)
)
);
libxml_set_streams_context($contexte
);
// SimpleXML
$sxml
=
simplexml_load_file('
https://login:motDePasse@www.monsite.fr/prive/flux.php
'
);
// Ou :
$sxml
=
new SimpleXMLElement('
https://login:motDePasse@www.monsite.fr/prive/flux.php
'
,
0
,
TRUE);
- allow_url_fopen est à la valeur On ;
- Les flux http(s) sont gérés par PHP.
Consultez la sortie de phpinfo() pour obtenir ces informations.
Par défaut, PHP, par l'intermédiaire de son gestionnaire de flux FTP, refusera d'écraser un fichier distant existant. Cette situation vous sera vraisemblablement indiquée par l'erreur suivante :
Remote file already exists and overwrite context option not specified.
La solution consite à modifier les options par défaut en créant un contexte où l'on modifie la valeur du paramètre overwrite puis à le fournir à la fonction libxml_set_streams_context, servant à configurer le flux pour la prochaine opération de la librairie libxml sous-jacente, avant de faire appel aux fonctions d'écriture :
$contexte
=
stream_context_create(
array(
'
ftp
'
=>
array('
overwrite
'
=>
TRUE)
)
);
libxml_set_streams_context($contexte
);
// SimpleXML
$sxml
->
asXML('
ftp://login:motDePasse@ftp.monsite.fr/offline/temp.xml
'
);
- allow_url_fopen doit être à On ;
- Les flux ftp(s) doivent être gérés par PHP.
Consultez la sortie de phpinfo() pour obtenir ces informations.