22 Voix

PHP: Examiner si une Session existe déjà - Empêcher l’Erreur "A session had already been started"

Question de Invité | 06/03/2023 à 20:26

Je travaille avec des sessions dans l'un de mes scripts PHP. Malheureusement, de temps en temps, il arrive qu'apparemment déjà une session PHP existe, après avoir révoqué session_start(). Cela se traduit par le message d'erreur suivant (Une session a déjà été démarrée):

Notice: A session had already been started - ignoring session_start()

Comment puis-je empêcher ce message d'erreur et vérifier si une session existe déjà et appeler session_start() en conséquence uniquement s'il n'y a pas encore de session ?

RépondrePositifNégatifDateVoix
22 Voix

Vous pouvez facilement vérifier avec isset(), s'il y a déjà une session ou dans votre cas, si aucune session n'est ouverte.

Vous pouvez le faire comme suit :

if (!isset($_SESSION)) {
  // aucune session n'a encore été démarrée
  session_start();
}

Cependant, la meilleure solution serait de (re)structurer votre code afin que session_start() ne soit invoquée de manière fiable qu'une seule fois, par exemple, à chaque fois que vous démarrez votre script. Avec une bonne conception de code, plusieurs appels à session_start() ne doivent pas se produire.
07/03/2023 à 11:38

RépondrePositif Négatif
11 Vote

Vous pouvez également utiliser la fonction PHP session_status() pour vérifier s'il y a actuellement une session.

Si une session est ouverte, vous récupérerez PHP_SESSION_ACTIVE de session_status(). Ainsi, vous pouvez écrire:

if (session_status() !== PHP_SESSION_ACTIVE) {
  session_start();
}

Cela vérifie si session_status() n'est pas égal à PHP_SESSION_ACTIVE (= une session est active) et puis démarre une nouvelle session.

Les autres valeurs de retour de session_status() sont:

  • PHP_SESSION_DISABLED: Les sessions sont désactivées.
  • PHP_SESSION_NONE: Les sessions sont activées, mais aucune session n'existe.
  • PHP_SESSION_ACTIVE: Les sessions sont activées et une session existe.

Plus d'informations à ce sujet ici dans le Manuel PHP.
09/03/2023 à 19:17

RépondrePositif Négatif
Répondre

Sujets Connexes

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.