Re: header() removes all header of the same name.

From: Date: Fri, 21 Oct 2016 02:51:03 +0000
Subject: Re: header() removes all header of the same name.
References: 1 2 3 4 5 6 7 8 9 10 11 12 13 14  Groups: php.internals 
Request: Send a blank email to internals+get-96533@lists.php.net to get a copy of this message
On Fri, Oct 21, 2016 at 9:35 AM, Yasuo Ohgaki <yohgaki@ohgaki.net> wrote: > On Thu, Oct 20, 2016 at 9:21 PM, Niklas Keller <me@kelunik.com> wrote: >> Before we even discuss disallowing >> header("set-cookie"), we should have a >> sane cookie API, e.g. one that like setcookie($name, $value, >> $flags). >> >> That's also the way we implemented it in Aerys >> >> (https://github.com/amphp/aerys/blob/9a7327f062aa678408dfe4f4c3c7f479db16f187/lib/Response.php#L49-L58). >> It's a simple wrapper around addHeader to make life >> easier, but it doesn't >> restrict developers to call setHeader and replace all >> set-cookie >> headers. > > We choose current API for reason. It does not look pretty. > This is patch allow array config for 3rd param for setcookie(). > > > https://gist.github.com/yohgaki/b86e07cd450777422c1a467166cd2fd3 > > I suppose some of us will have opinions having this kind of code(s). > > Any comments? Execution example. [yohgaki@dev github-php-src]$ cat t13.php <?php setcookie('A', 'B', ['httponly'=>1, 'path'=>'foo', 'expires'=>time()+999, 'secure'=>1, 'domain'=>'example.com']); setcookie('A', 'B', ['httponly'=>1] ); setcookie('A', 'B', 999); setcookie('A', 'B', time()+999); echo 'OK'; [yohgaki@dev github-php-src]$ ./php-cgi t13.php X-Powered-By: PHP/7.2.0-dev Set-Cookie: A=B; expires=Fri, 21-Oct-2016 02:55:31 GMT; Max-Age=999; path=foo; domain=example.com; secure; HttpOnly Set-Cookie: A=B; HttpOnly Set-Cookie: A=B; expires=Thu, 01-Jan-1970 00:16:39 GMT; Max-Age=-1477016533 Set-Cookie: A=B; expires=Fri, 21-Oct-2016 02:55:31 GMT; Max-Age=999 Content-type: text/html; charset=UTF-8 OK If PHP has named parameter, we don't need this patch. Dose anyone working on named parameter? One issue of this patch is strict types. It ruins strictly typed parameter because array option parameters won't be checked by PHP. -- Yasuo Ohgaki yohgaki@ohgaki.net

« previous php.internals (#96533) next »