Pokud
při
konfiguraci
PHP
aktivujete
podporu
"
URL
fopen
wrapper
"
(standardně
je
zapnutá
,
ledaže
pro
configure
explicitně
zadáte
--disable-url-fopen-wrapper
příznak
(verze
do
4.0.3)
,
nebo
(u
novějších
verzí
)
nastavíte
allow_url_fopen
v
php.ini
na
off)
,
můžete
ve
voláních
většiny
funkcí
,
které
očekávají
jako
argument
název
souboru
(včetně
require(
)
a
include(
)
)
uvést
HTTP
nebo
FTP
URL
.
Můžete
například
otevřít
soubor
na
vzdáleném
web
serveru
,
vyseparovat
z
výstupu
data
,
která
potřebujete
,
a
tato
data
potom
použít
v
dotazu
na
databázi
,
nebo
je
prostě
začlenit
do
výstupu
stylem
odpovídajícím
zbytku
vaší
web
site
.
Příklad
19-1
.
Získání
názvu
vzdálené
stránky
?php
$file
=
fopen
(
"http
:
/
/www.php.net
/
"
,
"r")
;
if
(!$file
)
{
echo
"
p
Nelze
otevřít
vzdálený
soubor.\n"
;
exit
;
}
while
(!feof
($file)
)
{
$line
=
fgets
($file
,
1024)
;
/
*
Toto
bude
fungovat
pouze
pokud
jsou
tagy
a
název
na
jedné
řádce
*
/
if
(eregi
(
"
title
(.*
)
/
title
"
,
$line
,
$out)
)
{
$title
=
$out[1]
;
break
;
}
}
fclose($file)
;
?
|
|
Pokud
se
připojíte
jako
uživatel
s
dostatečnými
právy
,
a
daný
soubor
už
neexistuje
,
můžete
data
také
ukládat
po
FTP
.
Pokud
se
chcete
připojit
jako
jiný
uživatel
než
'
anonymous'
,
musíte
v
URL
udat
uživatelské
jméno
(a
pravděpodobně
i
heslo)
,
např
.
'ftp
:
/
/uzivatel:heslo@ftp.example.com
/
path
/
to
/
file'
.
(Pro
přístup
k
souborům
přes
HTTP
,
které
vyžadují
Basic
authentication
,
můžete
použít
stejnou
syntaxi
.
)
Příklad
19-2
.
Uložení
dat
na
vzdáleném
serveru
?php
$file
=
fopen
(
"ftp
:
/
/ftp.php.net
/
incoming
/
outputfile"
,
"w")
;
if
(!$file
)
{
echo
"
p
Nelze
otevřít
vzdálený
soubor
pro
zápis.\n"
;
exit
;
}
/
*
Zapíšeme
data
.
*
/
fputs
($file
,
"$HTTP_USER_AGENT\n")
;
fclose
($file)
;
?
|
|
Poznámka
:
Z
výše
uvedeného
příkladu
by
vás
mohlo
napadnout
využít
tuto
techniku
k
zápisu
do
vzdáleného
logu
,
ale
jak
už
bylo
zmíněno
výše
,
pomocí
URL
fopen(
)
wrapperu
můžete
zapisovat
pouze
do
nového
souboru
.
Pokud
máte
zájem
o
distribuované
logování
,
podívejte
se
na
syslog(
)
.