Au cours du processus de test, il a été constaté que si la méthode a un écho et d'autres fonctions en sortie vers le cache de sortie de PHP, l'ID de session ne sera pas placé dans l'en-tête de la requête http et l'ID de session ne sera pas obtenu dans le prochain request
Raison du problème
Emplacement du code : public/index.php
$response->send();
Cette méthode code alternatif : supplier/symfony/http-foundation/ Response.php
/** * Sends HTTP headers. * * @return $this */ public function sendHeaders() { // headers have already been sent by the developer if (headers_sent()) { return $this; } // headers foreach ($this->headers->allPreserveCaseWithoutCookies() as $name => $values) { foreach ($values as $value) { header($name.': '.$value, false, $this->statusCode); } } // status header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode); // cookies foreach ($this->headers->getCookies() as $cookie) { if ($cookie->isRaw()) { setrawcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly()); } else { setcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly()); } } return $this; }
La raison précédente est apparue dans headers_sent()
Les étudiants intéressés peuvent tester si le cache de sortie existe Data (le comportement d'impression se produit lorsque la méthode utilise des fonctions telles que echo). La fonction headers_sent() renvoie true
Cela explique le problème selon lequel votre session ne prend jamais effet lorsqu'il y a une fonction d'impression dans la méthode
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!