le 21/01/2012 à 22:30
Envoyer un formulaire POST avec le header
En effet la livrairie curl n'est pas sur beaucoup de serveur par contre deux alternatives sont les suivante :
celui si fait un simple fopen distant sur url avec en prime des param de requêtte http
la 2ème solution est d'utiliser les fonction http_* native de php qui sont vraiment pas mal
http://www.php.net/manual/en/ref.http.php
en combinant deux fonction j'ai réussi à faire une requête post vers une autre page depuis php même
où $result est un objet qui contient les éléments de réponse .
pour récupérer le contenu de la réponse donc le html d'un site c'est
$result->body;
<?php
function _do_post_request($url, $data, $optional_headers = null)
{
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
fclose($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
celui si fait un simple fopen distant sur url avec en prime des param de requêtte http
la 2ème solution est d'utiliser les fonction http_* native de php qui sont vraiment pas mal
http://www.php.net/manual/en/ref.http.php
en combinant deux fonction j'ai réussi à faire une requête post vers une autre page depuis php même
<?php
$post_request = http_post_data("https://un-url.fr", $post_data);
$result = http_parse_message($post_request);
où $result est un objet qui contient les éléments de réponse .
pour récupérer le contenu de la réponse donc le html d'un site c'est
$result->body;