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
.
Możesz
wykorzystać
tę
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
są
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(
)
.