Mehmet Fatih YILDIZ (mfyz.com)

Menü



PHP ile grafiksel sayaç uygulaması

Kategori : PHP ve Pear Dökümanları
Eklenme Tarihi :
7 Ocak Cuma ´05




Dikkat : Dökümanın yazılma tarihi üzerinden en az 60 gün (2 ay) geçmiş. İçerisindeki bilgiler güncelliğini yitirmiş olabilir, uygulamada ufak sorunlar oluşabilir. Yorumları ve güncellemeleri göz önünde bulundurarak dökümanı takip ediniz.


Bu makalede sizlerle bir sayaç uygulamasını nasıl yazabileceğimizi göreceğiz.Hepinizin bildiği (yada tahmin ettiği) gibi bir sayaç yazmak çok da zahmet gerektiren bir iş değildir.
Burada sayaç tekniği olarak istediğiniz methodu alabilirsiniz. İster mysql'den alacağınız sayaç değeriniz ile oynar ve ekrana yazdırır, ister basit txt dosyaları ile oluşturduğunuz sayaç sisteminizi yazdırabilir ister kullanıcı bazında cookie tabanlı yapıyı. Burada scripti zorlamamak için cookie tabanlı kullanıcı bazında çalışan bir sistemde sayaç yazdıracağız.

Yapmamız gereken şey genel anlamda şöyle olacaktır :

- Sayfamız ziyaretçiyi karşılar ve ona daha önce sayfamızı ziyaret ettiğine dair bir bilgi yani cookie gönderilip-gönderilmediğini kontrol eder.
- Eğer ziyaretçimiz daha önce de aynı sayfaya girmişse, zaten onda mevcut bulunan (daha önce kaç kez girdiğini gösteren) cookie değeri alınır ve bu değer 1 arttırarak tekrar ziyaretçimize yollanır.
- İlk defa giriyorsa değişkenin degeri NULL yani 0 atanacak, 1 artırılıp cookie olarak atılacaktır.
Böylece her girişinde değer bir artacağı için, onun sayfamızı kaç kez ziyaret ettiğini görmemiz mümkün olacaktır.

Yukarıdaki yönergeleri izlediğimiz taktirde basit bir sayaç oluşturabiliriz. Tabi sayacı sadece cookie yöntemini kullanarak yapmak zorunda değiliz! Kullanıcı bilgilerini, oluşturduğumuz bir veritabanında depolayabileceğimiz gibi harici bir "txt" dosyasında da saklamamız mümkündür. Session fonksiyonlarını kullanarak da bir sayaç oluşturabiliriz. Ama en sağlık yöntem cookie kullanmaktır Eğer, bir çok yerde sayaç kullanacaksak; o zaman daha organize ve müdahaleye yönelik sayaçlar oluşturabilmek adına, biraz önce saydığım yöntemleri (veritabanı ve dosyalama yöntemlerini) kullanabiliriz.

Gelelim bizim hazırlayacağımız sayaca; biz de yukarıda sırladığımız yönergeleri izleyerek bir sayaç oluşturacağız. Fakat hazırlayacağımız sayaç basit olmayacak. Sayacımızı bu basitlikten kurtarmak için değerleri, bir "grafik (resim)" kullanarak yansıtacağız. Grafik sayaç oluşturma konusuna birazdan geçeceğiz, ama bundan önce bu grafikleri oluşturmamız ve isimlendirmemiz gerekiyor. Siz istediğiniz grafik biçimini kullanabilirsiniz. Fakat ziyaretçiye geri dönüşümü "sayılarla" sağlayacağımızı düşünürsek (ki bir sayaçtan bahsediyoruz), grafiği oluşturduğumuz resim(ler)in rakamlardan oluşması bizim için en mantıklı seçim olacaktır. Bu örnek için benim hazırladığım grafikler şu şekilde;





Göründüğü gibi her resim bir rakamı temsil ediyor. Rakamları temsil eden grafiklerimizi de hazırladıktan sonra artık kodlamaya geçebiliriz. Yapmamız gerekenleri kabaca sıralamıştık, bunun yanında yapacağımız tek işlem cookie den her defasında gelen rakamları okuyarak, bunların hazırladığımız grafiklerdeki karşılığını ekrana yazdırmak olacak. Örneğin ziyaretçimiz sitemizi daha önce "749" defa girmiş olsun. Biz bu ifadeyi karşılaştırma yapabilmek için "7", "4", "9" şeklinde ayırmamız gerekiyor. Parçalama fonksiyonu kulanarak bunu yapabiliriz.

Unutmadan grafiklerin adları "<rakam>.gif" şeklinde, böylece kolayca istediğimiz rakamı basabileceğiz.

  1. $deger = 749;
  2.  
  3. // integer degiskeni stringe donusturelim
  4. settype( $deger, "string" );
  5.  
  6. // string parcalari
  7. print($deger[0]); // 7
  8. print($deger[1]); // 4
  9. print($deger[2]); // 9
  10.  
  11. $sayac = $_COOKIE["ziyaret"]; // cookie'den degerimizi aliyoruz.
  12.  
  13. // eger daha once hic girilmemis ise otomatik olarak $sayac NULL degeri alacaktir.
  14. $sayac++; // sayacimizi artirdik. (NULL ise 0'dır, 1 artar ve 1 olur sonucta)
  15.  
  16. // cookie olarak atalim.
  17. setcookie( "ziyaret" , $sayac , (time()+(365*24*60*60)) );

"(time()+365*24*60*60)" ifadesi, gönderdiğimiz cookienin 1 yıl süreyle saklanacağını belirtir.
Eğer $_COOKIE["ziyaret"] adında bir değişken zaten var ise, mevcut değeri daha önceki ziyaret sayısı olacaktır. Eğer yoksa değeri NULL olduğundan 1 artırıldığında son değer 1 olacaktır. $sayac değişkenini 1 artırıp tekrar cookie atarak sayacımızı güncellemiş olduk. sıra geldi ekrana yazdırma işinde.

  1. // integer degiskeni stringe donusturelim
  2. settype($sayac,"string");
  3.  
  4. // diziyi dönüyoruz
  5. for( $i=0 ; $i<strlen($sayac) ; $i++ ){
  6.   print '<img src="resimler/sayac/' . $i . '.gif"> ';
  7. }

Kodu toparlamak gerekirse;

  1. <?
  2.  
  3. // cookie'den degerimizi aliyoruz.
  4. $sayac = $_COOKIE["ziyaret"];
  5.  
  6. // eger daha once hic girilmemis ise otomatik olarak $sayac NULL degeri alacaktir.
  7. $sayac++;
  8. // sayacimizi artirdik. (NULL ise 0'dır, 1 artar ve 1 olur sonucta)
  9.  
  10. // cookie olarak atalim.
  11. setcookie( "ziyaret" , $sayac , (time()+(365*24*60*60)) );
  12.  
  13. // integer degiskeni stringe donusturelim
  14. settype($sayac,"string");
  15.  
  16. // oluşan diziyi dönüyoruz
  17. for( $i=0 ; $i<strlen($sayac) ; $i++ ){
  18.   // her karakteri sırayla yazdırıyoruz.
  19.   print '<img src="resimler/sayac/' . $sayac[$i] . '.gif"> ';
  20. }
  21.  
  22. ?>

Örnek çıktı :




Hazırlayan : Sezgin Bilketay


Yorumlar (3 yorum/ping var)



Üye Resmi Ziyaretçi : dilek öztürk
4 Şubat Perşembe ´10 10:49 tarihinde yazmış
program parçacığını yazdığımda
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\ziyaret.php:1) in C:\AppServ\www\ziyaret.php on line 4  

mesajı ile karşılaşıyorum
yeni kullanıcıyım ve localda çalışıyorum .hatanın nedenini öğrenebilirmiyim
 


Üye Resmi Ziyaretçi : Orçun KUTLU
24 Şubat Çarşamba ´10 17:13 tarihinde yazmış
SAyfanın Başına
ob_start();

------
Sayfanın sonuna da
ob_end_flush();

Eklediğinizde o tip hatalar almazsınız.
 


Üye Resmi Ziyaretçi : ithal
26 Mart Cuma ´10 11:44 tarihinde yazmış
Teşekkürler, çok işime yarayacak..
 


Yeni Yorum

Önce Okuyun Yorumlarınızda sosyal, dini ve politik taraflı mesajlar, başkalarına saldırı sayılabilecek laflardan kaçının. Argo kelimeler, küfürler otomatik olarak silinecektir. Bu kural ihlalleri ip, üyelik, isiminizin banlanmasına yol açabilir.

Lütfen yardıma yönelik, konuyu uzatacak sorularınızı/yorumlarınızı forumda yazınız. Burası konu dahilindeki kısa soluklu öneri/yorumlar içindir. Aksi halde yorumunuzu göremeyebilir, uyarı alabilirsiniz.

Hatırlatmak amacıyla : html kodlarının, link yapmak, vb amacıyla gireceğiniz ekstra bilimum şeylerin çalışmayacağını belirteyim. Yorumlayıcı zaten linklerinizi otomatik çevirecek, gülücüklerinizi dönüştürecektir. Zengin metin özellikleri için araç çubuğundaki butonları kullanın.


İletişim Bilgileri


E-Posta adresiniz gösterilmeyecektir.

(unut)

Üye iseniz, giriş yapıp bu bilgileri girmeden hızlıca yorum yapabilirsiniz. Yorumunuzda resminiz/ikonunuz ve profil bağlantınız görüntülenecek, aynı zamanda güvenlik kodu girmek zorunda da kalmayacaksınız.
Üye olmak için buraya tıklayın.

Güvenlik Kodu
Güvenlik kodunu göremiyorsanız sayfayı yenileyin!


Yukarıdaki güvenlik kodunu bu kutuya yazın.

Yorum   
- +

Ad soyad, eposta ve yorum alanları
(⊗ işaretli alanlar) zorunludur.





mfyz.com'da şu an 10 ziyaretçi geziniyor. Toplam 114 makale, 208 yazı, 3000 gönderi var



  • RSS mfyz.com'u RSS beslemeleri ile takip edebilirsiniz
  • ServerTR Hosting Sponsoru ServerTR.com'a çok teşekkür ederiz
  • CC 2.5 Sitedeki materyalleri Creative Commons 2.5 Lisansı çerçevesinde kullanabilirsiniz. Lisans hakkında bilgi almak için tıklayın
  • İstatistikler Site ziyaret istatistikleri, konu, eğilim gibi ilginç istatistikler hakkında
  • Site Hakkında Site altyapısı, hazırlanışı, kurallar ve felsefesi hakkında
  • İletişim İletişim formu, iletişim bilgileri

mfyz.com Türk Programcılığının Gelişmesine Adanmıştır
HTML Standartlarına Uygundur

CSS Standartlarına Uygundur