Aide pour un script
3 participants
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: PHP
Page 1 sur 1
Aide pour un script
Bonjour
je débute en php et j'aimerai avoir de l'aide pour comprendre un script que voici:
En fait je veux simuler l'envoi d'un SUMBIT d'un formulaire avec la méthode POST, j'ai pu récupérer toute les informations utiles, l'exemple donné dans ce script me semble parfait, mais je n'ai pas réussi à le configurer avec mes besoins, si quelqu'un pouvait m'aider à le comprendre et comment exécuter le submit pour que le résultat soit enregistré dans le serveur cible...
merci d'avance
je débute en php et j'aimerai avoir de l'aide pour comprendre un script que voici:
- Code:
****************************************************************************
class BrowserEmulator {
function BrowserEmulator() {
$this->resetHeaderLines();
$this->resetPort();
}
/**
* Adds a single header field to the HTTP request header. The resulting header
* line will have the format
* $name: $value\n
**/
function addHeaderLine($name, $value) {
$this->headerLines[$name] = $value;
}
/**
* Deletes all custom header lines. This will not remove the User-Agent header field,
* which is necessary for correct operation.
**/
function resetHeaderLines() {
$this->headerLines = Array();
/*******************************************************************************/
/************** YOU MAX SET THE USER AGENT STRING HERE *******************/
/* */
/* default is "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", */
/* which means Internet Explorer 6.0 on WinXP */
$this->headerLines["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
/*******************************************************************************/
}
/**
* Add a post parameter. Post parameters are sent in the body of an HTTP POST request.
**/
function addPostData($name, $value) {
$this->postData[$name] = $value;
}
/**
* Deletes all custom post parameters.
**/
function resetPostData() {
$this->postData = Array();
}
/**
* Sets an auth user and password to use for the request.
* Set both as empty strings to disable authentication.
**/
function setAuth($user, $pass) {
$this->authUser = $user;
$this->authPass = $pass;
}
/**
* Selects a custom port to use for the request.
**/
function setPort($portNumber) {
$this->port = $portNumber;
}
/**
* Resets the port used for request to the HTTP default (80).
**/
function resetPort() {
$this->port = 80;
}
/**
* Make an fopen call to $url with the parameters set by previous member
* method calls. Send all set headers, post data and user authentication data.
* Returns a file handle on success, or false on failure.
**/
function fopen($url) {
$this->lastResponse = Array();
preg_match("~([a-z]*://)?([^:^/]*)(:([0-9]{1,5}))?(/.*)?~i", $url, $matches);
$protocol = $matches[1];
$server = $matches[2];
$port = $matches[4];
$path = $matches[5];
if ($port!="") {
$this->setPort($port);
}
if ($path=="") $path = "/";
$socket = false;
$socket = fsockopen($server, $this->port);
if ($socket) {
$this->headerLines["Host"] = $server;
if ($this->authUser!="" && $this->authPass!="") {
$this->headerLines["Authorization"] = "Basic ".base64_encode($this->authUser.":".$this->authPass);
}
if (count($this->postData)==0) {
$request = "GET $path HTTP/1.0\r\n";
} else {
$request = "POST $path HTTP/1.0\r\n";
}
if ($this->debug) echo $request;
fputs ($socket, $request);
if (count($this->postData)>0) {
$PostStringArray = Array();
foreach ($this->postData AS $key=>$value) {
$PostStringArray[] = "$key=$value";
}
$PostString = join("&", $PostStringArray);
$this->headerLines["Content-Length"] = strlen($PostString);
}
foreach ($this->headerLines AS $key=>$value) {
if ($this->debug) echo "$key: $value\n";
fputs($socket, "$key: $value\r\n");
}
if ($this->debug) echo "\n";
fputs($socket, "\r\n");
if (count($this->postData)>0) {
if ($this->debug) echo "$PostString";
fputs($socket, $PostString."\r\n");
}
}
if ($this->debug) echo "\n";
if ($socket) {
$line = fgets($socket, 1000);
if ($this->debug) echo $line;
$this->lastResponse[] = $line;
$status = substr($line,9,3);
while (trim($line = fgets($socket, 1000)) != ""){
if ($this->debug) echo "$line";
$this->lastResponse[] = $line;
if ($status=="401" AND strpos($line,"WWW-Authenticate: Basic realm=\"")===0) {
fclose($socket);
return FALSE;
}
}
}
return $socket;
}
/**
* Make an file call to $url with the parameters set by previous member
* method calls. Send all set headers, post data and user authentication data.
* Returns the requested file as an array on success, or false on failure.
**/
function file($url) {
$file = Array();
$socket = $this->fopen($url);
if ($socket) {
$file = Array();
while (!feof($socket)) {
$file[] = fgets($socket, 10000);
}
} else {
return FALSE;
}
return $file;
}
function getLastResponseHeaders() {
return $this->lastResponse;
}
}
/*
// example code
$be = new BrowserEmulator();
$be->addHeaderLine("Referer", "http://previous.server.com/");
$be->addHeaderLine("Accept-Encoding", "x-compress; x-zip");
$be->addPostData("Submit", "OK");
$be->addPostData("item", "42");
$be->setAuth("admin", "secretpass");
// also possible:
// $be->setPort(10080);
$file = $be->fopen("http://restricted.server.com:10080/somepage.html");
$response = $be->getLastResponseHeaders();
while ($line = fgets($file, 1024)) {
// do something with the file
}
fclose($file);
*/
?>
En fait je veux simuler l'envoi d'un SUMBIT d'un formulaire avec la méthode POST, j'ai pu récupérer toute les informations utiles, l'exemple donné dans ce script me semble parfait, mais je n'ai pas réussi à le configurer avec mes besoins, si quelqu'un pouvait m'aider à le comprendre et comment exécuter le submit pour que le résultat soit enregistré dans le serveur cible...
merci d'avance
Dernière édition par Freerider le Mer 14 Jan - 0:17, édité 1 fois
Freerider- Entier Naturel
-
Nombre de messages : 3
Localisation : Sfax
Réputation : 0
Points : 5576
Date d'inscription : 12/01/2009
Re: Aide pour un script
Normalement Lamia devrait être capable de t'aider. J'en connais pas trop le php. Mais en gros, les étapes derrière une "submit" ne dépendent pas du langage que ce soit avec php ou asp ou autre.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7654
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Aide pour un script
Merci pour la réponse
J'ai réussi à le configurer mais je reçois un message d'erreur
Forbidden
You don't have permission to access /create
on this server.Apache/1.3.39 Server at labrute.com Port 80
malgré le faite que le site ne nécessite pas un login et un mot de passe mais c'est le host qui semble poser problème...
voilà ma configuration de l'exemple:
J'ai réussi à le configurer mais je reçois un message d'erreur
Forbidden
You don't have permission to access /create
on this server.Apache/1.3.39 Server at labrute.com Port 80
malgré le faite que le site ne nécessite pas un login et un mot de passe mais c'est le host qui semble poser problème...
voilà ma configuration de l'exemple:
- Spoiler:
- $be->addHeaderLine("Host", "bataloun.labrute.fr");
$be->addHeaderLine("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
$be->addHeaderLine("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
$be->addHeaderLine("Accept-Language", "fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3");
$be->addHeaderLine("Accept-Encoding", "gzip,deflate");
$be->addHeaderLine("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
$be->addHeaderLine("Keep-Alive", "300");
$be->addHeaderLine("Connection", "Keep-Alive");
$be->addHeaderLine("Cookie", "__utma=39817148.3426309944040135000.1231849308.1231849308.1231849308.1; __utmb=39817148.26.10.1231849308; __utmc=39817148; __utmz=39817148.1231849308.1.1.utmcsr=brutools.olympe-network.com|utmccn=(referral)|utmcmd=referral|utmcct=/cmb3.php; tpass_hgfdfg15151=znc81cLy1Pz9dCZB9s5CIvIltK7rAdjn; tpass_fdfdfdfd9999=QpHdq13xhTBhWed0XwwO5yPpyW123Xnk");
$be->addHeaderLine("Content-type", "application/x-www-form-urlencoded");
Freerider- Entier Naturel
-
Nombre de messages : 3
Localisation : Sfax
Réputation : 0
Points : 5576
Date d'inscription : 12/01/2009
Re: Aide pour un script
Re
désolé pour le double poste, mais problème résolu
désolé pour le double poste, mais problème résolu
Freerider- Entier Naturel
-
Nombre de messages : 3
Localisation : Sfax
Réputation : 0
Points : 5576
Date d'inscription : 12/01/2009
Re: Aide pour un script
et c'était quoi la solution???
désolé, on n'a pas pu t'aider ... il y pas de grands php-iens ici ...
désolé, on n'a pas pu t'aider ... il y pas de grands php-iens ici ...
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7654
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Aide pour un script
Normalement Lamia devrait être capable de t'aider.
Bonjour,
Désolée ça fais quelques jours que j'ai pas connecté sur le forum, faute de temps.
Mais en tout cas je comprend pas ce script, en faite mes connaissances sont limitées en php, juste je connais comment utiliser le php pour créer des sites web et manipuler les bases de données et des notions sur l'orienté objet en php
lamia- Modérateur
-
Nombre de messages : 1936
Age : 37
Localisation : Tunis
Réputation : 53
Points : 6583
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Sujets similaires
» Aide pour mon pfe svp
» Aide pour mon sujet de PFE
» besoin d'aide pour la réalisation d'un PFE
» Aide et conseils pour la rédaction de vos rapports de stage, fin d'étude...
» [résolu] Aide pour resoudre exercice: Recherche Nombres Premiers "Eratosthène"
» Aide pour mon sujet de PFE
» besoin d'aide pour la réalisation d'un PFE
» Aide et conseils pour la rédaction de vos rapports de stage, fin d'étude...
» [résolu] Aide pour resoudre exercice: Recherche Nombres Premiers "Eratosthène"
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: PHP
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|