1

在我网站的登录部分,我试图让用户写一些关于他们自己的信息。我有一个功能性但不安全的登录/注册页面,我试图用一个简单的“使用 facebook 登录”按钮替换它。

问题是,一旦用户使用 facebook 登录,他们可以更新信息,但他们无法访问它。$uid 变量包含他们唯一的 facebook 用户 ID,SQL 函数正确读取它并将其插入数据库,但所有其他 PHP 函数将其读取为完全不同的数字。SQL 是否在解码 $uid 而 PHP 回显加密版本?

以下将一条新信息放入正确的 facebook ID 下,然后回显不正确的 facebook ID:

    $sql="INSERT INTO Users (ID, Date, Category, Info)
VALUES
($uid, '$myTime', '$category','$info')";

if (!mysql_query($sql, $con))
  {
  die('Error: ' . mysql_error());
  }
echo "Info Saved<br>";

echo " session: " . $_SESSION['uid'] . " PHP uid: " . $uid . " cookie: " . $_COOKIE['uid'];

我可以告诉 SQL 函数工作正常,因为真实 ID 存储在数据库中的信息旁边,并且当用户使用非安全表单登录时显示数据。

输出:

 Info Saved
 session: 100005003165914 PHP uid: 100005003165914 cookie: 100005003165914

当我使用不安全的表单登录时会发生这种情况:

 Info Saved
 session: 2147483647 PHP uid: 2147483647 cookie: 2147483647
4

2 回答 2

2

从您的代码中不清楚安全和非安全形式之间的区别是什么,但我怀疑在某些时候$_SESSION['uid']从数据库中读回并且该ID列只是 am INT,它不能存储 100005003165914 但最多 2147483647 - 这恰好是您获得的价值。

于 2013-01-04T02:27:04.690 回答
0

非安全形式和不安全形式有什么区别?两者听起来都与我相似。也试试这个答案:Get User Id from Facebook in PHP

于 2013-01-04T02:23:41.103 回答