Facebook应用程序中的会话管理

时间:2012-03-04 14:43:20

标签: php facebook-php-sdk

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

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

facebook sdk似乎自己开始会话,所以我的代码根本没有被调用!同时,index.php有一个表单,可以提交给一个名为processForms.php的新文件。在index.php中,我设置了以下内容:

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

但是在processForms.php中,访问$ _SESSION会给我以下错误:

Notice: Undefined variable: _SESSION

不确定我是否在这里弄错会话的整个概念。

1 个答案:

答案 0 :(得分:3)

if之前您不需要session_start。直接称之为:session_start();。如果会话已经启动,那么它不会造成任何伤害。

似乎你认为“开始会话”的概念是错误的。好吧,并非完全错误......看看:“session_start()”确实“启动会话”,从你可能想到的意义上来说,即你称之为一次并且“会话已经'开始'”。不需要。您需要在处理会话的每个 PHP脚本的开头调用“session_start”始终

例如,在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”。这并不意味着“会议的开始”。这意味着“初始化会话内容,因此我可以使用会话”。

通常的方法是在“bootstrap”类型的脚本中使用单个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