ChefMedya adlı üyeden alıntı: mesajı görüntüle
Beni hatırla seçeneği eklemek istiyorum. ücretli ücretsiz yardım edecek varmıdır?
Öncelikle giriş formumuza beni hatırla seçeneğini ekleyelim ;

...
<label for="ckb1">
  Beni hatırla
</label>
<input id="ckb1" type="checkbox" name="remember-me">
Daha sonra bu formun post edildiği adreste birkaç düzenleme yapalım ;

<?php
 
$User = $_POST['username'];
$Pass = $_POST['password'];
 
// Formdan aldığımız bilgileri veri tabanında sorguluyoruz.
$CheckUser = $db->query("SELECT * FROM users WHERE username='{$User}' and password = '{$Pass}' ")->fetch(PDO::FETCH_ASSOC);
 
if ( $CheckUser ) {
 
// Eğer kullanıcı var ise standart session başlatma işlemlerini uygulayın, ardından beni hatırla işlemlerini yapalım.
 
if ( isset($_POST['remember-me']) ) {
 
$UserID = $CheckUser['id']; // Kullanıcının id'si.
$delete = $db->exec("DELETE FROM remember_me WHERE user_id = '$UserID' "); // Önceki anahtarları siliyoruz.
 
$NewToken = bin2hex(openssl_random_pseudo_bytes(32)); // Rastgele kod üretiyoruz.
 
// Ürettiğimiz kodu kullanıcı id'si ve tarayıcı bilgisi ile birlikte veritabanımıza kaydediyoruz.
$Insert2 = $db->prepare("INSERT INTO remember_me SET
        user_id = :bir,
        remember_token = :iki,
        expired_time = :uc,
        user_browser = :dort");
      $insert = $Insert2->execute(array(
        "bir" => $UserID,
        "iki" => $NewToken,
        "uc" => time()+604800,
        'dort' => md5($_SERVER['HTTP_USER_AGENT'])
         
      ));
 
// Kullanıcının tarayıcısına bu kodu çerez olarak kaydediyoruz.
setcookie("RMB", $NewToken, time() + 604801,'/');
 
}
 
}
Burada form post sayfamıza ekleme yaptığımız beni hatırla sistemi ile ilgili olan kısım sadece 13 ile 37 satırları arasında kalan kod. Siz bu kısmı alıp kendi kullandığınız kodların altına ekleyebilirsiniz
Şimdi veri tabanımızda remember_me adında bir tablo oluşturuyoruz ve şu sütunları ekliyoruz;

Şimdi ise son adım olarak kullanıcı siteye tekrar girdiğinde çerez bilgisini veritabanımızda sorgulayıp eğer geçerli ise oturumu otomatik olarak başlatacağız.

Aşağıdaki kodu site ilk açıldığında en üstte çalışacak şekilde bir dosyaya ekleyebilirsiniz. Oturumun site ilk açıldığında anında başlaması için bu kodun ilk çalışması şart. Header.php tarzı dosyalara ekleme yapabilirsiniz.

<?php
 
session_start();
 
// Eğer aktif bir oturum yok ise.
if ( !isset($_SESSION['Oturum']) || $_SESSION['Oturum'] != 'active' ) {
 
// Eğer beni hatırla çerezi var ise.
  if ( isset($_COOKIE['RMB']) and $_COOKIE['RMB'] != 'false' ) {
 
$CookieToken = $_COOKIE['RMB']; // Çerez kodu.
$Browser     = md5($_SERVER['HTTP_USER_AGENT']); // Tarayıcı bilgisi.
$time        = time(); // Unix zaman.
 
$query = $db->query("SELECT * FROM remember_me WHERE remember_token = '{$CookieToken}' and user_browser = '$Browser' and expired_time > $time ")->fetch(PDO::FETCH_ASSOC);
 
// Eğer çerez kodu geçerli ise ve max oturum süresi 7 gün aşılmamış ise.
if ( $query ) {
 
$CookieUser = $query['user_id']; // Çereze ait kullanıcı id'si.
 
// Çerezdeki kullanıcı id'sini veri tabanımızda sorguluyoruz.
$CheckUser = $db->query("SELECT * FROM users WHERE id = '{$CookieUser}' ")->fetch(PDO::FETCH_ASSOC); 
 
if ( $CheckUser ) {
 
// Kullanıcı geçerli. $CheckUser kullanıcısı için oturum başlatılabilir.
 
// Burada standart login sayfanızda hangi işlemleri yapıyorsanız onları yapın ve oturumu başlatın. 
// Bu şekilde kullanıcının oturumu otomatik olarak başlamış olacak.
 
  $_SESSION['Oturum'] = 'active';
  $_SESSION['UserID'] = $CheckUser['id'];
 
} else {
 
// Çerez geçersiz, çerezi sıfırla ve giriş sayfasına yönlendir.
  setcookie("RMB", 'false', time() -3600,'/');
  header("Location:/Login");
  exit;
 
}
 
} else {
 
// Çerez geçersiz, çerezi sıfırla ve giriş sayfasına yönlendir.
  setcookie("RMB", 'false', time() -3600,'/');
  header("Location:/Login");
  exit;
 
}
 
}
}
Çerez olarak hiçbir kullanıcı adı veya parola tutmadığımız için çok daha güvenli. Tarayıcı bilgisini kaydedip sorgulamamız ise farklı tarayıcılarda aynı çerez kodunun çalışmasını engelliyor ve ekstra bir güvenlik katmanı sağlıyor. Kolay gelsin