2012-03-04 16 views
0

私はPHPを初めて使い、facebookアプリケーションを構築しようとしています。 index.phpファイルでは、私は次の操作を行います。Facebookアプリケーションのセッション管理

if(!isset($_SESSION)){ 
     session_start(); 
} 

FacebookのSDKは、それ自体でセッションを開始するようですので、私のコードは、すべてでは呼び出されません!その間、index.phpは、processForms.phpという新しいファイルに送信されるフォームを持っています。 index.phpので、私は次のように設定します。私は、セッションの全体のコンセプトを取得していますか

Notice: Undefined variable: _SESSION 

わからない:$ _SESSIONにアクセスすることは私に次のエラーを与える

$_SESSION['uid'] = $me['id']; 

しかしprocessForms.phpで

、ここで間違っている。

答えて

3

ifの前には、session_startの前には必要ありません。ちょうどそれをまっすぐに呼んでください:session_start();。セッションが既に開始されている場合は、何の問題もありません。

「セッションを開始する」という概念が間違っているようです。まあ、正確に間違っていない...見て: "session_start()" ではないあなたが考えているかもしれないという意味で、つまりと呼ばれることがあります "セッションを開始し、 "いいえ。セッションを処理するのPHPスクリプトの場合は、、常にの冒頭に「session_start」を呼び出す必要があります。例えば

login.phpで:somepage.php

session_start(); 
if ($user_and_pass_are_correct) 
{ 
    $_SESSION['username'] = $username; 
} 

session_start(); 
echo 'User name is ' . $_SESSION['username']; 

あなたがそこに "のsession_start" コールを必要としています。それは「セッションの始まり」を意味するものではありません。これは、「セッションの内容を初期化するので、セッションを使用できます」という意味です。

普通のアプローチは、 "ブートストラップ"の種類のスクリプトに単一のsession_startを置き、それを他のすべてのスクリプトの先頭に含めることです。

"bootstrap.phpの"

<?php 
    session_start(); // first line of script 
    initialize_other_stuff(); 

"a_page.php"

<?php 
    include('bootstrap.php'); // first line of script 

"another_page.php"

<?php 
    include('bootstrap.php'); // first line of script, always 
+0

は私があれば削除した場合、I g私のブラウザで次のようなメッセージが表示されます: Notice:セッションは既に開始されています - session_start()を無視しています – sharath

+1

あなたは 'if'を保つことができます。条件を 'if(empty(session_id()))'に変更します - http://br.php.net/manual/en/function.session-id.php( "戻り値"セクション) –

+0

を参照してください!おかげであなたたち:) – sharath