【问题标题】:One php session variable causing unsetting session on redirect一个 php 会话变量导致重定向时取消设置会话
【发布时间】: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 中的usernamevarchar 类型,我在每个页面上都使用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


【解决方案1】:

感谢您的所有帮助。 事实证明这是一个问题,因为在第二个脚本中没有设置变量,这会破坏会话。

【讨论】:

    猜你喜欢
    • 2016-10-01
    • 2013-02-17
    • 2014-03-18
    • 2015-03-03
    • 2014-04-03
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    相关资源
    最近更新 更多