<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1662"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/1662/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/1662/atom/feed</id>
  <updated>2008-10-01T11:47:18+02:00</updated>
  <entry>
    <title>Requête HEAD en PHP</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1662" />
    <id>http://artisan.karma-lab.net/node/1662</id>
    <published>2008-10-01T11:46:54+02:00</published>
    <updated>2008-10-01T11:47:18+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="PHP" />
    <category term="Aucun" />
    <category term="OK" />
    <category term="Snipet" />
    <summary type="html"><![CDATA[<p>
  Procédures pour effectuer une requête HEAD sur une URL.
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
  Procédures pour effectuer une requête HEAD sur une URL.
</p>
<!--break-->

	<a name='chapter_1'></a>
  <h2>Via socket pur (pas de SSL)</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://www.php.net/function"><span class="kw2">function</span></a> check_url<span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$source</span> <span class="sy0">=</span> <a target="blank" href="http://www.php.net/parse_url"><span class="kw3">parse_url</span></a><span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$address</span> <span class="sy0">=</span> <a target="blank" href="http://www.php.net/gethostbyname"><span class="kw3">gethostbyname</span></a><span class="br0">&#40;</span><span class="re0">$source</span><span class="br0">&#91;</span><span class="st0">'host'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="re0">$source</span><span class="br0">&#91;</span><span class="st0">'port'</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$port</span><span class="sy0">=</span><span class="re0">$source</span><span class="br0">&#91;</span><span class="st0">'host'</span><span class="br0">&#93;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span> <a target="blank" href="http://www.php.net/else"><span class="kw1">else</span></a> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="re0">$source</span><span class="br0">&#91;</span><span class="st0">'scheme'</span><span class="br0">&#93;</span><span class="sy0">==</span><span class="st0">'http'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$port</span><span class="sy0">=</span><span class="nu0">80</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <a target="blank" href="http://www.php.net/else"><span class="kw1">else</span></a> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <a target="blank" href="http://www.php.net/error_log"><span class="kw3">error_log</span></a><span class="br0">&#40;</span><span class="st0">&quot;Unsuported scheme : &quot;</span><span class="sy0">.</span><span class="re0">$source</span><span class="br0">&#91;</span><span class="st0">'scheme'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <a target="blank" href="http://www.php.net/return"><span class="kw1">return</span></a> <a target="blank" href="http://www.php.net/true"><span class="kw2">true</span></a><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="re0">$socket</span> <span class="sy0">=</span> <a target="blank" href="http://www.php.net/fsockopen"><span class="kw3">fsockopen</span></a><span class="br0">&#40;</span><span class="re0">$address</span><span class="sy0">,</span> <span class="nu0">80</span><span class="sy0">,</span> <span class="re0">$errno</span><span class="sy0">,</span> <span class="re0">$errstr</span><span class="sy0">,</span> broken_anchor_timeout<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$socket</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://www.php.net/return"><span class="kw1">return</span></a> <span class="re0">$errstr</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="re0">$request</span> &nbsp;<span class="sy0">=</span> <span class="st0">&quot;HEAD &quot;</span><span class="sy0">.</span><span class="br0">&#40;</span><span class="re0">$source</span><span class="br0">&#91;</span><span class="st0">'path'</span><span class="br0">&#93;</span><span class="sy0">==</span><span class="st0">&quot;&quot;</span>?<span class="st0">&quot;/&quot;</span><span class="sy0">:</span><span class="re0">$source</span><span class="br0">&#91;</span><span class="st0">'path'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot; HTTP/1.0<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$request</span> <span class="sy0">.=</span> <span class="st0">&quot;Host: &quot;</span><span class="sy0">.</span><span class="re0">$source</span><span class="br0">&#91;</span><span class="st0">'host'</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$request</span> <span class="sy0">.=</span> <span class="st0">&quot;User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092903 Mandriva/1.9.0.3-1mdv2009.0 (2009.0) Firefox/3.0.3<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$request</span> <span class="sy0">.=</span> <span class="st0">&quot;Connection: Close<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$request</span> <span class="sy0">.=</span> <span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; <a target="blank" href="http://www.php.net/stream_set_timeout"><span class="kw3">stream_set_timeout</span></a><span class="br0">&#40;</span><span class="re0">$socket</span><span class="sy0">,</span> broken_anchor_timeout<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <a target="blank" href="http://www.php.net/fputs"><span class="kw3">fputs</span></a><span class="br0">&#40;</span><span class="re0">$socket</span><span class="sy0">,</span> <span class="re0">$request</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$stream_errors</span> <span class="sy0">=</span> <a target="blank" href="http://www.php.net/stream_get_meta_data"><span class="kw3">stream_get_meta_data</span></a><span class="br0">&#40;</span><span class="re0">$socket</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="re0">$stream_errors</span><span class="br0">&#91;</span><span class="st0">'timed_out'</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://www.php.net/return"><span class="kw1">return</span></a> <span class="st0">'Writing timed out'</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <a target="blank" href="http://www.php.net/while"><span class="kw1">while</span></a> <span class="br0">&#40;</span><span class="sy0">!</span><a target="blank" href="http://www.php.net/feof"><span class="kw3">feof</span></a><span class="br0">&#40;</span><span class="re0">$socket</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$return</span> <span class="sy0">.=</span> <a target="blank" href="http://www.php.net/fgets"><span class="kw3">fgets</span></a><span class="br0">&#40;</span><span class="re0">$socket</span><span class="sy0">,</span> <span class="nu0">4096</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="re0">$stream_errors</span> <span class="sy0">=</span> <a target="blank" href="http://www.php.net/stream_get_meta_data"><span class="kw3">stream_get_meta_data</span></a><span class="br0">&#40;</span><span class="re0">$socket</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="re0">$stream_errors</span><span class="br0">&#91;</span><span class="st0">'timed_out'</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <a target="blank" href="http://www.php.net/return"><span class="kw1">return</span></a> <span class="st0">'Reading timed out'</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <a target="blank" href="http://www.php.net/fclose"><span class="kw3">fclose</span></a><span class="br0">&#40;</span><span class="re0">$socket</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="re0">$lines</span> <span class="sy0">=</span> <span class="sy0">@</span><a target="blank" href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">,</span><span class="re0">$return</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$status</span><span class="sy0">=</span><a target="blank" href="http://www.php.net/trim"><span class="kw3">trim</span></a><span class="br0">&#40;</span><a target="blank" href="http://www.php.net/array_shift"><span class="kw3">array_shift</span></a><span class="br0">&#40;</span><span class="re0">$lines</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$ipos</span><span class="sy0">=</span><a target="blank" href="http://www.php.net/strpos"><span class="kw3">strpos</span></a><span class="br0">&#40;</span><span class="re0">$status</span><span class="sy0">,</span> <span class="st0">&quot; &quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$status</span><span class="sy0">=</span><a target="blank" href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$status</span><span class="sy0">,</span> <span class="re0">$ipos</span><span class="nu0">+1</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$ipos</span><span class="sy0">=</span><a target="blank" href="http://www.php.net/strpos"><span class="kw3">strpos</span></a><span class="br0">&#40;</span><span class="re0">$status</span><span class="sy0">,</span> <span class="st0">&quot; &quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$status</span><span class="sy0">=</span><a target="blank" href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><a target="blank" href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$status</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="re0">$ipos</span><span class="br0">&#41;</span><span class="sy0">,</span> <a target="blank" href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$status</span><span class="sy0">,</span> <span class="re0">$ipos</span><span class="nu0">+1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <a target="blank" href="http://www.php.net/foreach"><span class="kw1">foreach</span></a><span class="br0">&#40;</span><span class="re0">$lines</span> <a target="blank" href="http://www.php.net/as"><span class="kw1">as</span></a> <span class="re0">$line</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$line</span><span class="sy0">=</span><a target="blank" href="http://www.php.net/trim"><span class="kw3">trim</span></a><span class="br0">&#40;</span><span class="re0">$line</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><a target="blank" href="http://www.php.net/strlen"><span class="kw3">strlen</span></a><span class="br0">&#40;</span><span class="re0">$line</span><span class="br0">&#41;</span><span class="sy0">&gt;</span><span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$iPos</span><span class="sy0">=</span><a target="blank" href="http://www.php.net/strpos"><span class="kw3">strpos</span></a><span class="br0">&#40;</span><span class="re0">$line</span><span class="sy0">,</span> <span class="st0">&quot;:&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="re0">$iPos</span><span class="sy0">!==</span><a target="blank" href="http://www.php.net/false"><span class="kw2">false</span></a><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$header</span><span class="br0">&#91;</span><a target="blank" href="http://www.php.net/trim"><span class="kw3">trim</span></a><span class="br0">&#40;</span><a target="blank" href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$line</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="re0">$iPos</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="sy0">=</span><a target="blank" href="http://www.php.net/trim"><span class="kw3">trim</span></a><span class="br0">&#40;</span><a target="blank" href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$line</span><span class="sy0">,</span> <span class="re0">$iPos</span><span class="nu0">+1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><a target="blank" href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span><span class="re0">$header</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://www.php.net/return"><span class="kw1">return</span></a> <span class="st0">&quot;No header received&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="re0">$status</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">==</span><span class="nu0">301</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://www.php.net/return"><span class="kw1">return</span></a> broken_anchor_check_url<span class="br0">&#40;</span><span class="re0">$header</span><span class="br0">&#91;</span><span class="st0">&quot;Location&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <a target="blank" href="http://www.php.net/if"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="re0">$status</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">200</span> <span class="sy0">&amp;&amp;</span> <span class="re0">$status</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">302</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://www.php.net/return"><span class="kw1">return</span></a> <span class="re0">$status</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot; &quot;</span><span class="sy0">.</span><span class="re0">$status</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <a target="blank" href="http://www.php.net/return"><span class="kw1">return</span></a> <a target="blank" href="http://www.php.net/true"><span class="kw2">true</span></a><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
  </div>
  
  </div>    ]]></content>
  </entry>
</feed>
