COOKIE ile tekil hit
Arkadaşlar ürünlerin gösteirldiği sayfada o ürünü kaç kez görüntülendiğini gösteriyorum.
Fakat her refresh yapıldığında sayaç artmaması için sayfa görüntülendiği anda $_GET['UrunID'] cookiye atayıp 1 gün süre ile refresh yaptığında saymasın istiyorum.
setcookie('GoruntulenenUrunID['.$_GET['UrunID'].']', strtotime('+1 day'));
şeklinde görüntülenen sayfayı cookiye yazdırıyorum.
Fakat tekrarlandığında bu cookie içinde bu UrunID var mı kontrolünü nasıl yaparım bulamadım.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (9)
@pcmemo doğru düşünmüşsün, kimliği doğrulanmamış kullanıcı da cookie kullanmalısın. Tek bir cookie oluşturman yetecektir. Veritabanı kısmında userid yerine cookie yazdıracaksın tabii böyle olursa user id kısmı null olacak userid yazdırdığında ise cookie boş olabilir veya ikisini de yazdırabilirsin, işin içine kullanıcı ip'sini de sokabilir misin bilemiyorum. Şu anda sistemi tam kafamda oturtamadım. Kimliği doğrulanmamış
cookie'sinden gelen bilgi ile veritabanından sorgu yaparsan, sonuca ulaşırsın gibime geliyor.
session kontrolü yaptıracaksın eğer session yok ise misafir kullanıcılar için çerez atayacaksın tamamemen if ve else ile mantığa uygun koşullar yazmana dayalı yani
$uye(bu değişken sesionu temsil ediyor olsun) ve $misafir adında iki değişkenin var diyelim
if(isset($uye)){yukarıadaki çerez kodları}else{$misaifr = setcookie... if(yine çerezler)} gibi... kısacası var mı, yok mu, varsa ne olacak, yoksa ne olacak mantığı üzerinden gitmelisin.
@shelby veritabanı tamam ama üye olmayanların UserID sini veritanabına yazdıramadığım için login olmayanlarda hit tekrar tekrar artabilir. O yüzden cookie olabilir diye düşündüm. Login ypmadan her kullanıcının unique olan ne tip bilgisini yazabilirim ki veritabanı seçeneğini devreye alabileyim.
sen bunu sorunca fark ettim çerezi yanlış tanımlamışsın zaten, değer yok.
$_GET['UrunID'] = 22;
if(@$_COOKIE['GoruntulenenUrunID'.$_GET['UrunID'].''] ===true){}else{setcookie('GoruntulenenUrunID'.$_GET['UrunID'].'', $_GET['UrunID'], strtotime('+1 day'));}
echo $_COOKIE['GoruntulenenUrunID'.$_GET['UrunID'].''];
GoruntulenenUrunID cerez adı UrunID ise sayfada görüntülenen ürünün id'si. Senin yazdığın kodun baş tarafında bu isimdeki cookinin içinde hangi ürünün olduğunu anlaması için UrunID de olması gerekmez mi?
if(isset($_COOKIE['GoruntulenenUrunID'])) yani bu bölüm bu isimde bir çerez varmı diye bakıyor, ama bu çerezin için UrunID var mı diye anlaması gerek.??