PUT methode ondersteuning

De PUT methode ondersteuning is sterk veranderd tussen PHP 3 en PHP 4 In PHP 4 , wordt aangeraden om mbv de standaard input stream de inhoud van de HTTP PUT te lezen .

Voorbeeld 18-4 . Opslaan van HTTP PUT bestanden met PHP 4

 
?php

 
/

 
*

 
PUT

 
data

 
komt

 
binnen

 
via

 
de

 
stdin

 
stream

 
*

 
/

 
$putdata

 
=

 
fopen(

 
"php

 
:

 
/

 
/stdin"

 
,"r")

 
;

 
/

 
*

 
Open

 
een

 
bestand

 
om

 
naar

 
te

 
schrijven

 
*

 
/

 
$fp

 
=

 
fopen("myputfile.ext"

 
,"w")

 
;

 
/

 
*

 
Lees

 
de

 
data

 
1kb

 
per

 
keer

 
,

 
en

 
schrijf

 
deze

 
daarna

 
weg

 
*

 
/

 
while

 
($data

 
=

 
fread($putdata,1024)

 
)

 
fwrite($fp,$data)

 
;

 
/

 
*

 
Sluit

 
alles

 
af

 
*

 
/

 
fclose($fp)

 
;

 
fclose($putdata)

 
;

 
?





Opmerking : De uitleg hieronder geld alleen voor PHP 3 .

PHP ondersteunt ook de HTTP PUT methode welke gebruikt wordt door o.a . Netscape Composer en W3C Amaya . PUT aanvragen zijn veel simpeler dan een bestand uploaden en zien er ongeveer als volgt uit :

 
PUT

 
/

 
pad

 
/

 
bestandsnaam.html

 
HTTP

 
/

 
1.1





Dit betekent normaal gezien dat de server het bestand ook als / pad / filename.html wilt opslaan . Dit is natuurlijk geen goed idee omdat je niet wilt dat anderen bestanden overschrijven in je web tree . Om zo' n 'request ' te verwerken vertel je je server eerst met wat voor PHP script je dit request wilt verwerken . Met Apache kun je dit doen met het Script Met Apache kun je dit doen met het Script directive . Het kan ongeveer overal in je configuratie bestand geplaatst worden . Een standaard plaats hiervoor is bijvoorbeeld een Directory blok . Een enkele regel als voorbeeld :






Dit vertelt Apache om alle PUT requests waarvoor URIs die overeenkomen met de context waarin deze regel geplaatst is , naar het put.php script te sturen . We gaan er vanuit dat je de juist mime-headers heb gebruikt om PHP met de .php extensie te laten werken en dat PHP actief is .

In je ' put.php ' zou je dan iets als volgt neer zetten :






Dit kopieert het bestand naar de locatie welke gevraagd werd in het request . Waarschijnlijk zal je nog enige tests uitvoeren op het bestand voordat je het bestand daadwerkelijk kopieert . De enige truc hier is dat PHP het bestand opslaat in een tijdelijk bestand zoals bij de POST-methode . Zogauw het request is afgehandeld word het tijdelijke bestand verwijderd . Let dus op dat je script het tijdelijke bestand verplaatst of hernoemd . De naam van dit tijdelijke bestand is opgeslagen in de variable $PHP_PUT_FILENAME en je kunt de voorgestelde locatie vinden in $REQUEST_URI ( Dit kan anders zijn bij niet-Apache web servers ) . Dit is nogmaals een suggestie van de gebruiker . Je hoeft deze suggestie niet te gebruiken , je kunt bijvoorbeeld alle bestanden in een speciale uploads directory plaatsen .