Dans mon code PHP, si une session a déjà commencé, et que j'essaie d'en lancer une nouvelle, j'obtiens l'avis suivant :
Avis : Une session avait déjà été lancée - ignorer session_start()
Comment puis-je éviter cela ?
Dans mon code PHP, si une session a déjà commencé, et que j'essaie d'en lancer une nouvelle, j'obtiens l'avis suivant :
Avis : Une session avait déjà été lancée - ignorer session_start()
Comment puis-je éviter cela ?
Si vous en voulez un nouveau, alors faites session_destroy()
avant de le démarrer. Pour vérifier si elle est définie avant de la démarrer, appelez session_status()
:
$status = session_status();
if($status == PHP_SESSION_NONE){
//There is no active session
session_start();
}else
if($status == PHP_SESSION_DISABLED){
//Sessions are not available
}else
if($status == PHP_SESSION_ACTIVE){
//Destroy current and start new one
session_destroy();
session_start();
}
J'éviterais de vérifier les données globales $_SESSION
au lieu de de J'appelle le session_status()
puisque PHP a implémenté cette fonction explicitement pour :
Exposer l'état de la session via une nouvelle fonction, session_status Ceci est pour (PHP >=5.4.0)
Oui, vous pouvez détecter si la session est déjà en cours d'exécution en vérifiant les éléments suivants isset($_SESSION)
. Cependant, la meilleure réponse est tout simplement de ne pas appeler session_start()
plus d'une fois.
Il devrait être appelé très tôt dans votre script, peut-être même la première ligne, et ensuite ne plus être appelé.
Si vous l'avez à plusieurs endroits dans votre code, vous risquez d'obtenir ce type de bogue. Réduisez-le pour qu'il ne se trouve qu'à un seul endroit et ne puisse être appelé qu'une seule fois.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.