Facebook应用程序中的会话管理


Session management in Facebook applications

我是PHP的新手,正在尝试构建一个facebook应用程序。在index.php文件中,我执行以下操作:

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

facebooksdk似乎是自己启动会话的,所以我的代码根本不会被调用!同时,index.php有一个表单,它被提交到一个名为processForms.php的新文件中。在index.php中,我设置了以下内容:

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

但在processForms.php中,访问$_SESSION会出现以下错误:

Notice: Undefined variable: _SESSION

不确定我是否误解了会话的整个概念。

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