2012-03-04 46 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

相关问题