PHP header expires RFC-verwarring

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Excuus voor de titel, maar ik zie door de RFC's het bos niet meer. |:(

Als ik een expires-header wil doorgeven met php, dan vind ik het handig om dat met date te doen.
PHP:
1
header("Expires: ".date("r"));

Dit zou moeten aangeven dat de file op het moment van laden verloopt, wat precies mijn bedoeling is.

Nu zie ik dat date('r') een RFC 822 geformatteerde datum oplevert en in de http-specs staat, dat de expires-datum in RFC 1123-formaat moet staan:
it MUST be in RFC 1123 date format:
[...]
An example of its use is

Expires: Thu, 01 Dec 1994 16:00:00 GMT
Met de beste wil van de wereld zie ik geen verschil tussen deze formaten (ik heb met Live http-headers in Firefox een aantal data bekeken).

Komen deze formaten op hetzelfde neer, zijn ze hetzelfde of zie ik iets over het hoofd?

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Ik zie het verschil ook niet, maar als je het zeker wilt weten doe je toch gewoon dit:
PHP:
1
echo date(DATE_RFC1123);


;)

//edit
date('r') levert trouwens een RFC 2822 datum op :)

[ Voor 28% gewijzigd door FragFrog op 04-09-2007 14:07 ]

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op dinsdag 04 september 2007 @ 14:00:
Met de beste wil van de wereld zie ik geen verschil tussen deze formaten (ik heb met Live http-headers in Firefox een aantal data bekeken).
Het verschil zit hem in het aantal cijfers dat gebruikt mag/moet worden voor het jaartal.

In RFC 822 mogen slechts 2 cijfers gebruikt:
date = 1*2DIGIT month 2DIGIT
In RFC 1123 is dit aangepast naar 2 of 4 cijfers, met de toelichting dat software waar mogelijk 4 cijfers hoort te gebruiken:
date = 1*2DIGIT month 2*4DIGIT
In RFC 2822 zijn 4 cijfers voor het jaar verplicht:
year = 4*DIGIT / obs-year

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanks!
PHP:
1
2
echo date(DATE_RFC1123)."<P>";
echo date('r');

levert inderdaad identieke data op.

Wat ik dan niet snap, is dat http://nl3.php.net/date niets zegt over DATE_RFC1123.
En er staat echt:
r - RFC 822 geformatteerde date; dus "Thu, 21 Dec 2000 16:01:07 +0200"
edit:
De Engelse versie is anders dan de Nederlandse:
r » RFC 2822 formatted date Example: Thu, 21 Dec 2000 16:01:07 +0200
8)7

edit2:
@Arjen Tempel en FragFrog:
Nu snap ik het.

date('r') geeft rfc2822. Dat is altijd met 4 cijfers voor het jaar en dat levert dus altijd een datum op die klopt met rfc 1123. Mijn regeltje code is dus in orde.

Eind goed, al goed :)

[ Voor 43% gewijzigd door Verwijderd op 04-09-2007 14:25 ]