| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | <?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Component\HttpFoundation\Session;/** * Session utility functions. * * @author Nicolas Grekas <p@tchwork.com> * @author Rémon van de Kamp <rpkamp@gmail.com> * * @internal */final class SessionUtils{    /**     * Finds the session header amongst the headers that are to be sent, removes it, and returns     * it so the caller can process it further.     */    public static function popSessionCookie(string $sessionName, string $sessionId): ?string    {        $sessionCookie = null;        $sessionCookiePrefix = sprintf(' %s=', urlencode($sessionName));        $sessionCookieWithId = sprintf('%s%s;', $sessionCookiePrefix, urlencode($sessionId));        $otherCookies = [];        foreach (headers_list() as $h) {            if (0 !== stripos($h, 'Set-Cookie:')) {                continue;            }            if (11 === strpos($h, $sessionCookiePrefix, 11)) {                $sessionCookie = $h;                if (11 !== strpos($h, $sessionCookieWithId, 11)) {                    $otherCookies[] = $h;                }            } else {                $otherCookies[] = $h;            }        }        if (null === $sessionCookie) {            return null;        }        header_remove('Set-Cookie');        foreach ($otherCookies as $h) {            header($h, false);        }        return $sessionCookie;    }}
 |