cookie sorusu.
merhaba sayfa her yenilendiğinde artıyor cookie tutmuyor neden olabilir
if(!in_array($ilanoz['id'], explode('|', $_COOKIE['ilansayac']))){
//Mysql update
$yenihit=$ilanoz['hit']+1;
$hitle= "UPDATE ilan SET hit=$yenihit WHERE id=".$ilanoz['id']."";
$sonuc= mysql_query($hitle) ordie(mysql_error());
setcookie('ilansayac', $ilanoz['id'].'|'.$_COOKIE['ilansayac'], time()+(60*60*24), '/'); }
Php
Merhabalar,
Sorununu tam olarak çözemesemde tavsiye de bulunabilirim.Anladığım kadarıyla gerçek hit olayını yapmaya çalışıyorsun, session ve cookie tarayıcı bazlıdır yani ömürleri o tarayıcı ile global olarak sınırlıdır.Cookieye sadece ilan_id'yi atıp var mı yok mu kontrolunden geçirirsin yoksa hit=hit+1 querysi yaparsın hitin 1 artar.Varsa ki zaten bu işleme hiç etki etmez.Orda explode niye kullanıyorsun anlamadım, dediğim gibi değilse biraz daha açıklayıcı olursan yardımcı olmaya çalışırız :)
explode kullanma amacım ziyaretçi diğer sayfaları gezdikçe birden fazla cookie oluşturmaktan ziyade tek cookie içinde barındırmak daha makbul olacaktır.
Php
Hmm o zaman şöyle bir yolda kullanabilirsin cookiede bir array dizisinin json_encodelu olduğunu var sayalım ve bu diziyi alıyorum:
$ar=json_decode($_cookie["ilan_ids"]);
if(!in_array($ilan_id,$ar)){
update set ilan hit=hit+1 where id=/ilan_id/
array_push($ar,$ilan_id);
setcookie('ilan_ids',json_encode($ar),time()+360);
}
amaç arrayın jsonlanıp cookieye atılması böyle daha hızlı çözüm bulabilirsin.
Php
doğru fakat buna biraz strateji eklemek gerekir. senin kodlarına göre bir ilan okuduğunda 1 artırır fakat başka bir ilanı okuduğunda işlem yapmayacaktır ;)
revision
Kodları tam incelemişsiniz galiba arrayda tutuluyor ilan_idleri yani diyelim ki 1 idli ilandayım arraya 1 girecek, sonrasında 2 idliyi okuyorum diyelim array bu sefer 1,2 değerlerini tutacak bunları jsonlu halde atacaksın cookieye kontrol ederken decode yapıp in_arraydan geçireceksin ki şuan ki hali ile mini sistemler için iş görür, ama büyük sistemler için Ali Bey'in de dediği gibi cookie kasar.
Php
Ya kullanıcı 15.000 tane ilan okuduysa ? Cookie'nin veri kapasitesi sınırlı malesef. 15.000 konunun id numarasını cookie'de tutamazsınız. bunun yerine. kullanıcının ip adresini ve okuduğu konunun id numarasını başka bir tabloda tutarsanız. Ve bu tabloda yoksa ekler ve hiti bir arttırır, varsa işlem yapmazsınız. İstediğiniz gerçek hit olayını gerçekleştirirsiniz.
Php
1-bana bir kullanıcı göster bırak 15 bini 150 tane ilan okuyan.
2-id numarasını tabiki cookie de tutabilirsiniz
3-mysql ile işlem yapmak sayfayı yoracaktır
saygılarımla
Php
Merakimi mazur görün kaç yıldır yazılım sektöründesiniz acaba sinem hanım?