Requêtes HTTP
Posté : 22 mai 2007, 18:59
Bonsoir,
La question ne fait pas vraiment partie de la rubrique PHP mais je ne savais trop ou la poster :
J'ai réalisé une petite classe dans le but d'envoyer des données POST et de récupérer des pages. Mon but est de m'identifier sur un site de jeu en ligne et de récupérer la page une fois authentifié. Ainsi je pourrai traiter certaines données afin de faire un service d'alerte d'attaques, etc.
Voici les deux méthodes principales :
Il m'est affiché :
Apparemment lors de l'identification il est créé un cookie temporaire de la durée de la session sur la page. Je me demande donc si il serait possible d'éviter cela en stockant par exemple le cookie quelque part et ensuite l'utiliser lors de la requête GET, etc. ou bien le problème provient de ma requête POST mal formulée ?
Merci
Cordialement,
Laurent
La question ne fait pas vraiment partie de la rubrique PHP mais je ne savais trop ou la poster :
J'ai réalisé une petite classe dans le but d'envoyer des données POST et de récupérer des pages. Mon but est de m'identifier sur un site de jeu en ligne et de récupérer la page une fois authentifié. Ainsi je pourrai traiter certaines données afin de faire un service d'alerte d'attaques, etc.
Voici les deux méthodes principales :
/**
* Fonction HTTP get
*
**/
public function get($url)
{
$buffer = '';
$url = parse_url($url);
$port = isset($url['port']) ? $url['port'] : 80;
if (!$fp = fsockopen($url['host'], $port, $errno, $errstr)) {
echo 'Erreur n°'.$errno.' : '.$errstr;
return false;
}
else {
$request = "GET ".$url['path']." HTTP/1.1\r\n";
$request .= "Host: ".$url['host']."\r\n";
$request .= "Connection: Close\r\n\r\n";
fwrite($fp, $request);
while (!feof($fp)) {
$buffer .= fgets($fp, 128);
}
fclose($fp);
}
return $buffer;
}
/**
* Fonction HTTP post
*
* @return boolean
**/
public function post($url, $array)
{
$args = http_build_query($array);
$url = parse_url($url);
$port = isset($url['port']) ? $url['port'] : 80;
if (!$fp = fsockopen($url['host'], $port, $errno, $errstr)) {
echo 'Erreur n°'.$errno.' : '.$errstr;
return false;
}
else {
$request = "POST ".$url['path']." HTTP/1.1\r\n";
$request .= "Host: ".$url['host']."\r\n";
$request .= "User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\r\n";
$request .= "Content-type: application/x-www-form-urlencoded\r\n";
$request .= "Content-length: ".strlen($args)."\r\n\r\n";
$request .= $args."\r\n";
fwrite($fp, $request);
fclose($fp);
return true;
}
}
La fonction get et post me semble fonctionner. Cependant j'ai un problème lorsque j'essai de m'identifier et que je récupère la page.Il m'est affiché :
Je penses que cela provient des cookies.Votre session a expiré, reconnectez-vous !
Apparemment lors de l'identification il est créé un cookie temporaire de la durée de la session sur la page. Je me demande donc si il serait possible d'éviter cela en stockant par exemple le cookie quelque part et ensuite l'utiliser lors de la requête GET, etc. ou bien le problème provient de ma requête POST mal formulée ?
Merci
Cordialement,
Laurent