PDA

Bekijk Volledige Versie : Re: Php-routine om te kijken of fotobestand aanwezig is werkt



Eduard Bekker
10/01/06, 22:45
Op de heugelijke dag van 10-01-2006 21:54, schreef "Erick T. Barkhuis" in
MPG.1e2e3d564e1e09c989c8a@news.individual.net, <erick.usenet@ardane.c-o-m>
pakweg het volgende:

> Eduard Bekker:
>
>> $headers=@get_headers($Url);
>>
>> Nu blijkt dat de php versie tijdelijk is teruggezet van 5 naar 4.3.11
>
> Dan kijk je even bij http://nl3.php.net/get_headers in de users-
> commentaren. Daar staat een PHP4-versie.

Had ik gezien en het volgende geprobeerd:

//routine om te kijken of fotobestand aanwezig is
function remote_file_exists($Url)
{
$headers=@get_headers($Url);
if($headers!==false)
{
return strpos($headers[0], "200")!==false;
}
else return false;
return true;
}

//als get_headers (nog) niet bestaat:
if(!function_exists('get_headers'))
{
function get_headers($url,$format=0)
{
$url=parse_url($url);
$end = "\r\n\r\n";
$fp = fsockopen($url['host'],
(empty($url['port'])?80:$url['port']), $errno, $errstr, 30);
if ($fp)
{
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: ".$url['host']."\r\n";
$out .= "Connection: Close\r\n\r\n";
$var = '';
fwrite($fp, $out);
while (!feof($fp))
{
$var.=fgets($fp, 1280);
if(strpos($var,$end))
break;
}
fclose($fp);

$var=preg_replace("/\r\n\r\n.*\$/",'',$var);
$var=explode("\r\n",$var);
if($format)
{
foreach($var as $i)
{
if(preg_match('/^([a-zA-Z -]+): +(.*)$/',$i,$parts))
$v[$parts[1]]=$parts[2];
}
return $v;
}
else
return $var;
}
}
}

Werkt helaas niet.

--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/

Eduard Bekker
10/01/06, 22:45
Op de heugelijke dag van 10-01-2006 22:29, schreef "Eduard Bekker" in
BFE9E5DF.125D2%e.bekker@layout.nl, <e.bekker@layout.nl> pakweg het volgende:

Kleine correctie:

//routine om te kijken of fotobestand aanwezig is
function remote_file_exists($Url)
{
$headers=@get_headers($Url);
if($headers!==false)
{
return strpos($headers[0], "200")!==false;
}
else return false;
}

//als get_headers (nog) niet bestaat:
if(!function_exists('get_headers'))
{
function get_headers($url,$format=0)
{
$url=parse_url($url);
$end = "\r\n\r\n";
$fp = fsockopen($url['host'],
(empty($url['port'])?80:$url['port']), $errno, $errstr, 30);
if ($fp)
{
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: ".$url['host']."\r\n";
$out .= "Connection: Close\r\n\r\n";
$var = '';
fwrite($fp, $out);
while (!feof($fp))
{
$var.=fgets($fp, 1280);
if(strpos($var,$end))
break;
}
fclose($fp);

$var=preg_replace("/\r\n\r\n.*\$/",'',$var);
$var=explode("\r\n",$var);
if($format)
{
foreach($var as $i)
{
if(preg_match('/^([a-zA-Z -]+): +(.*)$/',$i,$parts))
$v[$parts[1]]=$parts[2];
}
return $v;
}
else
return $var;
}
}
}

Werkt helaas niet.

Eduard Bekker
11/01/06, 20:45
Op de heugelijke dag van 10-01-2006 22:39, schreef "Ronald Klip" in
MPG.1e2e47fd3e767011989743@news.xs4all.nl, <nieuws@contentecontent.invalid>
pakweg het volgende:

> Eduard Bekker schreef:
>> "Erick T. Barkhuis" :
>>> Eduard Bekker:
>>>
>>>> $headers=@get_headers($Url);
>>>>
>>>> Nu blijkt dat de php versie tijdelijk is teruggezet van 5 naar 4.3.11
>>>
>>> Dan kijk je even bij http://nl3.php.net/get_headers in de users-
>>> commentaren. Daar staat een PHP4-versie.
>>
>> Had ik gezien en het volgende geprobeerd:
>
> Waarom zeg je dat dan niet meteen?
>
>> //routine om te kijken of fotobestand aanwezig is
>> function remote_file_exists($Url)
>
> [snip]
>
>> Werkt helaas niet.
>
> Wat gaat er fout?

Er gebeurt niets: de pagina blijft blank.
Hij blijft waarschijnlijk direct hangen bij @get_headers(

--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/

Eduard Bekker
13/01/06, 19:30
Mime-version: 1.0
Content-Type: text/plain;
charset="ISO-8859-1"
Content-transfer-encoding: 8bit
Lines: 70
Organization: Wanadoo
NNTP-Posting-Date: 13 Jan 2006 18:12:57 GMT
NNTP-Posting-Host: c529ca0ee.cable.wanadoo.nl
X-Trace: 1137175977 dr4.euro.net 57978 82.156.160.238:55841
X-Complaints-To: abuse@wanadoo.nl
Xref: nl-news.euro.net nl.internet.www.server-side:40136

Op de heugelijke dag van 12-01-2006 10:12, schreef "Ronald Klip" in
MPG.1e303bdcf1a16bab989744@news.xs4all.nl, <nieuws@contentecontent.invalid>
pakweg het volgende:

> Eduard Bekker schreef:
>>>
>>>> Werkt helaas niet.
>>>
>>> Wat gaat er fout?
>>
>> Er gebeurt niets: de pagina blijft blank.
>> Hij blijft waarschijnlijk direct hangen bij @get_headers(
>
> Tja, dat wordt debuggen.
> error_reporting(E_ALL);
>
> en zo her en der, bijvoorbeeld na je if-statements, iets invoegen à la
> echo __LINE__ . '<br>';
> om te zien of die ifs true worden.

Uiteindelijk via via de volgende functie gekregen:

function bestand_bestaat($url)
{
$head = "";
$url_p = parse_url ($url);

if (isset ($url_p["host"]))
{ $host = $url_p["host"]; }
else
{ return false; }

if (isset ($url_p["path"]))
{ $path = $url_p["path"]; }
else
{ $path = ""; }

$fp = fsockopen ($host, 80, $errno, $errstr, 20);
if (!$fp)
{ return false; }
else
{
$parse = parse_url($url);
$host = $parse['host'];

fputs($fp, "HEAD ".$url." HTTP/1.1\r\n");
fputs($fp, "HOST: ".$host."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
$headers = "";
while (!feof ($fp))
{ $headers .= fgets ($fp, 128); }
}
fclose ($fp);
$arr_headers = explode("\n", $headers);
$return = false;
if (isset ($arr_headers[0]))
{ $return = strpos ($arr_headers[0], "404") === false; }
return $return;
}

Die werkt ook bij oudere php-versies.


--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/