kullanıcı kendi tarayıcınızı kapattığınızda mysql tablosundan bilgileri kaldırmak

5 Cevap php

i adında (mysql) iki tablo oluşturmak m

  1. table_temp_guest
  2. table_temp_order

Şimdi bir misafir daha sonra girerse biz bu ilk tablodaki onun kişisel bilgileri kaydetmek ve o herhangi bir durak bir şey satın alırsanız, bu table_temp_order geçici bir düzen olarak kaydedilir.

now my question is :

i m using session id, so when user goes to logout( without checkout) then i delete his information(personal and order) from both table )using session id, BUT if he close the browser, or does not go to checkout(any reson) then how to delete his information from both tables please suggest me how to do this?

additional question: is there any other way to do this whole process by some other manner.

5 Cevap

Bir kullanıcı yeni adresini tarayıcı veya türlerini kapandığında algılayamaz. Bu temelde sahip web sitelerinin kalanı gibi bir "zaman aşımı" tesis olması gerekir.

Orada javascript ile algılayabilir bir window.onunload olaydır, ama evrensel olarak desteklenen değil, ve window kapatır, değil tarayıcı kapatır algılar.

En iyi çözünürlük muhtemelen session_id ve son erişilen tarih izleme olacak. Yeniden güncelleme tablonun last_accessed_date, her sayfa yük, ve birkaç saat daha eski olan her şeyi sil üzerinde.

Bir zaman aşımı iyi yöntem olacaktır.

Konuk tablodaki son etkin zamanı kaydedin. Cron izin vermek istediğiniz maksimum süreyi aşan oturumları temizlik web sunucusunda periyodik çalışan var.

Eğer izin zamanın miktarı konusunda dikkatli olun. Yavaş kullanıcıları ve düştü bağlantıları için izin vermek zorunda.

(Ben bu session id ne demek olduğunu tahmin) yine session_id () kullanıyorsanız, sadece php oturumları kullanın. PHP sizin için otomatik olarak bunları geçersiz kılar ve bu iki tablo (Eğer $ _SESSION gereken her şeyi saklayabilirsiniz) gerekmez.

Broswer size güvenebileceğini kapalı değildi denetlemek için hiçbir yolu yoktur.

Eğer proje şimdi çalışır biçimini değiştirmek, sadece tablolara yaratılmış bir alan eklemek ve belirli bir kullanıcı "görme" konum zaman () şimdiki zamana ayarlamak istemiyorsanız. Sonra belirli bir zaman aşımından daha eski olan bu tablodan tüm kayıtları siler bir cronjob kurmak.

Ayrıca istemci tarafında çalıştırmak ve komut bir süre için Ping değil eğer biliyorum ki sunucu ping olacak bir komut dosyası var deneyebilirsiniz, kullanıcı tarayıcıyı kapattı. Söyleniyor, ben önceki posterleri ile kabul edeceğini, bir zaman aşımı / temizleme prosedürü iyi olurdu.

Eğer tablolar bir ModifiedDate alanını eklersiniz Bunun için, kullanım kolaylığı için bir "ON UPDATE" alanı olarak ayarlayabilirsiniz, sonra sadece yaşlı daha sonra birkaç saat bir ModifiedDate alana sahip tüm kayıtları silin.