“Undefined variable: _SESSION” VS. “Une session avais déjà commencé”
Hey.
J'ai quelques scripts php. Dans l'un d'eux, j'ai le code de la fonction session_start(), et quand je suis dans un autre script de nouveau avoir la fonction session_start (), je reçois l'avis:
Avis: Une session avais déjà commencé...
C'est logique. Mais lorsque je le supprime, je reçois l'erreur/avis:
Notice: Undefined variable: _SESSION
Pourquoi? Et comment puis-je résoudre ce problème? Les scripts fonctionne très bien quand j'ai le session_start() deux endroits dans le script (seulement obtenir un peu de l'avis), mais ne fonctionne pas du tout quand je n'ai pas deux session_start().
Est la seule solution pour avoir un
error_reporting(E_ALL ^ E_NOTICE);
dans mon script? Et n'est-ce pas une mauvaise pratique de simplement ignorer les avis?
Edit:
Parties de mon code:
try {
//session_start();
$STH = DB::prepare ( "UPDATE users SET DJ_name=?, DJ_showname=? WHERE id=?" );
$STH->execute(array($_POST['DJ_name'], $_POST['DJ_showname'], $_SESSION['userid']));
pre_dump($_SESSION);
$_SESSION['DJ_name'] = $_POST['DJ_name'];
$_SESSION['DJ_showname'] = $_POST['DJ_showname'];
}
De sortie:
Notice: Undefined variable: _SESSION dans D:.....\main.php à la ligne 19
Notice: Undefined variable: _SESSION dans D:.....\main.php sur la ligne 21
NULL
pre_dump code:
function pre_dump($var)
{
echo '<pre>';
var_dump($var);
echo '</pre>';
}
$GLOBALS['_SESSION']
?Pourquoi n'êtes-vous pas garder juste 1 session_start ?
Êtes-vous à l'aide de PHP < 4.1?
Version de PHP: 5.3.0
$GLOBALS['_SESSION'] ne fonctionne pas
OriginalL'auteur Knarf | 2010-12-08
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé l'erreur moi-même.
A un session_start() quelque part dans mon script que je n'ai pas d'avis. Tout semble fonctionner maintenant.
OriginalL'auteur Knarf
Me semble
unset($_SESSION);
a été appelé.Droit, ce serait de déclencher les deux mises en garde:
session_start(); unset($_SESSION); session_start(); echo $_SESSION;
. Je ne sais pas de toute autre manière qui ne se produit, autre qu'une (improbable) de PHP bug.Pourrait-il être? session_write_close();
oui (5 lettres)
N'a pas travaillé. Essayé de l'enlever session_write_close();. La seule chose qui se passe est que j'ai obtenu 5 plus d'avis que la session avait déjà été commencé.
OriginalL'auteur zzzzBov
J'ai aussi rencontré le même problème récemment. Je ne pouvais pas accéder au contenu de $_SESSION variable.
1) C'était comme un résultat de la tentative d'accès au $_SESSION variable avant la déclaration de
session_start();
Dans mon propre cas, j'avais déjà commencé une session dans un header.php fichier. Mais j'ai accès à l' $_SESSION variable avant de l'instruction include. Exemple;au lieu de faire quelque chose comme cela
2) une Autre chose qui peut provoquer ce problème, peut-être un échec pour démarrer une session en haut de tous les fichiers qui peut nécessiter l'accès à l' $_SESSION variable à l'aide de
Espère que cela aide quelqu'un qui bute sur le même problème. Bien que ce qui est à venir à une heure tardive.
OriginalL'auteur user28864
$_SESSION existe toujours, peu importe si vous exécutez la fonction session_start() ou pas. Donc je pense que quelque chose d'autre doit être la cause de votre erreur.
Pourriez-vous poster le code? Il pourrait être que vous avez de désactiver la variable quelque part (voir ce lien).
session_start()
n'a pas été appelé (PHP 5.3.3).OriginalL'auteur thomaspaulb