到目前为止我有四页:
index.php
login.php
setsessionconfig.php
account.php
背景:
当我从索引点击登录w / facebook按钮时,它会将我带到login.php,如果用户已经在该网站注册,它就不会通过facebook网站继续浏览。 Login.php提取会话的必要信息,然后标题重定向到setsessionconfig.php,其中包含以下代码:
login.php加载视觉有5秒延迟,然后重定向到...
header( "refresh:5;url=".URLBASE."/setsessionconfig.php?uid=".$uid."&email=".$email );
setsessionconfig.php
$uid = isset($_GET['uid']) ? $_GET['uid'] : "";
$email = isset($_GET['email']) ? $_GET['email'] : "";
if( $uid != "" && $email != "") {
session_start();
$_SESSION[SESSION_UID] = $uid;
$_SESSION[SESSION_EMAIL] = $email;
$_SESSION[SESSION_IS_LOGGEDIN] = 1;
header("Location: account");
}
问题
当setsessionconfig.php重定向到account.php时,它会检查用户是否通过SESSION_UID全局变量登录,然后显示用户信息或显示"您尚未登录"文本。无论我做什么,我认为头重定向到account.php正在破坏会话变量。
我甚至检查了会话是否可以使用account.php中的以下代码。
function is_session_started()
{
if ( php_sapi_name() !== 'cli' ) {
if ( version_compare(phpversion(), '5.4.0', '>=') ) {
return session_status() === PHP_SESSION_ACTIVE ? TRUE : FALSE;
} else {
return session_id() === '' ? FALSE : TRUE;
}
}
return FALSE;
}
if ( is_session_started() === FALSE )
echo "<script>console.log('FALSE');</script>";
else
echo "<script>console.log('TRUE - ".session_id()."');</script>";
不幸的是,该部分实际上返回了TRUE和会话ID ......所以我有点卡住,因为我之前从未遇到过这个问题......
答案 0 :(得分:0)
尝试在标题
后使用exit();
答案 1 :(得分:0)
由于函数is_session_started,返回TRUE并返回会话ID,显然会话ID正确传递。
我希望account.php代码看起来像这样
theme-selector
修改:
尝试
<?php
session_start();
if (! empty($_SESSION['SESSION_UID']))
{
?>
your code here
<?php
}
else
{
echo 'You are not logged in.';
}
?>