Bonjour,
j'utilise un petit script php qui me permet de simuler des requetes en post et get. je sais qu'il existe cURL mais il n'est pas installé
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| <html><head></head><body>
<?php
function post_it ($datastream, $url, $method) {
$url = preg_replace("@^http://@i", "", $url);
$host = substr($url, 0, strpos($url, "/"));
$uri = strstr($url, "/");
$reqbody = "";
foreach($datastream as $key=>$val) {
if (!empty($reqbody)) $reqbody.= "&";
$reqbody.= $key."=".urlencode($val);
}
if ($method == "GET") {
$uri .= '?' . $reqbody;
}
echo "<br>".$uri."<br>";
$contentlength = strlen($reqbody);
$reqheader = $method . " " . $uri . " HTTP/1.1\r\n".
"Host: " . $host . "\n".
"User-Agent: PostIt\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: " . $contentlength . "\r\n".
"Connection: Close\r\n\r\n".
$reqbody . "\r\n";
echo "<br>".$reqheader."<br>";
$socket = fsockopen($host, 80, $errno, $errstr);
if (!$socket) {
$result["errno"] = $errno;
$result["errstr"] = $errstr;
return $result;
}
fputs($socket, $reqheader);
while (!feof($socket)) {
$result[] = fgets($socket, 4096);
}
fclose($socket);
return $result;
}
/* ---------------------------------------------------------- */
$VARIABLE = "BLABLABLABLA \r\n";
$data["UserName"] = "some";
$data["PassWord"] = "data";
$result = post_it($data, "http://localhost/test", "GET");
if (isset($result["errno"])) {
$errno = $result["errno"];
$errstr = $result["errstr"];
echo "<B>Error $errno</B> $errstr";
exit;
} else {
for($i=0;$i< count($result); $i++) $VARIABLE .= $result[$i];
}
echo $VARIABLE;
?>
</body>
</html> |
Seulement voilà j'ai deux questions (en fait) :
- la fonction marche très bien en post et get, mais me renvoie systématique l'entête HTTP :
HTTP/1.1 200 OK Date: Wed, 24 Jan 2007 11:52:32 GMT Server: Apache/2.2.3 (Win32) PHP/5.2.0 Content-Length: 191 Connection: close Content-Type: text/html
y a-t-il un moyen de supprimer cela sans avoir à traiter la chaine de caractère par une quelconque fonction (que je ne connais pas encore du reste)
- lorsque j'utilise ce script en GET, je peux quand même récupérer le résultat des variables en post, est-ce normal ??? sachant que ceci n'est pas vrai en utilisant un formulaire html et en utilisant les <form>
J'espère que j'ai été assez clair
Merci d'avance
Partager