Ben 'beni hatırla' ve işaretinden sonra dışarı tıkladığınızda ben çerezleri giriş tekrar çalıştığınızda, alınmayabilir

2 Cevap

Ben bir kullanıcı adı, parola ve bir remember me radyo düğmesi seçeneği var olduğu bir giriş formu var. Şimdi ben bunu istiyorum ki ben ana sayfasından dışarı imzalı ettik ve ben çerez içine kullanıcı adı ve şifre değerleri saklamak için gidiyorum, çünkü ben de açmış olsun bir kullanıcı adı ve şifre sormadan sonra giriş için yeniden çalıştığınızda.

I (giriş sayfasında eylem sayfa) password_match.php sayfada kod yazdı

$con=mysql_connect("localhost","root","");
if(!$con)
{
die('Could Not Connect:'.mysql_error());
} 

mysql_select_db("tcs",$con);

if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass']))
{
$usr = $_COOKIE['cookname'];
$pwd = $_COOKIE['cookpass'];
$pwd=hash('sha1',$_POST['password']);
}

else
{
$usr=$_POST["username"];                 
$pwd=hash('sha1',$_POST['password']);           
}

Bu kod sayesinde ben cookname ve kullanıcı adı ve parolasını içeren cookpassword ile herhangi bir çerez olduğunu kontrol ediyorum. Hiçbir çerez bu adla bulunursa kullanıcı bunları girerse o, doğrudan metin kutularının gelen kullanıcı adı ve şifre almak.

Kullanıcı adı ve şifre varsa Şimdi yazacağım kod çerez koyacaktır:

if ($result) { $row=mysql_fetch_array($result);

if (($row["Username"]==$usr) && ($row["Password"]==$pwd))
{
    if(isset($_POST['remember']))
    {
    setcookie("cookname", $row['Username'], time()+60*60*24*100, "/");
    setcookie("cookpass", $row['Password'], time()+60*60*24*100, "/");
    }


$_SESSION['employee']['id']=$row['User Id'];
    $_SESSION['employee']['username']=$row['Username'];

    header ("Location: home_page.php");

}

Şimdi kullanıcı adınızı ve şifrenizi girin ve bu doğru göstermek ise bir çerez ayarlanmış olmalıdır ve şimdi çıkmış bana göre gibi, formda aynı işareti denemek ediyorsam burada happining çerez ama hiçbir şey alınamadı gerekirken, başlarken. Bunu uygulamak mümkün değilim. Nerede yanlış gidiyorum?

2 Cevap

Burada basit bir sistem kısa bir bakış var. Şöyle bir tablo oluşturun:

auth_token { user_id int, token varchar(...) }

Bir kişi oluştur "beni hatırla" tıkladığında benzersiz, imkansız-to-tahmin belirteç ve ilişkili user_id ile birlikte auth_token, tablo içinde saklamak. O token bir çerez olarak kaydedin.

Şimdi bazı common.inc.php dosya içinde (yani, her sayfada dahil), kişi şu anda oturum değilse bu çerez geçerli bir karma içeriyorsa çerez hash değeri kontrol, otomatik kişinin oturum o kullanıcı olarak.

Dikkat etmeniz gereken bazı şeyler:

  • IP adresleri bir dizi tanımlama kravat olabilir
  • Bunu gün X sayısının ardından sona olabilir
  • Bir "yumuşak login" gibi bir otomatik oturum açma tedavi ve güvensiz kabul edilir ilk eylem girilecek şifreyi gerektirebilir

Kullanıcı "Log Out" linkine tıkladığında yalnızca, sen bilgisayardan tanımlama silerim. İsteğe bağlı olabilir, bir o kullanıcı ile ilişkili veritabanlarından tüm sağlamalarının silmeyi tercih ettiği "Her Yer Out of Me Log".

Ama ne yaparsanız yapın, don't çerez kullanıcı adı veya şifre saklayın. Bu çok büyük bir güvenlik açığı olduğunu.

Peki, bu maddeye göre web siteme beni çerezleri hatırlıyorum tasarım: http://jaspan.com/improved_persistent_login_cookie_best_practice

Sen Kalıcı çerezler tasarımı nasıl bilmek okumak ve wreak tahribat kullanıcının veri çalınan çerezleri engellemek gerekir.

Oturum için kalıcı çerezleri kullanarak sadece eylem görmek sınırlıdır benim uygulama, kullanıcı. Veri giriş formu kullanarak giriş kullanıcı gerektiren değişecektir eylem. Çok yahoo mail kullanılan bir gibi daha.