我是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