私のサイトのログイン部分で、ユーザーが自分自身に関する情報を書き込めるようにしようとしています。機能しているが安全ではないログイン/登録ページがあり、単純な「Facebookでログイン」ボタンに置き換えようとしています。
問題は、ユーザーが facebook でログインすると、情報を更新できますが、アクセスできないことです。$uid 変数には一意の facebook ユーザー ID が含まれており、SQL 関数はそれを適切に読み取ってデータベースに挿入しますが、他のすべての PHP 関数はそれをまったく異なる番号として読み取ります。PHP が暗号化されたバージョンをエコーしている間、SQL は $uid をデコードしていますか?
次の例では、新しい情報を正しい 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'];
真の ID はデータベース内の情報の横に保存され、ユーザーが非セキュア フォームでログインするとデータが表示されるため、SQL 関数が正しく機能していることがわかります。
出力:
Info Saved
session: 100005003165914 PHP uid: 100005003165914 cookie: 100005003165914
これは、安全でないフォームでログインすると発生します。
Info Saved
session: 2147483647 PHP uid: 2147483647 cookie: 2147483647