par demande, il y a quelques façons différentes que vous pouvez dire si oui ou non une session a été commencé, comme:Comment savoir si une session est active?
$isSessionActive = (session_id() != "");
Ou:
$isSessionActive = defined('SID');
Cependant, ces deux échouer si vous commencer une session, puis fermez-la; session_id()
renverra l'ID de la session précédente, tandis que SID
sera défini. De même, l'appel session_start()
à ce stade va générer un E_NOTICE
si vous avez déjà une session active. Est-il un moyen sain d'esprit pour vérifier si une session est en cours, sans avoir à recourir à la mise en mémoire tampon de sortie, l'opérateur shut-up (@session_start()
), ou quelque chose d'autre tout aussi aki?
EDIT: J'ai écrit un patch pour essayer d'obtenir cette fonctionnalité incluse dans PHP: http://bugs.php.net/bug.php?id=52982
EDIT 8/29/2011: Nouvelle fonction ajoutée à PHP 5.4 pour résoudre ce problème: "Expose session status via new function, session_status"
// as of 8/29/2011
$isSessionActive = (session_status() == PHP_SESSION_ACTIVE);
EDIT 05/12/11: session_status() sur le manuel PHP.
Ceci est peut-être hacky: ['session_is_active()'] (http://stackoverflow.com/questions/3788369/how-to-tell-if-a-session-is-active/7656468#7656468), mais au moins quelque chose que j'ai trouvé. Merci pour le rapport de bug de toute façon, c'est bien de le voir résolu en 5.4. – hakre
Encore une question pertinente avec l'addition de 5.4, comme je viens de pousser à une boîte 5.3 et trouvé 'session_status()' manquant! – quickshiftin
C'est certainement étrange, car il est effectivement présent sur ma version 5.4. Areyou disant que vous utilisez 5.3 ou 5.4? Était-ce un binaire PHP personnalisé ou pré-intégré? Dans 'phpinfo()', avez-vous une section "session"? En action: http://codepad.viper-7.com/PiZmcw – ken