Hoofdstuk 19. Het gebruik van remote bestanden

Zo lang de ondersteuning voor " URL fopen wrapper " actief is wanneer je PHP configureert (is standaard actief tenzij je expliciet de --disable-url-fopen-wrapper optie gebruikt (voor versies tot en met 4.0.3 ) of allow_url_fopen zet to "off " (voor nieuwere versies ) kun je HTTP en FTP urls gebruiken met de meeste functies die standaard gezien een bestandsnaam als argument vereisen , dit werkt ook met de require( ) en include( ) functies .

Opmerking : Op het Windows platform kun je geen remote bestanden gebruiken als argument in de include( ) en require( ) functies .



Je kunt dit bijvoorbeeld gebruiken om een bestand te openen op een andere webserver , de output verwerken om de data te krijgen die jij wilt hebben en vervolgens deze data in een database query gebruiken of om simpel weg deze data weer te geven in je eigen website-stijl .

Voorbeeld 19-1 . De titel van een remote pagina op halen .

 
?php

 
$bestand

 
=

 
fopen

 
(

 
"http

 
:

 
/

 
/www.php.net

 
/

 
"

 
,

 
"r")

 
;

 
if

 
(!$bestand

 
)

 
{

 
echo

 
"

 
p

 
Kon

 
remote

 
bestand

 
niet

 
open.\n"

 
;

 
exit

 
;

 
}

 
while

 
(!feof

 
($bestand)

 
)

 
{

 
$regel

 
=

 
fgets

 
($bestand

 
,

 
1024)

 
;

 
/

 
*

 
dit

 
werkt

 
alleen

 
als

 
de

 
titel

 
en

 
title

 
en

 
/

 
title

 
op

 
1

 
regel

 
staan

 
*

 
/

 
if

 
(eregi

 
(

 
"

 
title

 
(.*

 
)

 
/

 
title

 
"

 
,

 
$regel

 
,

 
$matches)

 
)

 
{

 
$titel

 
=

 
$matches[1]

 
;

 
break

 
;

 
    }

 
}

 
fclose($bestand)

 
;

 
?





Je kunt ook naar bestanden schrijven op een FTP server als je teminste de juiste rechten hebt voor deze operatie en zolang het bestand nog niet bestaat op de FTP server . Om in te loggen als een user anders dan ' anonymous ' moet je je gebruikersnaam en mogelijk je paswoord opgeven in de URL , dit gaat op deze manier : 'ftp : / /gebruikersnaam:paswoord@ftp.mijnserver.nl / pad / naar / bestand ' Op deze manier kan je ook over HTTP toegang krijgen tot bestanden die 'Basic Authentication ' vereisen .

Voorbeeld 19-2 . Data opslaan op een andere server

 
?php

 
$bestand

 
=

 
fopen

 
(

 
"ftp

 
:

 
/

 
/ftp.php.net

 
/

 
incoming

 
/

 
outputfile"

 
,

 
"w")

 
;

 
if

 
(!$bestand

 
)

 
{

 
echo

 
"

 
p

 
Kon

 
remote

 
bestand

 
niet

 
openen

 
om

 
naar

 
te

 
schrijven\n

 
/

 
p

 
"

 
;

 
exit

 
;

 
}

 
/

 
*

 
Schrijf

 
data

 
weg

 
*

 
/

 
fputs

 
($bestand

 
,

 
"$HTTP_USER_AGENT\n")

 
;

 
fclose

 
($bestand)

 
;

 
?





Opmerking : Je kunt het idee krijgen om deze techniek te gebruiken om te schrijven naar een log op een andere server , maar zoals eerder gezegd kan je alleen schrijven naar bestanden die nog niet bestaan . Om ' distributed logging ' mogelijk te maken zou je moeten kijken naar syslog( ) .