[IIS/php] request-header waarde: if-modified-since

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • The Flying Dutchman
  • Registratie: Mei 2000
  • Laatst online: 29-07 21:57
Ik heb een php script dat op een IIS webserver draait. Dit script haalt een plaatje uit de database (mysql) en stuurt dit naar de bezoeker van de website. Ik wil ervoor zorgen dat het plaatje niet iedere keer uit de database gehaald wordt en verstuurd naar de bezoeker, maar dat dit alleen voorkomt als er een nieuwe versie van het plaatje is.

Op mijn thuisservertje (Apache) draait het script prima. Ik vraag met de php functie 'apache_request_headers()' de waarde van de variabele 'if-modified-since' op en ik vergelijk deze met het tijdstip waarop het plaatje gegenereerd is. Natuurlijk werkt op die IIS server deze apache specifieke functie niet. Maar ik wil toch graag de waarde van 'if-modified-since' (in de request-header) opvragen om deze te vergelijken. Heeft iemand enig idee hoe ik dit kan doen?

Ik kwam op de php website nog het volgende tegen:
There is a simple way to get request headers from Apache even on PHP running as a CGI. As far as I know, it's the only way to get the headers "If-Modified-Since" and "If-None-Match" when apache_request_headers() isn't available. You need mod_rewrite, which most web hosts seem to have enabled. Put this in an .htacess file in your web root:
code:
1
2
3
4
5
6
7
8
9
RewriteEngine on
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

The headers are then available in PHP as
<?php
  $_SERVER['HTTP_IF_MODIFIED_SINCE'];
  $_SERVER['HTTP_IF_NONE_MATCH'];
?>
Maar ik heb ook geen 'mod_rewrite' (aangezien dat ook voor apache is). Wel heb ik de beschikking over ISAPI_rewrite, maar ik krijg het daarmee niet voor elkaar.

Iemand enig idee hoe ik toch aan die request-header waarde 'if-modified-since' kom? Of iemand andere oplossingen? Liever start ik geen discussie over plaatjes wel of niet in de database opslaan, daar heb ik al erg veel van gelezen op dit forum. Ik heb eventueel wel de optie om plaatjes als files op te slaan, maar dan moet ik een directory writable maken, dat doe ik liever niet.

The Flying Dutchman


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Tja, dat dat niet werkt is niet zo vreemd aangezien die rewrite rule een apache specifieke implementatie is. Heb je al naar getAllHeaders() gekeken? Ik zie nu net in de handleiding dat dit een alias is voor de functie waar je zelf mee aankomt en dat deze alleen bij apache werkt. Wel lomp trouwens dat ze dergelijke triviale dingen zelfs in versie 5 nog niet hebben kunnen implementeren |:(.

[ Voor 39% gewijzigd door Janoz op 19-04-2007 14:33 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
offtopic:
wat ik zei klopt niet

[ Voor 91% gewijzigd door _js_ op 19-04-2007 15:08 ]