Lire un header distant

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Lire un header distant

Re: Lire un header distant

par epommate2 » 19 déc. 2010, 10:09

As-tu essayé de mettre cette option :
curl_setopt($ch, CURLOPT_NOBODY);

Lire un header distant

par binboum » 18 déc. 2010, 18:37

Bonsoir,

J'essaye de lire un header, malhereusement j'essaye d'optimiser la vitesse, car 4,5 secondes c'est trop long.

En curl tout fonctionne mais c'est leng :
function curlGetHeader ($url){
  $ch     = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  $page   = curl_exec($ch);
  curl_close($ch);
  $header = substr($page, 0, strpos($page, "\r\n\r\n"));
  return $header;
}
j'obtiens bien :
HTTP/1.1 200 OK
Date: xxxxxxxxxxxxxx
Server: xxxxxxxxxxxxxxxxx
X-Powered-By: xxxxxxxxxxxxxxxxxxx
Content-Length: xxxxxx
;
Content-Disposition: attachment; filename="libraie windows.dll"
Connection: close
Content-Type: application/force-download;
function socketGetHeaders($url){
  $url = parse_url($url);
  $url['port'] = isset($url['port']) ? $url['port'] : '80';
  $url['path'] = isset($url['path']) ? $url['path'] : '/';
  $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 10);
  if (!$fp) {
    echo "Erreur de socket: $errno - $errstr<br />\n";
    return FALSE;
  } else {
    $header  = "GET ".$url['path']." HTTP /1.1\r\n";
    $header .= "Connection: Close\r\n\r\n";
	
	    $header  = "GET ".$url['path']." HTTP /1.1\r\n";
    $header      .= "Accept: */*\r\n";
    $header      .= "Cache-Control: no-cache\r\n";
    $header      .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.2) Gecko/2008090514 Firefox/3.0.2\r\n";
    $header      .= "Host: $s_Host\r\n";
    $header      .= "Connection: Close\r\n";
    fputs($fp, $header);
  }
    fputs($fp, $header);
    $page = '';
  while (!feof($fp)){
    $page.= fgets($fp, 1280);
    if(strpos($page, "\r\n\r\n")) break;
  }
  fclose($fp);
  return $page;
} 
J'obtiens sa :
HTTP/1.1 200 OK
Date: xxxxxxxxxxxxxxxxxx
Server: xxxxxxxxxxxxxxxxxxxxx
X-Powered-By: xxxxxxxxxxxxxxx
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
et pas filename...

Get_Header() = trop leng.

Donc merci de m'aidé sur la technique fsockopen.