On Mon, Dec 10, 2012 at 1:28 PM, Andrey Andreev <n...@bofh.bg> wrote:

> Hello all,
> On a pull request submitted via github, it was suggested to me that I
> should write an RFC about the feature that I'm proposing as well as to
> write about it here on the internals mail list.
> However, creating new pages (including RFCs) on wiki.php.net doesn't seem
> to be allowed for non-priviled users, so I'm forced to skip that part.
>
> The PR in question is located at the URL below, but note that I'm no C
> coder and while I did test it, I'm in no way confident that it should be
> implemented as is. The changes just seemed simple enough to do, so I went
> with it. If not anything else, you should be able to understand it more
> easily.
>
> https://github.com/php/php-**src/pull/238<https://github.com/php/php-src/pull/238>
>
> What I'm proposing is that setcookie(), setrawcookie() and ext/session
> should send the Max-Age attribute in the Set-Cookie header, as described in
> RFC2109, RFC2965, RFC6265.
>
> As shown in the subject, the absence of this attribute in PHP-generated
> Set-Cookie headers is also listed as a bug: https://bugs.php.net/bug.php?*
> *id=23955 <https://bugs.php.net/bug.php?id=23955>
>
> Another one also related: 
> https://bugs.php.net/bug.php?**id=43439<https://bugs.php.net/bug.php?id=43439>
>
> In summary - it specifies the cookie lifetime in seconds, starting from
> the current time. This means that it's a better solution than the Expires
> attribute, as the user agent doesn't need to worry about timezones and
> basically - it doesn't matter if its time settings are correct.
>
> It should also be noted that 0 (zero) or any negative value means that the
> cookie should be immediately dropped.
>
> Erroneous time settings is a problem for many users and for the developers
> of web applications that they report this supposedly as a bug and since
> I've personally faced such reports, I can tell - it's really hard to debug
> and/or figure out the problem at first. Considering this, I can imagine
> that this feature would solve a lot of problems.
>
> The listed RFCs specify that both Expires and Max-Age are optional
> attributes, but due to the latter being relatively new - it might not be
> supported by all browsers. Those that don't will ignore it, BUT those that
> do - will give it a higher precedence.
> To me, that makes it perfectly safe to send both Expires and Max-Age,
> whenever the cookie lifetime has to be specified.
>
> I've taken the chance to also switch the rest of the currently sent
> attributes from all-lowercase to the so called StudlyCaps presentation
> (e.g. expires -> Expires). Browsers should all match them in a
> case-insensitive manner, but all of the RFCs list them as proposed. In
> other words - this is irrelevant, why not do it for the sake of consistency?
>
> Btw, since the patch is against 'master', while compiling it appeared that
> it's PHP 5.5 code in that branch. That's not intentional on my part - if it
> was up to me, I'd include it in the very next release. :)
>
> Cheers,
> Andrey.
>
> Thx Andrey for this,

As I noted in a bug comment https://bugs.php.net/bug.php?id=23955 , this
feature must be added to PHP for User Agent having a wrong local time to
compute cookie expiration in a safe way.

The fact that adding the header should just not change the behavior of UA's
not knowing it is a huge +1.
I dont like the idea of adding one more parameter to setcookie() and
friends to let the programmer control the generated headers (talked about
in the github issue comments)

Julien.Pauli


>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Reply via email to