Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -45%
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre ...
Voir le deal
339 €

Aide pour un script

3 participants

Aller en bas

Aide pour un script Empty Aide pour un script

Message par Freerider Lun 12 Jan - 17:40

Bonjour

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
Entier Naturel

Masculin
Nombre de messages : 3
Localisation : Sfax
Réputation : 0
Points : 5576
Date d'inscription : 12/01/2009

Revenir en haut Aller en bas

Aide pour un script Empty Re: Aide pour un script

Message par Napoléon Mar 13 Jan - 12:16

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
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7654
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
Aide pour un script Left_bar_bleue999/1000Aide pour un script Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Aide pour un script Empty Re: Aide pour un script

Message par Freerider Mar 13 Jan - 17:31

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:

Spoiler:

Freerider
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 3
Localisation : Sfax
Réputation : 0
Points : 5576
Date d'inscription : 12/01/2009

Revenir en haut Aller en bas

Aide pour un script Empty Re: Aide pour un script

Message par Freerider Mer 14 Jan - 0:18

Re

désolé pour le double poste, mais problème résolu

Freerider
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 3
Localisation : Sfax
Réputation : 0
Points : 5576
Date d'inscription : 12/01/2009

Revenir en haut Aller en bas

Aide pour un script Empty Re: Aide pour un script

Message par Napoléon Ven 16 Jan - 1:45

et c'était quoi la solution???

désolé, on n'a pas pu t'aider ... il y pas de grands php-iens ici ...
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7654
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
Aide pour un script Left_bar_bleue999/1000Aide pour un script Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Aide pour un script Empty Re: Aide pour un script

Message par lamia Ven 16 Jan - 14:39

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 Rolling Eyes et des notions sur l'orienté objet en php Rolling Eyes
lamia
lamia
Modérateur
Modérateur

Féminin
Nombre de messages : 1936
Age : 37
Localisation : Tunis
Réputation : 53
Points : 6583
Date d'inscription : 04/11/2007

Feuille de personnage
Capacité linguistique:
Aide pour un script Left_bar_bleue996/1000Aide pour un script Empty_bar_bleue  (996/1000)

Revenir en haut Aller en bas

Aide pour un script Empty Re: Aide pour un script

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum