【发布时间】:2017-07-06 00:23:54
【问题描述】:
我正在使用 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'],都没有会话变量,否则会话变量正在传输。
如果我更改 SQL 查询并将 username 替换为任何其他列,则没有问题,并且我可以在重定向后看到会话变量。例如 :
$query = "SELECT userid AS id, email FROM users WHERE fbid = ". $profile['id'] ; $_SESSION['username'] = $profile['email'] 没有问题
$_SESSION['username'] 变量可以通过其他文件轻松设置并且不会产生问题(当我在自己的登录中使用它时)
MySQL 中的username 是varchar 类型,我在每个页面上都使用session_start(),在标题之后使用exit()。
【问题讨论】:
-
您遇到错误了吗?你也可以
var_dump($_SESSION),那会告诉你更多... -
为什么 \, URLs 使用
/。 -
你对
SQL injections也很开放!请确保使用准备好的语句。 -
不,我没有收到任何错误,此页面上的 var_dump 返回用户名,但是当我重定向空数组时...
-
我将代码更改为: $query = $GLOBALS['connection']->prepare("SELECT userid AS id, username FROM users WHERE fbid = ? UNION SELECT customerid AS id, cusername AS username来自客户 WHERE cfbid = ?"); $query->bind_param('ii', $profile['id'], $profile['id']); $查询->执行(); $result = $query->get_result(); $login = $result->fetch_assoc();在 redirect 之后,我仍然在 var_dump 中得到 null 数组
标签: php mysql session facebook-javascript-sdk facebook-php-sdk