一个 php session 变量导致在重定向时取消设置 session
One php session variable causing unsetting session on redirect
我正在使用 Javascript 和 PHP Facebook sdk 的组合来集成登录到我的网站(托管在本地主机上)。
Facebook初始化并获取访问令牌后的代码:
if(fbidExists($profile['id']) == true)
{
$query = "SELECT userid AS id, username FROM users WHERE fbid = ". $profile['id'] ;
$login = mysqli_fetch_assoc(mysqli_query($GLOBALS['connection'], $query));
$_SESSION['id'] = $login['id'];
$_SESSION['username'] = $login['username'];
header("Location: http:\\localhost\website\");
exit();
}
问题:
重定向后,每当我使用 $login['username']
时都没有 session 变量,否则 session 变量正在传输。
如果我更改 SQL 查询并将 username
替换为任何其他列,则没有问题,我可以在重定向后看到 session 变量。例如 :
$query = "SELECT userid AS id, email FROM users WHERE fbid = ". $profile['id'] ; $_SESSION['username'] = $profile['email']
没问题
$_SESSION['username']
变量可以通过其他文件轻松设置并且不会产生任何问题(当我在自己的登录中使用它时)
MySQL 中的 username
是 varchar
类型,我在每个页面上使用 session_start()
,在 header 之后使用 exit()
。
感谢您的帮助。
事实证明这是一个问题,因为在第二个脚本中没有设置变量,这会破坏会话。
我正在使用 Javascript 和 PHP Facebook sdk 的组合来集成登录到我的网站(托管在本地主机上)。
Facebook初始化并获取访问令牌后的代码:
if(fbidExists($profile['id']) == true)
{
$query = "SELECT userid AS id, username FROM users WHERE fbid = ". $profile['id'] ;
$login = mysqli_fetch_assoc(mysqli_query($GLOBALS['connection'], $query));
$_SESSION['id'] = $login['id'];
$_SESSION['username'] = $login['username'];
header("Location: http:\\localhost\website\");
exit();
}
问题:
重定向后,每当我使用 $login['username']
时都没有 session 变量,否则 session 变量正在传输。
如果我更改 SQL 查询并将 username
替换为任何其他列,则没有问题,我可以在重定向后看到 session 变量。例如 :
$query = "SELECT userid AS id, email FROM users WHERE fbid = ". $profile['id'] ; $_SESSION['username'] = $profile['email']
没问题
$_SESSION['username']
变量可以通过其他文件轻松设置并且不会产生任何问题(当我在自己的登录中使用它时)
username
是 varchar
类型,我在每个页面上使用 session_start()
,在 header 之后使用 exit()
。
感谢您的帮助。 事实证明这是一个问题,因为在第二个脚本中没有设置变量,这会破坏会话。