Güvenlik konusunda ek olarak tokeni 5 dk'da bir hem çerezde hem de veritabanında değişmesini sağlayabilirsin. Ama bu sunucuya ek yük bindirecektir. Bunun dışında kullanıcı yeniden giriş yaptığında token zaten değişecektir.
Eğer beni hatırla seçiliyse;
if ( @$remember_me == '1' ) {
$remember_token = bin2hex(openssl_random_pseudo_bytes(64));
setcookie("token", $remember_token , time()+60*60*24*7, '/login',null,false,true );
//Varsa önceki tokenleri sil
$affected = DB::exec("DELETE FROM remember_me WHERE user_token='$user->user_token' ");
$id = DB::insert(
'INSERT INTO remember_me (user_id, remember_token,date) VALUES ( ?, ?,?)',
array($user_id,$remember_token, time() )
);
}
Login sayfasının başına;
if ( @$_COOKIE["token"] != "" ) {
$tok = $_COOKIE['token'];
$name = DB::getVar("SELECT user_token FROM remember_me WHERE remember_token = '$tok' LIMIT 1");
if ( $name != "" ) {
$user = DB::getRow("SELECT * FROM general_users WHERE user_token='$name' LIMIT 1");
if ( @$user->id == "" ) { setcookie("token", 'invalid'); header("Location:/"); die(); }
$_SESSION['oturum'] = 'active';
$_SESSION['user_token'] = $user->user_token;
$_SESSION['user_name'] = $user->user_name;
$_SESSION['user_payment_status'] = $user->user_payment_status;
$_SESSION['user_email_status'] = $user->user_email_status;
$_SESSION['user_type'] = $user->user_type;
header("Location:/");
}
}