2011-08-01 9 views
7

セッションが現在設定されているかどうかを確認したい場合は、セッションを作成しない場合は、通常どおりにページを実行できるようにします(何もしません)。セッションが設定されているかどうかを確認し、セッションが設定されていない場合はチェックします。

私は、次のコードが掲載された別のSO質問を見ていた:

if (empty($_SESSION['login'])) { } else { } 

これを行う最も簡単な方法は、各セッションのために$_SESSION['a']のようなものを設定し、その後にif(empty($_SESSION['a']))を実行することですがセッションが存在するかどうかを確認しますか?

もう一度、最初にsession_start()を呼び出さずにセッション変数を使用することができます(これは昨日、エコーとして試みましたが、変数が実行されていることを確認するif文ではありませんでした変数をエコーする前にsession_start()を呼び出す必要があることに気づかずに)。

おそらく、使い慣れていない簡単な方法があります。見つけられないようです。

ご協力いただければ幸いです!

答えて

22

session_id()は、現在のセッションを識別する文字列を返します。セッションが初期化されていない場合は、空の文字列が返されます。

if(session_id()) 
{ 
     // session has been started 
} 
else 
{ 
     // session has NOT been started 
     session_start(); 
} 
+0

ありがとうございます:)。 10分のタイマーが消えたら、私は受け入れます。 – Fireworksable

+2

さらなる改善 - 文字列が偽であるかどうかを確認する必要はありません - テスト自体として 'session_id()'の戻り値を使用してください。空文字列は "偽"値であり、 '' ''は' if'文でfalseと評価されます。 – Nightfirecat

関連する問題