Logo classes.scriptsphp.org PHP

go to nav bar

simplecurl

Envoyer des requètes HTTP

La classe simplecurl permet d' envoyer des requètes HTTP plus ou moins complexes grâce à l' extension CURL. NB: la classe fonctionne uniquement avec PHP 5.

Les Méthodes

Exemples

  1. Récupération d' un fichier distant
  2. Utilisation de simplerss avec simplecurl
  3. Envoi de données en POST

La Source

<?php 



class simplecurl {
    
    public 
$ch '';
    public 
$Debug false;
    public 
$errorlog '';
    public 
$Headers '';
    private 
$handle '';
    
    
/**
    * @return
    * @param string $Url URL a ouvrir
    * @param integer $Timeout Timeout de la requete
    * @desc Constructeur de la classe , si une url , un pointeur sera crée
    */
    
public final function __construct($Url=''$Timeout 0) {
        if(!
extension_loaded('curl'))
        die(
'Install curl extension');
        
        if(
$Url)
        
$this->SetUrl($Url$Timeout);
        
    }
    
    
/**
    * @return
    * @desc Destructeur de la classe
    */
    
function __destruct() {
        if(
is_resource($this->ch))
        
$this->Close($this->ch);
        if(
is_resource($this->handle))
        
fclose($this->handle);
    }
    
    
/**
    * @return
    * @param string $Name nom de la methode apellée
    * @param array $Arguments Tableau des arguments passés a cette methode
    * @desc ....
    */
    
function __call($Name$Arguments) {
        
$this->errorlog .= "[$Name] Cette methode qui n' existe pas !";
    }
    
    
/**
    * @return
    * @param string $Url l URL a ouvrir
    * @param integer $Timeout
    * @desc Ouvre l URL et fixe le Timeout optionnellement
    */
    
protected function SetUrl($Url$Timeout 0) {
        if(!
$this->ch curl_init($Url))
        
$this->errorlog .= "[".__METHOD__ ."] Erreur : .$Url\n";
        
//curl_setopt ($this->ch, CURLOPT_URL, $Url);
        
if((int)$Timeout != 0)
        
$this->SetTimeout((int)$Timeout);
    }
    
    
/**
    * @return
    * @param integer $Timeout
    * @desc Ouvre fixe le Timeout
    */
    
protected function SetTimeout($Timeout) {
        
curl_setopt($this->chCURLOPT_TIMEOUT$Timeout);
    }
    
    
/**
    * @return
    * @param integer $Port
    * @desc fixe le port ou se connecter
    */
    
public function SetPort($Port) {
        
curl_setopt($this->chCURLOPT_PORT$Port);
    }
    
    
/**
    * @return
    * @param array $Values
    * @desc Construit la chaine a envoyer en POST a partir d un array
    */
    
public function SetPost($Values) {
        
$T = array();
        foreach(
$Values as $key => $val) {
            
$T[] = $key.'='.urlencode($val);
        }
        
curl_setopt($this->chCURLOPT_POST1);
        
curl_setopt($this->chCURLOPT_POSTFIELDSimplode('&'$T));
    }
    
    
/**
    * @return
    * @param string $Useragent
    * @desc Fixe un User Agent
    */
    
public function SetUserAgent($UserAgent) {
        
curl_setopt($this->chCURLOPT_USERAGENT$UserAgent);
    }
    
    
/**
    * @return
    * @param string $referer
    * @desc fixe un Referer
    */
    
public function SetReferer($Referer) {
        
curl_setopt($this->chCURLOPT_REFERER$Referer);
    }
    
    
    
    
/**
    * @return
    * @param array $HeadersArray
    * @desc envoie des entetes dans la requete
    */
    
public function SetHeaders($HeadersArray) {
        if(
is_array($HeadersArray))
        
curl_setopt ($this->chCURLOPT_HTTPHEADER$HeadersArray);
    }
    
    
/**
    * @return 
    * @desc Retourne les entetes envoyés avec la requete
    */
    
public function GetHeaders() {
        
curl_setopt ($this->chCURLOPT_HEADER1);
        
//curl_setopt($this->ch, CURLOPT_NOBODY, 1);
        //curl_setopt($this->ch, CURLOPT_HEADERFUNCTION, array($this, 'ReadHeaders'));
    
}
    
    
/**
    * @return 
    * @param string $Version
    * @desc Fixe la Version HTTP
    */
    
public function SetHttpVersion($Version) {
        
curl_setopt($this->chCURLOPT_HTTP_VERSION$Version);
    }
    
    
/**
    * @return 
    * @param string $FileName fichier a uploader
    * @desc effectue un Upload
    */
    
public function SetUpload($FileName) {
        if(
is_readable($FileName)) {
            
$size filesize($FileName);
            
$this->handle fopen($FileName'r');
            
curl_setopt($this->chCURLOPT_INFILE$this->handle);
            
curl_setopt($this->chCURLOPT_UPLOAD1);
            
curl_setopt($this->chCURLOPT_INFILESIZE$size);
        }
        else 
$this->errorlog .= "[".__METHOD__."] Impossible d' ouvrir $FileName";
    }
    
    
/**
    * @return 
    * @param string $User
    * @param string $Password
    * @desc Envoie un couple User/Password
    */
    
public function SetUserPassword($User $Password) {
        
curl_setopt ($this->chCURLOPT_USERPWD$User.':'.$Password);
        
    }
    
    
/**
    * @return Résultat de la requete
    * @param string $IntoFile Optionnel : Nom du fichier vers lequel envoyer le résultat
    * @desc Exécute la requete
    */
    
public function ExecRequest($IntoFile '') {
        if(
$IntoFile)    {
            
$handle fopen($IntoFile'w+');
            
curl_setopt ($this->chCURLOPT_FILE$handle);
        }
        else
        
curl_setopt($this->chCURLOPT_RETURNTRANSFER1);
        
        if(!
$Result curl_exec ($this->ch))
        
$this->errorlog .="[".__METHOD__."] ".curl_error($this->ch);
        
        if(
$this->Debug == true)
        echo 
$this->DisplayRequestInfos();
        
        
//$this->Close();
        
        
if($Result == 1)
        return 
true;
        else return 
$Result;
        
    }
    
    
/**
    * @return 
    * @desc Ferme la connexion
    */
    
public function Close() {
        
curl_close ($this->ch);
    }
    
    private function 
ReadHeaders($ch$headers) {
        
$this->Headers $headers;
        return 
strlen($headers);
    }
    
    private function 
DisplayRequestInfos() {
        
$ret '<table style="border:1px solid black;margin-bottom:1em;">';
        
$ret .= '<tr style="color:red;font-weight:bold;"><td>Evénement</td><td>Résultat</td></tr>';
        foreach(
curl_getinfo($this->ch) as $key => $val ) {
            
$ret .= '<tr><td>'.$key.'</td><td>'.$val.'</td></tr>';
        }
        
$ret .= '</table>';
        
        return 
$ret;
    }
    
}

?>

Merci de ne pas suivre ce lien emails.

0.5039s | «»
PHP powered