3

おい。私はいくつかのphpスクリプトを持っています。そのうちの1つにsession_start()というコードがあり、別のスクリプトに再びsession_start()があると、通知が表示されます:

Notice: セッションは既に開始されていました...

それは論理的です。しかし、それを削除すると、エラー/通知が表示されます:

注意: 未定義の変数: _SESSION

なんで?どうすれば修正できますか?スクリプト内に session_start() が 2 か所ある場合はスクリプトは正常に動作しますが (ほとんど通知されません)、2 つの session_start() がない場合はまったく機能しません。

持つ唯一の解決策です

error_reporting(E_ALL ^ E_NOTICE);

私のスクリプトで?そして、通知を無視するのは悪い習慣ではありませんか?

編集:

私のコードの一部:

            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'];
        }

出力:

注意: 未定義の変数: 19 行目の D:.....\main.php の _SESSION

Notice: 未定義の変数: _SESSION in D:.....\main.php 行 21

ヌル

pre_dump コード:

    function pre_dump($var)
{
    echo '<pre>';
    var_dump($var);
    echo '</pre>';
}
4

4 に答える 4

4

エラーは自分で見つけました。私が気付かなかった私のスクリプトのどこかに session_start() がありました。すべてが機能しているようです。

于 2010-12-08T19:42:37.750 に答える
0

unset($_SESSION);呼ばれたような気がします。

于 2010-12-08T19:16:05.577 に答える
0

私も最近同じ問題に遭遇しました。$_SESSION 変数の内容にアクセスできませんでした。

1) これは $_SESSION 変数の宣言前にアクセスしようとした結果でしたsession_start();。私自身のケースでは、header.php ファイルで既にセッションを開始していました。しかし、include ステートメントの前に $_SESSION 変数にアクセスしていました。例;

<?php
 $username = $_SESSION['username'];
 //do some logical operation!!!
?> 
<?php include("header.php");?>

このようなことをする代わりに

<?php include("header.php");?>
<?php
 $username = $_SESSION['username'];
 //do some logical operation!!!
?> 

2) この問題を引き起こす可能性のあるもう 1 つのことは、$_SESSION 変数へのアクセスを必要とする可能性のあるすべてのファイルの先頭でセッションを開始できない可能性があります。

session_start();

これが同じ問題に遭遇した人に役立つことを願っています. これは遅い時間に来ていますが。

于 2014-02-15T21:44:13.217 に答える
-1

session_start() を実行するかどうかに関係なく、$_SESSION は常に存在します。だから私は何か他のものがあなたのエラーを引き起こしているに違いないと思います.

コードを投稿できますか?どこかで変数の設定を解除した可能性があります (このリンクを参照してください)。

于 2010-12-08T19:11:12.493 に答える