Vra

My PHP app gebruik 404 Dokumente om HTML-lêers te genereer sodat verskeie navrae aan dieselfde HTML-lêer net die geslag laat keer hardloop.

Ek wil graag versoeke om die HTML-lêers te onderskep sodat die gebruiker nodig het om 'n gevestigde PHP Sessie moet word ten einde die lêers trek.

In die beste geval, sessie-ID gebruik sou word in die URL en dwing dit gebruik kan word as 'n verdere verifikasie. Byvoorbeeld, meld in sou jy reik 'n sessie-en maak net sekere HTML-lêers toeganklik vir jou.

Ek is bewus daarvan dat deur die verandering van my koekies ek kon 'n versoek spoof, maar dit is goed.

Hoe sou ek gaan om dit te doen?

Was dit nuttig?

Oplossing

Iets soos hierdie kan werk (ek het dit nie getoets):

RewriteCond %{HTTP_COOKIE} PHPSESSID=([a-zA-Z0-9]+)
RewriteCond %{REQUEST_FILENAME} %{REQUEST_FILENAME}-%1.html
RewriteRule ^ %{REQUEST_FILENAME}-%1.html

Dit veronderstel dat jy voeg "-$session_id.html" om lêername ($session_id is PHP se sessie ID).

Dit moet veilig wees, en die voordeel is dat lêers word bedien deur die webbediener direk sonder beroep PHP at all.

Ander wenke

SetEnvIf HTTP_COOKIE "PHPSESSID" let_me_in
<Directory /www/static/htmls>
  Order Deny,Allow
  Deny from all
  Allow from env=let_me_in
</Directory>  

Natuurlik gebruiker kan met die hand soos koekie te skep in sy leser (daar is uitbreidings wat doen wat vir Firefox, en jy kan altyd jou blaaier se koekie winkel wysig).

Jy kan gebruik maak van die Apache module mod_rewrite op versoeke van herlei .html URLs om 'n PHP script:

RewriteEngine on
RewriteRule \.html$ script.php [L]

Die versoek URI pad en navraag is dan beskikbaar in die $_SERVER['REQUEST_URI'] veranderlike.

Sit jy die kas lêers uit jou web wortel, maar nog steeds in 'n plek waar PHP hulle kan toegang.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top