Rozdział 19 . Korzystanie ze zdalnych plików

Jeśli parametr allow_url_fopen w pliku php.ini zostanie włączony , będzie można używać adresów HTTP i FTP w większości funkcji , które jako parametr przyjmują nazwę pliku , włączając w to instrukcje include( ) , include_once( ) , require( ) oraz require_once( ) . Więcej informacji o protokołach obsługiwanych przez PHP znajduje się w Dodatek I .

Notatka : PHP dla Windows , w wersji wcześniejszej niż 4.3 nie obsługiwało zdalnego dostępu do plików przy użyciu instrukcji : include( ) , include_once( ) , require( ) i require_once( ) oraz rodziny funkcji imagecreatefromXXX z rozszerzenia Materiały źródłowe XLI , Image functions .



Możesz wykorzystać własność aby otworzyć plik na zdalnym serwrze , przetworzyć jego zawartość i użyć wyników w zapytaniu do bazy danych , lub po prostu wyświetlić plik dostosowując jego wygląd do swojej strony .

Przykład 19-1 . Pobieranie tytułu zdalnej strony

 
?php

 
$file

 
=

 
fopen

 
(

 
"http

 
:

 
/

 
/www.example.com

 
/

 
"

 
,

 
"r")

 
;

 
if

 
(!$file

 
)

 
{

 
echo

 
"

 
p

 
Nie

 
można

 
otworzyć

 
zdalnego

 
pliku.\n"

 
;

 
exit

 
;

 
}

 
while

 
(!feof

 
($file)

 
)

 
{

 
$line

 
=

 
fgets

 
($file

 
,

 
1024)

 
;

 
/

 
*

 
Zadziała

 
tylko

 
wtedy

 
,

 
gdy

 
tytuł

 
i

 
jego

 
znaczniki

 


 
w

 
tej

 
samej

 
linii

 
*

 
/

 
if

 
(eregi

 
(

 
"

 
title

 
(.*

 
)

 
/

 
title

 
"

 
,

 
$line

 
,

 
$out)

 
)

 
{

 
$title

 
=

 
$out[1]

 
;

 
break

 
;

 
    }

 
}

 
fclose($file)

 
;

 
?





Możesz również zapisywać pliki na serwerach FTP ( zakładając , że połączyłeś się jako użytkownik z odpowiednimi prawami dostepu ) . Przy użyciu tej metody możesz jedynie tworzyć nowe pliki . Jeśli spróbujesz nadpisać istniejący plik , wywołanie funkcji fopen( ) zwróci błąd .

Przykład 19-2 . Zapisywanie danych na zdalnym serwerze .

 
?php

 
$file

 
=

 
fopen

 
(

 
"ftp

 
:

 
/

 
/ftp.example.com

 
/

 
incoming

 
/

 
outputfile"

 
,

 
"w")

 
;

 
if

 
(!$file

 
)

 
{

 
echo

 
"

 
p

 
Nie

 
można

 
otworzyć

 
zdalnego

 
pliku

 
do

 
zapisu.\n"

 
;

 
exit

 
;

 
}

 
/

 
*

 
Tutaj

 
zapisujemy

 
dane

 
.

 
*

 
/

 
fputs

 
($file

 
,

 
$_SERVER['HTTP_USER_AGENT'

 
]

 
.

 
"\n")

 
;

 
fclose

 
($file)

 
;

 
?





Notatka : Być może powyższy przykład nasunął ci pomysł , by użyć tej metody do zdalnego zapisywania logów . Niestety taka próba się nie powiedzie , gdyż wywołanie fopen( ) zwróci błąd , jeśli zdalny plik już istnieje . Aby zrealizować zdalne logowanie powinieneś przyjrzeć się funkcji syslog( ) .