セキュリティに基づいて私の意見でこれを最善に行うには、いくつかの方法があります。注:これは本当にラフです....構文が間違っていることはわかっています。あなたがアイデアを得るだけです。
$con = mysql_connect("localhost","sampleuser","samplepass");
if (!$con)
{
$error = "Could not connect to server";
}
mysql_select_db("sampledb", $con);
$result = mysql_query("SELECT * FROM `sampletable` WHERE `username`='".$_SESSION['user_id']."'");
$userdeets = mysql_fetch_array($result);
if($_SESSION['sessionvalue'] != $userdeets['sessionvalue'])
{
session_destroy();
Header('Location: logout.php');
}
else
{
$result2 = mysql_query("UPDATE `sessionvalue` WHERE `username`='".$_SESSION['user_id']."' SET `sessionvalue` = RANDOMVALUE''");
$sesval = mysql_fetch_array($result2);
$_SESSION['sessionvalue'] = $seshval
}
今、私はそれがコードそのものではないことを知っていますが、本質的に、安全でこの能力を持つためにあなたがしなければならないことは次のとおりです:
- ページの読み込みをチェックするたびに、セッションの値がDBの値と一致します。
- ページが読み込まれるたびに、ランダムに生成されたDB値に基づいて新しいセッション値が設定されます。セッションにもユーザー名を保存する必要があります。
- セッションIDが一致しない場合は、セッションを破棄してリダイレクトします。
- 一致する場合は、新しいセッションIDを作成します。
ユーザーを禁止する場合は、DB内のユーザーのセッション値を「BANNED」のような値に設定できます。この値では、どちらもログインできません。このようにして、簡単なWebフォームを使用してユーザーを制御したり、禁止されたユーザーのリストを非常に簡単に生成したりすることができます。