基本的に、基本的なセッション機能を備えたログイン システムがあり、ブラウザを閉じるとタイムアウトします。私はそれについて苦情を受けてきたので、覚えているティックをクリックして、セッションをたとえば30日間持続させたいと思っています。
2 に答える
言ったように、これはクッキーで行うことができます。チュートリアルはたくさんありますが、セキュリティには適切なアプローチが必要です。古くからのソーシャルネットワーキングサイトであるorkutでは、ユーザーがログアウトした場合でも、ユーザーにCookieを盗むスクリプトを実行するように依頼するだけで、アカウントはあなたのものになります。
したがって、これが最善のアプローチです。
ユーザーにCookieを作成し、ユーザーIDをソルトでハッシュして、ユーザートークンと呼びます。
データベースに、トークンが属するユーザーとその有効期限を含むトークンを保存します。
これで、ユーザーがCookieを使用して訪問したときに、ハッシュがデータベースにあるかどうかを確認し、訪問者をログインさせます。
ユーザーがログアウトしたら、そのトークンをデータベースから削除するだけです。
(詳細情報)
たとえば、設定しているときに同時に Cookie を設定$_SESSION['user_id']
します。このような :
$token = hash('md5',$_SESSION['user_id'] . time() . 'salt');
setcookie('token', $token, time() + (3600 * 24 * 30));
setcookie('user_id', $_SESSION['user_id'], time() + (3600 * 24 * 30)); // Cookie expires in 30 days
$token
DB の user_id 行に保存します。
次に$_SESSION['user_id']
、Cookie が保存されているユーザーに対して、通常の方法でサインインする必要がないように設定します。
if (!isset($_SESSION['user_id']) {
if (isset($_COOKIE['user_id']) && isset($_COOKIE['token']) {
$saved_token = SELECT token FROM users table WHERE userID = $_COOKIE['user_id'];
if ($_COOKIE['token'] == $saved_token) {
$_SESSION['user_id'] = $_COOKIE['user_id'];
} else log out
}
} else log out
}
}
たぶん、それはセキュリティ面でよりうまく機能しますか?