Bekijk Volledige Versie : File check op andere site met php
Eduard Bekker
10/02/05, 15:05
Beste mensen!
Via een zoekopdracht krijg ik een reeds url's door waarvan sommige gekoppeld
zijn aan fotobestanden en sommige niet,
Dus bijv.
http://www.wijklunzemaarwataan.nl/FOTOS/12123.jpg
http://www.wijklunzemaarwataan.nl/FOTOS/1232133.jpg
Waarvan 12123.jpg werkelijk een fotobestand is en 1232133.jpg niet blijkt te
bestaan.
Het is niet een eigen server en daarom blijkt if file_exists("
http://www.wijklunzemaarwataan.nl/FOTOS/1232133.jpg"), alle andere verwante
formules niet te werken.
Mijn vraag: is er een andere manier om bestanden op remote servers te
checken?
--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/
Tjerk Wolterink
10/02/05, 16:35
Eduard Bekker wrote:
> Beste mensen!
>
> Via een zoekopdracht krijg ik een reeds url's door waarvan sommige gekoppeld
> zijn aan fotobestanden en sommige niet,
>
> Dus bijv.
>
>
> http://www.wijklunzemaarwataan.nl/FOTOS/12123.jpg
> http://www.wijklunzemaarwataan.nl/FOTOS/1232133.jpg
>
> Waarvan 12123.jpg werkelijk een fotobestand is en 1232133.jpg niet blijkt te
> bestaan.
>
> Het is niet een eigen server en daarom blijkt if file_exists("
> http://www.wijklunzemaarwataan.nl/FOTOS/1232133.jpg"), alle andere verwante
> formules niet te werken.
>
> Mijn vraag: is er een andere manier om bestanden op remote servers te
> checken?
>
>
Ik denk dat je hier wel genoeg aan hebt:
http://nl2.php.net/manual/en/function.get-headers.php
Dus ff een functie ervoor:
/**
* Checkt of een server een 200 OK return code geeft op een bepaald url
*
* @param $url de url die gecheckt moet worden
* @return true als de http return code 200 is
*/
function remote_file_exists($url) {
$headers=return get_headers($url);
if($headers!==false) {
return strpos($headers[0], "200")!==false;
} else return false;
}
Eduard Bekker
10/02/05, 17:05
On 10-02-2005 16:35, in article 420b7eea$0$3091$ee9da40f@news.wanadoo.nl,
"Tjerk Wolterink" <tjerk@wolterinkwebdesign.com> wrote:
> Eduard Bekker wrote:
>> Beste mensen!
>>
>> Via een zoekopdracht krijg ik een reeds url's door waarvan sommige gekoppeld
>> zijn aan fotobestanden en sommige niet,
>>
>> Dus bijv.
>>
>>
>> http://www.wijklunzemaarwataan.nl/FOTOS/12123.jpg
>> http://www.wijklunzemaarwataan.nl/FOTOS/1232133.jpg
>>
>> Waarvan 12123.jpg werkelijk een fotobestand is en 1232133.jpg niet blijkt te
>> bestaan.
>>
>> Het is niet een eigen server en daarom blijkt if file_exists("
>> http://www.wijklunzemaarwataan.nl/FOTOS/1232133.jpg"), alle andere verwante
>> formules niet te werken.
>>
>> Mijn vraag: is er een andere manier om bestanden op remote servers te
>> checken?
>>
>>
>
> Ik denk dat je hier wel genoeg aan hebt:
> http://nl2.php.net/manual/en/function.get-headers.php
>
> Dus ff een functie ervoor:
>
> /**
> * Checkt of een server een 200 OK return code geeft op een bepaald url
> *
> * @param $url de url die gecheckt moet worden
> * @return true als de http return code 200 is
> */
> function remote_file_exists($url) {
> $headers=return get_headers($url);
> if($headers!==false) {
> return strpos($headers[0], "200")!==false;
> } else return false;
> }
Geeft:
Warning: get_headers(http://www.hetdomein.nl/FOTO/9789072194459.jpg)
[function.get-headers]: failed to open stream: HTTP request failed! HTTP/1.1
404 Object Not Found in /home/sites/site10/_php/zoekeenboek.php on line 5
:-(((((
--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/
Jan Ehrhardt
10/02/05, 17:05
Tjerk Wolterink in nl.internet.www.server-side (Thu, 10 Feb 2005
16:35:03 +0100):
>Eduard Bekker wrote:
>>
>> Mijn vraag: is er een andere manier om bestanden op remote servers te
>> checken?
>
>Ik denk dat je hier wel genoeg aan hebt:
>http://nl2.php.net/manual/en/function.get-headers.php
Moet je wel PHP5 hebben draaien. Als dat niet zo is, kun je fopen of
fsockopen gebruiken. Dan moet je regel voor regel inlezen en de HTTP/1.x
header parsen.
Jan
--
Look, Ma. No tables - http://enbio.steenbergen-stichting.nl/
Eduard Bekker
10/02/05, 20:15
On 10-02-2005 16:59, in article p01n0118nv6dh1ts47ctkupl437pas6jft@4ax.com,
"Jan Ehrhardt" <monitor@idem.invalid> wrote:
> Tjerk Wolterink in nl.internet.www.server-side (Thu, 10 Feb 2005
> 16:35:03 +0100):
>
>> Eduard Bekker wrote:
>>>
>>> Mijn vraag: is er een andere manier om bestanden op remote servers te
>>> checken?
>>
>> Ik denk dat je hier wel genoeg aan hebt:
>> http://nl2.php.net/manual/en/function.get-headers.php
>
> Moet je wel PHP5 hebben draaien.
Heb ik. Maar het gaat er blijkbaar om wat de remote server heeft draaien...
> Als dat niet zo is, kun je fopen of
> fsockopen gebruiken. Dan moet je regel voor regel inlezen en de HTTP/1.x
> header parsen.
Zelfde verhaal.
--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/
Jan Ehrhardt
10/02/05, 22:55
Eduard Bekker in nl.internet.www.server-side (Thu, 10 Feb 2005 20:04:46
+0100):
>On 10-02-2005 16:59, in article p01n0118nv6dh1ts47ctkupl437pas6jft@4ax.com,
>"Jan Ehrhardt" <monitor@idem.invalid> wrote:
>
>>> http://nl2.php.net/manual/en/function.get-headers.php
>>
>> Moet je wel PHP5 hebben draaien.
>
>Heb ik. Maar het gaat er blijkbaar om wat de remote server heeft draaien...
Kan ik me nauwelijks voorstellen. Die remote server zou dan anders
moeten reageren op een GET opdracht vanuit PHP dan op een GET opdracht
vanuit een browser. Dat is zeer onwaarschijnlijk.
Jan
--
Look, Ma. No tables - http://enbio.steenbergen-stichting.nl/
Tjerk Wolterink
10/02/05, 23:55
Eduard Bekker wrote:
> On 10-02-2005 16:35, in article 420b7eea$0$3091$ee9da40f@news.wanadoo.nl,
> "Tjerk Wolterink" <tjerk@wolterinkwebdesign.com> wrote:
>
>
>>Eduard Bekker wrote:
>>
>>>Beste mensen!
>>>
>>>Via een zoekopdracht krijg ik een reeds url's door waarvan sommige gekoppeld
>>>zijn aan fotobestanden en sommige niet,
>>>
>>>Dus bijv.
>>>
>>>
>>>http://www.wijklunzemaarwataan.nl/FOTOS/12123.jpg
>>>http://www.wijklunzemaarwataan.nl/FOTOS/1232133.jpg
>>>
>>>Waarvan 12123.jpg werkelijk een fotobestand is en 1232133.jpg niet blijkt te
>>>bestaan.
>>>
>>>Het is niet een eigen server en daarom blijkt if file_exists("
>>>http://www.wijklunzemaarwataan.nl/FOTOS/1232133.jpg"), alle andere verwante
>>>formules niet te werken.
>>>
>>>Mijn vraag: is er een andere manier om bestanden op remote servers te
>>>checken?
>>>
>>>
>>
>>Ik denk dat je hier wel genoeg aan hebt:
>>http://nl2.php.net/manual/en/function.get-headers.php
>>
>>Dus ff een functie ervoor:
>>
>>/**
>> * Checkt of een server een 200 OK return code geeft op een bepaald url
>> *
>> * @param $url de url die gecheckt moet worden
>> * @return true als de http return code 200 is
>> */
>>function remote_file_exists($url) {
>>$headers=return get_headers($url);
>>if($headers!==false) {
>>return strpos($headers[0], "200")!==false;
>>} else return false;
>>}
>
>
> Geeft:
>
> Warning: get_headers(http://www.hetdomein.nl/FOTO/9789072194459.jpg)
> [function.get-headers]: failed to open stream: HTTP request failed! HTTP/1.1
> 404 Object Not Found in /home/sites/site10/_php/zoekeenboek.php on line 5
>
> :-(((((
>
>
hmm ik heb het ook niet getest,
maar het ziet ernaaruit dat get_headers failt als het bestand niet
bestaat (hij geeft http 404 errorcode=file bestaat niet).
Waarschijnlijk is een @ voor get_headers genoeg. En ik zie nu ook dat
ik een foutje in mijn functie heb:
er staat namelijk : $headers=return get_headers($url);
haha:
Kijk eens of dit werkt:
function remote_file_exists($url) {
$headers=@get_headers($url);
if($headers!==false) {
return strpos($headers[0], "200")!==false;
} else return false;
}
Ik heb nu geen tijd om het te testen,
probeer ook eens bij de php-documentatie te zoeken naar url-functies ofzo.
Eduard Bekker
11/02/05, 10:35
Goedemorgen Tjerk!
On 11-02-2005 00:46, in article 420be421$0$4268$a344fe98@news.wanadoo.nl,
"Tjerk Wolterink" <tjerk@wolterinkwebdesign.com> wrote:
Ja, dat had ik al door.
> Kijk eens of dit werkt:
> function remote_file_exists($url) {
> $headers=@get_headers($url);
> if($headers!==false) {
> return strpos($headers[0], "200")!==false;
> } else return false;
> }
>
> Ik heb nu geen tijd om het te testen,
Ik wel en - hoera! - het werkt!
Hartelijke dank, dus. :-)
Ik ben blij dat er mensen met meer verstand (van php) rondlopen als ik, want
hier zou ik zelf niet opgekomen zijn.
Wat is eigenlijk de betekenis van die '@' waar alles dus om blijkt te
draaien?
--
----------------------*
Groetjes,Eduard Bekker
http://www.websitez.nl
----------------------*
Tjerk Wolterink
11/02/05, 10:55
Eduard Bekker wrote:
> Goedemorgen Tjerk!
>
> On 11-02-2005 00:46, in article 420be421$0$4268$a344fe98@news.wanadoo.nl,
> "Tjerk Wolterink" <tjerk@wolterinkwebdesign.com> wrote:
>
>
> Ja, dat had ik al door.
>
>
>>Kijk eens of dit werkt:
>>function remote_file_exists($url) {
>> $headers=@get_headers($url);
>> if($headers!==false) {
>> return strpos($headers[0], "200")!==false;
>> } else return false;
>>}
>>
>>Ik heb nu geen tijd om het te testen,
>
>
> Ik wel en - hoera! - het werkt!
> Hartelijke dank, dus. :-)
> Ik ben blij dat er mensen met meer verstand (van php) rondlopen als ik, want
> hier zou ik zelf niet opgekomen zijn.
>
> Wat is eigenlijk de betekenis van die '@' waar alles dus om blijkt te
> draaien?
>
>
Die @ onderdrukt de warning die door get_headers wordt getriggerd.
En aan gezien get_headers een warning gooit als de url niet bestaat (404)
dan willen we geen warning op het scherm zien maar gewoon false returnen.
Ik moet er wel bijzeggen,
deze oplossing is niet super-mooi maar het werkt!
Tjerk Wolterink
11/02/05, 10:55
Eduard Bekker wrote:
> Goedemorgen Tjerk!
>
> On 11-02-2005 00:46, in article 420be421$0$4268$a344fe98@news.wanadoo.nl,
> "Tjerk Wolterink" <tjerk@wolterinkwebdesign.com> wrote:
>
>
> Ja, dat had ik al door.
>
>
>>Kijk eens of dit werkt:
>>function remote_file_exists($url) {
>> $headers=@get_headers($url);
>> if($headers!==false) {
>> return strpos($headers[0], "200")!==false;
>> } else return false;
>>}
>>
>>Ik heb nu geen tijd om het te testen,
>
>
> Ik wel en - hoera! - het werkt!
> Hartelijke dank, dus. :-)
> Ik ben blij dat er mensen met meer verstand (van php) rondlopen als ik, want
> hier zou ik zelf niet opgekomen zijn.
>
> Wat is eigenlijk de betekenis van die '@' waar alles dus om blijkt te
> draaien?
>
>
Heb je trouwens het ook getest bij een url dat wel bestaat?
Daniel Tryba
11/02/05, 12:05
Jan Ehrhardt <monitor@idem.invalid> wrote:
>>Heb ik. Maar het gaat er blijkbaar om wat de remote server heeft draaien...
>
> Kan ik me nauwelijks voorstellen. Die remote server zou dan anders
> moeten reageren op een GET opdracht vanuit PHP dan op een GET opdracht
> vanuit een browser. Dat is zeer onwaarschijnlijk.
One way to find out! Een URL die het beschreven gedrag vertoont?
Eduard Bekker
12/02/05, 00:45
On 11-02-2005 10:48, in article 420c7f5c$0$26221$18b6e80@news.wanadoo.nl,
"Tjerk Wolterink" <tjerk@wolterinkwebdesign.com> wrote:
> Eduard Bekker wrote:
>
>> Goedemorgen Tjerk!
>>
>> On 11-02-2005 00:46, in article 420be421$0$4268$a344fe98@news.wanadoo.nl,
>> "Tjerk Wolterink" <tjerk@wolterinkwebdesign.com> wrote:
>>
>>
>> Ja, dat had ik al door.
>>
>>
>>> Kijk eens of dit werkt:
>>> function remote_file_exists($url) {
>>> $headers=@get_headers($url);
>>> if($headers!==false) {
>>> return strpos($headers[0], "200")!==false;
>>> } else return false;
>>> }
>>>
>>> Ik heb nu geen tijd om het te testen,
>>
>>
>> Ik wel en - hoera! - het werkt!
>> Hartelijke dank, dus. :-)
>> Ik ben blij dat er mensen met meer verstand (van php) rondlopen als ik, want
>> hier zou ik zelf niet opgekomen zijn.
>>
>> Wat is eigenlijk de betekenis van die '@' waar alles dus om blijkt te
>> draaien?
> Heb je trouwens het ook getest bij een url dat wel bestaat?
Ja. Het resultaat kun je zien, als je bijv 'keuls, y' invult bij de auteur
op <http://www.amerongen-boekenkantoor.nl/zoekeenboek>
--
----------------------*
Groetjes,Eduard Bekker
http://www.websitez.nl
----------------------*