セッションと Cookie について明確なビジョンを持っていないようです。
あなたのコードを除いて、誰もセッションの内容を変更することはできません(攻撃以外)。そのため、頻繁にアクセスする必要があるものuser id
や、適切なものすべてを保存できます。username
Cookie には、後でユーザーがページにアクセスしようとしたときに認識できる難読化された情報を保存する必要があります。そのため、Cookie の内容に基づいて、ユーザー セッションを再生成できます (つまり、ユーザーを自動的に再ログインします)。ユーザーは Cookie の内容を変更できるuser id
ため、セキュリティ上の理由から、単純なものであってはなりません。
簡単な例を挙げただけです。完璧にはほど遠いですが、それほど悪くはありません! シナリオに合わせて調整する必要がある場合があります。
ここで、次のような Cookie コンテンツを作成できます。
$salt = substr (md5($password), 0, 2);
$cookie = base64_encode ("$username:" . md5 ($password, $salt));
setcookie ('my-secret-cookie', $cookie);
後でユーザーを再ログインするには、次のようにします。
$cookie = $_COOKIE['my-secret-cookie'];
$content = base64_decode ($cookie);
list($username, $hashed_password) = explode (':', $hash);
// here you need to fetch real password from database based on username. ($password)
if (md5($password, substr(md5($password), 0, 2)) == $hashed_password) {
// you can consider use as logged in
// do whatever you want :)
}
アップデート:
この概念をカバーするこの記事を書きました。それが役に立てば幸い。