2012-03-04 87 views
0

我是PHP新手,正在嘗試構建Facebook應用程序。在index.php文件,我做到以下幾點:Facebook應用程序中的會話管理

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

Facebook的SDK似乎自行啓動會話,所以我的代碼,並沒有得到根本叫!與此同時,index.php具有提交給名爲processForms.php的新文件的表單。在index.php文件,我設置如下:

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

但在processForms.php,訪問$ _SESSION使我有以下錯誤:

Notice: Undefined variable: _SESSION 

不知道我是否獲得會議的整個概念這裏錯了。

回答

3

你不需要session_start之前if。直接調用它:session_start();。如果會議已經開始,它不會造成任何傷害。

看來你的「啓動會議」錯誤的概念。好了,不完全是錯的...你看:「在session_start()」不「啓動對話」中,你可能會想感,也就是說,你把它一次和「會話已‘開始’ 」。不,你需要調用「在session_start」 總是,在 PHP腳本將處理會話的開始。

例如,在login.php

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

somepage.php

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

如果我刪除if ,我g等我的瀏覽器以下消息: 注意:一個會議已經開始了 - 忽略在session_start() – sharath 2012-03-04 15:05:06

+1

好吧,你可以保持'if'。我的條件改爲'如果(空(SESSION_ID()))' - 見http://br.php.net/manual/en/function.session-id.php( 「返回值」 一節) – 2012-03-04 15:08:51

+0

作品!謝謝你們:) – sharath 2012-03-04 16:01:50

相關問題