begin process at 2012 05 31 13:19:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

quelle methode pour recuperer des données sur un site


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

quelle methode pour recuperer des données sur un site

mercredi 7 mars 2007 à 15:46:57 | quelle methode pour recuperer des données sur un site

nildv

Bonjour,
Je dois coder un script qui permette de recuperer des données sur un site https.
Il faut savoir que le lien qui va lancer mon script se trouverra sur le site en question et que pour acceder à ce site il faut s'identifier.
Le lien qui va ouvrir mon script est un lien externe.
Donc il va falloir que je fasse suivre ma session en cour sur le site https à mon script.

Quelle methode me conseillez vous pour recuperer mes données??

J'ai essayé avec curl mais j'ai beaucoup de mal à faire suivre ma session.
Merci d'avance pour votre aide
mercredi 7 mars 2007 à 17:18:13 | Re : quelle methode pour recuperer des données sur un site

J_G

Bonjour,

Oui, j'ai déjà eut cette mauvaise expérience... Le même cookie de session est bien envoyé pour http://factice.web et https://factice.web, mais PHP considère deux sessions différentes (certainement car Apache ou autre lui dit qu'il s'agit de deux serveurs différent... donc forcément on ne peut pas être le même) Bref, j'en sais rien... Et j'ai du coup abandonné l'idée d'utiliser le port SSL.

Car, il semble que la seule vraie idée soit de réecrire le gestionnaire de session pour qu'il puisse retrouver les même données d'un port à l'autre. Et là, ça m'a un peu fait... suer!

Si q'un connait le truc ?

A+ 
mercredi 7 mars 2007 à 17:42:07 | Re : quelle methode pour recuperer des données sur un site

coockiesch

Salut!
Tu dois récupérer des données de la session? Ou juste voir si le gars est logé?

@++

R@f

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
mercredi 7 mars 2007 à 20:18:40 | Re : quelle methode pour recuperer des données sur un site

vilhjalms

Saell og blesuð

Heu je ne sais si cela peut vous aider mais j ai retrouve cette vieille class sur un hdd Je vous la livre  ainsi :

<?php
/**
 * Http Client Class
 *
 * Uses Pear or Curl for a HTTP/HTTPS GET/POST request
 * (preferred engine: Curl)
 *
 * Handles Cookies & HTTP Auth
 *
 * @author RosSoft
 * @version 0.23
 * @license MIT
 *
 * If you need cookies or HTTP Auth, don't use the
 * function wrappers http_client_get() or http_client_post()
 * Use the class instead. Example:
 * $client=& new HttpClient();
 * $client->user='username'; //the request requires basic http auth
 * $client->password='xxxx';
 * $client->post('http://example.com/login',array('admin'=>'1')); //this will remember the cookie set by that request
 * $client->get('http://example.com/admin/index'); //the cookie is used
 *
 * You can send HTTP Headers with
 * $client->request_headers=array('Content-Type'=>'application/x-www-form-urlencoded; charset=utf-8');
 *
 */

/**
 * Gets the content of an HTTP/HTTPS GET request
 * @param string $url Destination URL
 * @param array $params Associative array of params (don't need to urlencode them)
 * @param string $engine Can be 'Pear','Curl','Auto' ('Auto' selects the best available)
 * @return string The content
 *
 */
function http_client_get($url,$params=array(),$engine='Auto'){
    $client=& new HttpClient($engine);
    return $client->get($url,$params);
}

/**
 * Gets the content of an HTTP/HTTPS POST request
 * @param string $url Destination URL
 * @param array $params Associative array of params (don't need to urlencode them)
 * @param string $engine Can be 'Pear','Curl','Auto' ('Auto' selects the best available)
 * @return string The content
 */
function http_client_post($url,$params=array(),$engine='Auto'){
    $client=& new HttpClient($engine);
    return $client->post($url,$params);
}

/**
 * Gets the content of an HTTP/HTTPS HEAD request
 * @param string $url Destination URL
 * @param array $params Associative array of params (don't need to urlencode them)
 * @param string $engine Can be 'Pear','Curl','Auto' ('Auto' selects the best available)
 * @return string The content
 */
function http_client_head($url,$params=array(),$engine='Auto'){
    $client=& new HttpClient($engine);
    return $client->head($url);
}

/**
 * Main class
 * You can use indirectly through http_client_get
 * or http_client_post wrappers or directly by:
 *
 * $client=HttpClient();
 * $document=$client->get('http://www.google.es/search',array('hl'=>'en', 'q'=>'cakephp'));
 *
 * Is exactly the same as:
 * $client=& new HttpClient();
 * $document=$client->get('http://www.google.es/search?hl=en&q=cakephp'));
 *
 */

class HttpClient extends Object{
    /**
     * @var integer Http Connection timeout in seconds
     */
    var $timeout=30;

    /**
     * @var integer Maximum number of redirections (avoid loops)
     */
    var $max_redirections=10;

    /**
     * @var string Http Basic Auth username
     */
    var $user=null;

    /**
     * @var string Http Basic Auth password
     */
    var $password=null;

    /**
     * @var array HTTP Request Headers to be sent
     */
    var $request_headers=array();

    /**
     * @access protected Instance of HttpClient[Engine]
     * Engines: 'Pear','Curl','Auto'
     * 'Auto' tries Curl, if not loaded then Pear (default)
     */
    var $_engine;

    function HttpClient($engine='Auto'){
        if (!in_array($engine,array('Pear','Curl','Auto'))){
            $message="HttpClient: unknown engine $engine";
            $this->log($message,LOG_ERROR);
            die($message);
        }
        if ($engine=='Auto'){
            if (function_exists('curl_init')){
                $engine='Curl';
            }else{
                $engine='Pear';
            }
        }
        $engine='HttpClient' . $engine;
        $this->_engine=& new $engine($this);
    }

    /**
     * Gets the content of an HTTP/HTTPS GET request
     * @param string $url Destination URL
     * @param array $params Associative array of params (don't need to urlencode them)
     * @return string The content
     */

    function get($url,$params=array()){
        return $this->_engine->get($url,$params);
    }

    /**
     * Gets the content of an HTTP/HTTPS POST request
     * @param string $url Destination URL
     * @param array $params Associative array of params (don't need to urlencode them)
     * @return string The content
     */
    function post($url,$params=array()){
        return $this->_engine->post($url,$params);
    }

    /**
     * Gets the content of an HTTP/HTTPS HEAD request
     * @param string $url Destination URL
     * @param array $params Associative array of params (don't need to urlencode them)
     * @return string The content
     */
    function head($url,$params=array()){
        return $this->_engine->head($url,$params);
    }

    /**
     * Returns information of last response
     * (the content of the array is engine dependant)
     * @return array
     */
    function response(){
        return $this->_engine->response();
    }

    /**
     * Returns the last response http code
     * @return integer
     */
    function response_code(){
        return $this->_engine->response_code();
    }

    /**
     * Returns headers of last response
     * @return array
     */
    function headers(){
        return $this->_engine->headers();
    }


    function _convert_params($params){
          $array= array();
        foreach ($params as $name=>$value)
        {
              $array[] = "$name=".urlencode($value);
        }
        return implode("&", $array);
    }

}

/**
 * Engine Client: Pear
 */
class HttpClientPear extends Object{
    var $_client;
    var $_response;
    var $_parent;

    function __construct($parent){
        $this->_parent=& $parent;

        /*
         * vendors/pear/init.php content: <?php ini_set('include_path',ini_get('include_path').PATH_SEPARATOR . dirname(__FILE__)); ? >
         */
        vendor('pear/init');
        vendor('pear/HTTP/Client');

        $this->_client = new HTTP_Client();
    }

    function get($url,$params=array()){
        $this->_init();
        $this->_client->get($url, $params);
        return $this->_execute();
    }

    function head($url,$params=array()){
        $this->_init();
        if ($params)
        {
            $url=$url . '?' . $this->_parent->_convert_params($params);
        }
        $this->_client->head($url);
        return $this->_execute();
    }

    function _init(){
        $this->_client->setDefaultHeader($this->_parent->request_headers);
        $this->_client->setMaxRedirects($this->_parent->max_redirections);
        $params=array('timeout'=>$this->_parent->timeout);
        if ($this->_parent->user!==null)
        {
            $params['user']=$this->_parent->user;
            $params['password']=$this->_parent->password;
        }
        $this->_client->setRequestParameter($params);
    }

    function _execute(){
        $this->_response=$this->_client->currentResponse();
        return $this->_response['body'];
    }

    function post($url,$params){
        $this->_client->setDefaultHeader($this->_parent->request_headers);
        $this->_client->post($url, $params);
        return $this->_execute();
    }

    function response(){
        return $this->_response;
    }

    function response_code(){
        return $this->_response['code'];
    }

    function headers(){
        return $this->_response['headers'];
    }



}

/**
 * Engine Client: Curl
 */
define('HTTP_CLIENT_CURL_COOKIES',CACHE . 'http_curl_cookies.txt');
class HttpClientCurl extends Object{
    var $_client;
    var $_response;
    var $_headers;
    var $_body;
    var $_parsing;
    var $_parent;

    function __construct($parent){
        $this->_parent=& $parent;
        file_put_contents(HTTP_CLIENT_CURL_COOKIES,'');

    }

    function get($url,$params){
        $this->_init();
        if (count($params))
        {
            $url=$url . '?' . $this->_parent->_convert_params($params);
        }
        curl_setopt($this->_client, CURLOPT_POST, 0);
        curl_setopt($this->_client, CURLOPT_URL, $url);
        return $this->_execute();
    }

    function post($url,$params){
        $this->_init();
        curl_setopt($this->_client, CURLOPT_POST, 1);
        curl_setopt($this->_client, CURLOPT_POSTFIELDS, $this->_parent->_convert_params($params));
        curl_setopt($this->_client, CURLOPT_URL, $url);
        $result=$this->_execute();
        return $result;
    }

    function head($url,$params){
        if ($params)
        {
            $url=$url . '?' . $this->_parent->_convert_params($params);
        }
        $this->_init();
        curl_setopt($this->_client, CURLOPT_NOBODY, 1);
        curl_setopt($this->_client, CURLOPT_URL, $url);
        $result=$this->_execute();
        return $result;
    }

    function response(){
        return $this->_response;
    }

    function response_code(){
        return $this->_response['http_code'];
    }


    function _execute(){
        $this->_parsing=0; //start
        $this->_headers=array();
        $this->_body='';
        curl_exec($this->_client);
        $this->_response=curl_getinfo($this->_client);
        curl_close($this->_client);
        return $this->_body;
    }

    function _parse_content($ch,$string){
        switch ($this->_parsing){
            case 0: //start. skip http status code
                $this->_parsing=1; //header
                break;
            case 1: //header
                if (strpos($string,':')){
                    $header=split(': ',$string);
                    $key=$header[0];
                    $value=$header[1];
                    while ((strpos($value,"\n")==strlen($value) - 1) || (strpos($value,"\r")==strlen($value) - 1)){
                        $value=substr($value,0,strlen($value) - 1); //remove \n
                    }
                    $this->_headers[$key]=$value;
                    $this->_headers[low($key)]=$value;
                }else{ //end of header
                    $this->_parsing=2;
                }
                break;
            case 2: //body
                $this->_body.=$string;
                break;
        }
        return strlen($string);
    }

    function _init(){
        $this->_client= curl_init();
        if (! $this->_client){
            die('HttpClientCurl: curl_init() fails');
        }
        curl_setopt($this->_client, CURLOPT_HEADER,1);
        curl_setopt($this->_client, CURLOPT_WRITEFUNCTION, array($this,'_parse_content'));
        curl_setopt($this->_client, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($this->_client, CURLOPT_TIMEOUT,$this->_parent->timeout);
        curl_setopt($this->_client, CURLOPT_COOKIEFILE,HTTP_CLIENT_CURL_COOKIES);
        curl_setopt($this->_client, CURLOPT_COOKIEJAR,HTTP_CLIENT_CURL_COOKIES);
        curl_setopt($this->_client, CURLOPT_HTTPHEADER,$this->_parent->request_headers);
        curl_setopt($this->_client, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($this->_client, CURLOPT_MAXREDIRS, $this->_parent->max_redirections);

           if ($this->_parent->user !== null){
               curl_setopt($this->_client, CURLOPT_USERPWD, "{$this->_parent->user}:{$this->_parent->password}");
           }
    }

    function headers(){
        return $this->_headers;
    }
}
?>

En espérant que vous y trouviez votre bonheur ce qui fut le cas pour moi

Vilhjálms
Sigurðsdóttir aka Frëyjá
jeudi 8 mars 2007 à 08:39:56 | Re : quelle methode pour recuperer des données sur un site

nildv

Bon ben merci tout le monde
J'vais regarder cette class mais je suis pas trop sur de m'en sortir.
Y a quand meme un truc qui me tue c'est qu'avec mozilla il est possible de voir le contenu d'un cookie.
Comment sa se fait??
Parce que si j'arrivais à copier juste le l'id session j'aurais plus de problemes.
Alors si quelqu'un pouvait me dire par quel moyen miraculeux Mozilla fait ça...
Merci
vendredi 9 mars 2007 à 10:04:47 | Re : quelle methode pour recuperer des données sur un site

coockiesch

Salut!
L'id de session tu le récupère avec: session_id( );

Mais tu veux juste reconnecter le gars ou utiliser des données de la session?

@++

R@f

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
lundi 12 mars 2007 à 08:02:18 | Re : quelle methode pour recuperer des données sur un site

nildv

Salut, je voudrais juste faire suivre ma session à mon script.

Merci



Cette discussion est classée dans : script, site, données, recuperer, methode


Répondre à ce message

Sujets en rapport avec ce message

quel methode utiliser pour recuperer des information sur la visite d'un site ? [ par fredericmaill ] salut, voila je voudrais savoir quels methodes utiliser pour savoir le temps passer par les visiteurs de mon site, sur quoi uils ont cliqué et d'ou il Recuperer des données dans un base sql [ par nininono ] Bonjour je suis débutant et j'aimerais récupérer mes données de la base sql mais je n'y arrive pas ayany essayer plein de sources et tuto du siteJ'ai Flock() [ par sidhannowe ] Salut, Je développe un script se servant de fichiers texte pour stocker des données. Le problème est que si 2 script accède en meme temps au meme fic effacement dans la base de données [ par la_luciole ] Bonjour,je souhaiterai trouver un script qui permette d'effacer des infos automatiquement dans la base de données à partir d'une date clé.Je m'expliqu recuperer des infos f'un fichier texte [ par nunor ] bonjour,je souhaiterais developper un script pour traiter le tableau suivant qui se trouve dans un fichier texte "joueurs" Le PB EST QUE LE TABLEAU IC Recherche script php [ par Xavier ] Bonsoir à tous, Je recherche un script comme présenté ici :http://www.toutestfacile.com/phpinit.php?tef_site=php&common=scripts/indexpour mettre sur m comment recuperer des informations sur les visiteur d'un site? [ par fredericmaill ] Bonjour, J?aimerais faire une application qui me donnerais des informations sur le temps passé par chaque visiteur sur chaque page de mon site intern sur mon site je tente d'aligner pls script mais ça passe pas avec java [ par erjo ] bonjour sur mon site je tente d'aligner pls script mais ça passe pas avec javaipts&file=script-exemple&idscript=54&images=beos">htt Site piratés [ par tunimag ] Bonjour,je voudrais savoir si il existe un script comme celui de zone-h.org qui permet d'inserer les sites piratés par des utilisateurs et que ce scri Formulaire et methode post [ par kdos ] Bonjour, je debute en php et fais quelques essais pour comprendre le mode de fonctionnement des formulaires. J'ai ecris le script suivant:Test<?p


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales