İnternet dünyasında artık merak ettiğimiz her konu hakında dersler, e-ktaplar bulmak mümkün. Çorbada benim de tuzum bulunsun diyerekten "php" programlama dilini kendi yöntemimle anlatmaya, öğretmeye çalışacağım. Benim yöntemimi açmak gerekirse tümdengelim metodu ile örnekler üzerinden anlatmayı kastediyorum. Bu bana göre php öğrenirken hem daha hızlı hem de daha pratiğe dönük hem de sıkıcı olmayan bir çözüm.
Genel Bilgi
İlk örneğimizde php ile sitemize basit bir sayaç yapacağız. Sayacımız şöyle çalışacak. Sitemizde bir metin dosyası (.txt) bulunacak ve içine bir başlangıç sayısı yazacağız. Bir kullanıcı sitemizi görüntülediği zaman dosyadan bu sayıyı okuyacağız. Bir artırdıktan sonra yeniden dosyaya yazacağız ve bu bir artırılmış halini ekrana yansıtacağız.
Bu örnekten çıkarılması gereken dersler dosyalara nasıl yazı yazılır, silinir, okunur, değiştirilir. Dosya kullanarak sayaçtan başka ziyaretçi defteri gibi bir betik de (script) yazılabilir. Önemli olan mantığı kavramanız.
Kod ve Açıklaması
Öncelikle aynı dizinde iki yeni dosya yaratıyoruz, say.txt ve sayac.php
say.txt -> Bu dosyanın içine 4 (herhangi bir sayı yazabilirsiniz) yazıp kaydedin ve dosyayı kapatın.
sayac.php -> Bu dosyamız bizim betiğimizi oluşturacak. İçine şu kodları ekleyin.
// Okuma safhası
$tut = fopen($dosya,"r");
$sayi = fread ($tut, filesize ($dosya));
echo "<center>Bu sayfa ".$sayi." kez görüntülenmiştir.</center>";
fclose($tut);
// Yazma safhası
$tut2 = fopen($dosya,"w") ;
$yenisayi = $sayi + 1;
$sonuc= fwrite ($tut2, $yenisayi);
fclose($tut2);
?>
Şimdi de satır satır açıklayalım.
1 ve 16 - Php kodumuzun başlangıcını ve bitişini belirtir.
2 - $dosya adında bir değişkene ( php'de değişkenlerin gösterimi örnek $dosya şeklindedir) dosyamızın adını, "say.txt" atıyoruz. Artık sayacımız hangi dosyadan okuyacağını biliyor.
4 ve 10 - Bu satırlar açıklayıcı bilgidir. Görüğünüz gibi çift taksim işaretinden ( // ) sonra gelen php satırı betik tarafından okunmaz. Ek bilgileri böyle ekleyebiliriz.
5 - Dosyamızı okumak için açıyoruz ve bu açılmış halini $tut değişkeninde muhafaza ediyoruz. fopen () komutu dosyayı açmak için kullanılır. Bu satırda $dosya değişkeni ile belirlediğimiz dosyayı "r" ile açtım. "r" (read) okumak için anlamına gelir. Bu şekilde açılmış bir dosyaya yazı yazılamaz. bkz. fopen ()
6 - Bu satırda dosyadaki sayımızı elde ediyoruz. Bu da şu şekilde oluyor. $tut değişkeninde bulunan açık haldeki dosyanın içinden dosyanın boyutu kadar ( filesize() ) yani tamamını okuyup bir yazı olarak (string) $sayi değişkenine atıyoruz (fread ()). Artık ziyaret sayımızı biliyoruz ($sayi değişkenindeki sayı)
7 - Ekrana bu $sayi değişkenindeki değeri yazdırıyoruz (ekrana yazma komutu echo)
8 - $tut ile belirtilen dosyayı kapatıyoruz. (fclose ())
11 - 5. satırdaki işlemin aynısı fakat bu sefer dosyayı "w" ile yani yazmak için (write) açıyoruz ve $tut2 değişkenine atıyoruz.
12 - Okuma safhasında 6. satırda, dosyanın içindeki değeri $sayi değişkenine atamıştık. Şimdi bu sayıyı bir artırarak $yenisayi değişkenine atıyoruz.
13 - $yenisayı değişkenini $tut2 'deki açık halde bulunan dosyaya fwrite () komutu ile yazıyoruz.
4 - $tut2 ile belirtilen dosyayı kapatıyoruz.
Sonuç
Özetlemek gerekirse say.txt dosyasını okumak için açtık, içindeki sayıyı okuduk, ekrana yazdık, dosyayı kapadık, dosyayı yazmak için açtık, yeni sayıyı dosyaya yazdık ve kapattık.
Bu makaleyi başlangıç seviyesinde yazmaya çalıştım. Ne kadar anlaşılabilir olduğumu lütfen yorumlarınızla belirtiniz. Bundan sonraki örneklerimde de ona göre bir dil kullanacağım.
Eğer php'yi öğrenmek istiyorsanız lütfen bu anlattıklarım lafta kalmasın, bir deneyin, biraz kurcalayın. Dosyaya sayı değil de isminizi yazın ve ekrana görüntüleyin. Ne de olsa amaç daha önce belirttiğim gibi mantığını anlamak...

yakuter.com © 2006-2008 Erhan Yakut. Site tasarım fallendesign.
Site içerisindeki içerikler izinsiz kopyalanamaz, alıntı yapılamaz.
1 murat emirik
13 Haziran 2007, 22:57
kardeş çok güzel anlatmışsın. denedim ama bunu sayfaya yani htmlde nasıl göstereceğimi bilemedim. yardımcı olursan sevinirim
2 yakuter
16 Haziran 2007, 15:43
html içinde değil, bunu php içine yazmalısın. Bir php dosyasına bu kodu olduğu gibi yazarak çıktısını görebilirsin. Dene-yanıl yöntemi en güzel öetoddur bu konuda ;)
3 Serdar Aydar
17 Ekim 2007, 12:20
evet, normalde sayaç local de çalışıyor. fakat internette yayınladığım zaman nedese yayınlanmıyor.
bu konuda yardımcı olan olursa sevinirim.
sanırım sorun bende, ama sorunun ne olduğunu anlamadım..
4 Serdar Aydar
17 Ekim 2007, 12:22
Pardon yayınlanmıyor dedim düzeltiyorum. yayınlanıyor, ama sayfayı yenile dediğim zaman sayı artmıyor. hatta farklı IP lerden de girdirttirdim. sayı artmıyor. sorun bu. yardımcı olursanız sevinirim..
5 ramazan yıldız
12 Ocak 2008, 17:10
arkadaşlar dosyalarınızı hosta attıgınızda chmod ayarlarınızı kontrol edin
6 sezgin bilketay
14 Ocak 2008, 06:32
Arkadaşımızın eline sağlık.Güzel bir döküman..Fakat bana göre eksik.Çünkü bu sayacı oluşturduğunuz sayfa size sağlıklı bir bilgi vermez.. Sayfayı “her yenilediğinizde” sayacın değeri 1 artacak.Yani ne olacak? Web sitemize gelen kullanıcı, sitemizdeki yenileme haraketinde (bu linke tıklamak olarak da değerlendirilebilir..) sayaç 1 artacağından dolayı, o ziyaretçiyi birden çok kez saymış olacağız.Oysaki bizim amacımız gelen ziyaretçiyi bir kez saymak ve mevcut oturumu sırasında bir daha sayılmasını engellemek. O yüzden ziyaretçimize bir cookie göndererek, aşağıdaki şekilde bir kod oluşturmamız en mantıklısı…
7 Murat USTAALIOGLU
05 Şubat 2008, 12:48
evet, normalde sayaç local de çalışıyor. fakat internette yayınladığım zaman nedese yayınlanmıyor.
bu konuda yardımcı olan olursa sevinirim.
sanırım sorun bende, ama sorunun ne olduğunu anlamadım..
—————————————————————————————
host aldigin serverin fopen fonksiyonu buyuk ihtimalle kapalidir o yuzden calismiyordur kardesim. fopen bir kac guvenlik nedeninden dolayi pek kullanilmayan bir kodlamadir…
8 lestioni
07 Haziran 2008, 11:42
sayacın artması için, dosyanın yazma yetkisi açık olması gerekir.. windows sunucuda salt okunur kalkmalı, *nix ise chmod 777 gibi olmalıdır.. sonrasını zaten kod yapıyor..