我是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
不确定我是否在这里弄错会话的整个概念。
答案 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