Donanım Haber Forum
Ana Sayfa | Kayıt ol | Profilim | Gelen Kutusu | DH Hız Aşırtma VT | Adres Defteri | Email'le üyeliklerim | Benim forumlarım | Fotoğraf Albümleri
Favorileriniz | Üyeler | Arama | SSS | Şikayet listesi | Uyarı listesi | Nick işlemleri
PHP DERSLERİ !! (GÜNCELLEME : 12 KASIM 2008) .....GÜNCELLENDİ

İlgili konuları bak: (bu forumda | tüm forumlarda)

Bu isimle girdiniz: Guest
Bu konudaki kullanıcılar: hiç
  Basılabilir versiyon
Tüm forumlar >> [Web Tasarım - Programlama] >> Yazılım Geliştirme >> PHP / CGI >> PHP DERSLERİ !! (GÜNCELLEME : 12 KASIM 2008) .....GÜNCELLENDİ Sayfa: [1] 2   sonraki >   >>
Giriş
Mesaj << Daha eski konu   Daha yeni konu >>
amone

Mesaj: 251


 23 Temmuz 2008; 5:43:43 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

DUYURU

İlk scriptleri eklemeye başladım arkadaşlar,sizden gelenler doğrultusunda onları da ekleyeceğim ve altlarına elimden geldiğince açıklama yazmaya çalışacağım.
---->Eğer siz de scriptlerinizi gönderirseniz,güzel bir kaynak oluşturmuş olur ve bir çok arkadaşa da yardımcı olmuş oluruz.











Evet sevgili arkadaşlar,bir müddettir istediğim php derslerinin ilk bölümünü nihayet hazırlayabildim.Amacım sıfırdan başlayarak php için büyük,kaliteli bir kaynak oluşturmak.
Lafı fazla dolandırmadan direkt giriş yapmak istiyorum ama ondan önce bir hatırlatma da bulunayım : eğer siz de bana yardımcı olmak istiyorsanız hazırladığınız makakaleleri ya da örnek scriptleri bana ö.m den ulaştırırsanız hem daha geniş,hem de daha düzenli bir kaynak oluşturma şansını yakalamış oluruz.Şunu da belirteyim ki elbette gönderdiğiniz anlatımların ve scriptlerin altında isminiz olacaktır.

Tüm anlatımlar bittiğinde inşallah kaynağımız aşağıdaki içeriğe sahip olacaktır.
(Kırmızı renkli yazılar şu an mevcut olanlar)


-php nedir ?
-php kurulumu

-değişkenler,veri türleri,sabitler,operatörler
-akış kontrolü ve döngüler (if-else-else if,switch,? operatörü,for,while,do...while,foreach,break,continue)
-diziler ve foreach
-fonksiyonlar
-form işlemleri
-belli başlı php fonksiyonları
-dosya işlemleri
-tarih/zaman işlemleri
-veritabanı işlemleri
-cookiler ve sessionlar

-örnek scriptler (anket,sayfalama scripti,not ortalaması kontrol scripti,ziyaretçi defteri scripti eklendi)
-güvenlik

Bu arada sorularınızı bu konu içerisinde değil de yeni başlıklar halinde sormanız hem bu konunun daha düzenli kalmasını,hem de diğer arkadaşların sorularınıza verilen cevaplardan yararlanmasını sağlar.Eğer anlatımlarımda bir hataya rastlarsanız yine bana ö.m den bildirmeniz yeterli olacaktır.




1-PHP NEDİR ?
Kısaca php,1996 yılında Rasmus Lerdorf'un daha dinamik web sayfaları yapmak amacıyla geliştirdiği sunucu taraflı bir web programlama dildir.Bir çok bakımdan C diliyle benzerlik gösterir.Açık kaynak kodlu ve ücretsiz php; günümüzde PHP GRUBU tarafından geliştirilmektedir.Günümüzde yaklaşık 10.000.000 web sunucusu tarafından kullanılmaktadır. (Kaynak : Kasım 2003 Netcraft)
Php nin ilk açılımı : PERSONEL HOME PAGES yeni açılımı ise HYPERTEXT PREPROCESSOR'dur.


2-PHP KURULUMU ?
Php'ye giriş yapmadan önce php dosyalarını bilgisayarımızda çalıştırabileceğimiz bazı ekipmanlara ihtiyacımız olduğunu belirtmeliyim.Php dosyaları,html dökümanları gibi çift tıklayışta çalıştırılamazlar.
Şimdi biz gerekli tüm herşeyi beraber kuracağız.

Öncelikle php dosyalarını çalıştırabilmek için bir web sunucusuna (apache ya da iis) ve veritabanı işlemlerini yapabilmek için de doğal olarak bir veritabanına ihtiyacımız vardır.Biz web sunucusu (web server) olarak apache,veritabanı (database) olarak ta mysql kullanacağız.Şimdi önümüzde iki seçenek var.Ya apache'yi,mysql'i,php'yi ayrı ayrı indirip kuracağız.Ya da hiç uğraşmadan wampserver,phptriad,zendstudio,easyphp,appserver gibi bir paketle otomatikman kuracağız.Bu paketlerden birini kurduğunuzda sisteminize otomatikman apache+mysql+php yüklenecektir.Ben burada kendi kullandığım wampserverın kurulmasını anlatacağım,siz istediğiniz başka bir paketi de kurabilirsiniz.

wampserver : http://www.wampserver.com/en/download.php

Öncelikle programı indirip virüs taramasından geçirelim.
Önümüze çıkan pencelere "next" deyip sözleşmeyi kabul edip devam ediyoruz.Bir müddet sonra önümüze şu alan çıkacaktır :



Bu yol bizim php doslarını yerleştireceğimiz olan wamp klasörünün kurulacağı yer olacaktır.Eğer ellemezsek direkt C içine kurulacaktır.(Siz isterseniz değiştirebilirsiniz.)
Ardından bize masaüstü ikonu vs ikonu oluştursun mu diye soracaktır.Burayı keyfinize göre ayarladıktan sonra "next" diyip "install" diyoruz.Kurulum bitince next diyip finish diyoruz.
Kurulum bittikten sonra C içine gidip bakarsanız bir wamp dizini oluştuğunu göreceksiniz.(eğer kurulumda yerini değiştirmediyseniz) ve görev çubuğunun sağında,yani ekranın sağ alt köşesinde yeni,beyaz bir logo belirdiğini de göreceksiniz.İşte o logo bizim wampserverımızın çalıştığı anlamına gelmektedir.Php dosyalarımıza erişmek istediğimiz de wampserverı çalıştırıp o logonun yanmasını beklememiz gerekmektedir.



Ardından tarayıcı açıp,adres çubuğuna "http://localhost/" yazıp enter dersek aşağıdaki gibi aşağıdaki gibi gri bir ekranla karşılaşmamız gerekmektedir.Bu ekranı görüdüğümüzde wampserverın başarıyla kurulduğunu anlarız.



Tüm php dosyalarımıza C nin içindeki wamp dizinin altında bulunan www klasöründen erişiriz.Biz tüm php dökümanlarımızı buraya atacağız ve yine tarayıcıdan localhost yazarak onlara ulaşacağız.

Toparlamak gerekirse :
->wampserverı indirip kurun
->wampserverı çalıştırın,sağ alt köşede beyaz wamplogosunun yanmasını bekleyin
->tüm gerekli php dökümanlarınızı wamp/www dizinine atın
->adres çubuğuna localhost yazarak onlara ulaşın

İsterseniz şimdi bizde bir deneme yapabiliriz.Hemen not defterinizi açın ve
<?php

echo "Merhaba Dünya";

?>


yazın.Bu kodları wamp/www içine dh.php olarak kaydedin.Ve adres çubuğuna http://localhost/dh.php yazarak ulaşın.Eğer başarılı bir şekilde ekrana Merhaba Dünya yazılıyorsa sorun yok demektir.

Şunu da unutmamak gerekirki tüm php kodları <?php ?> ya da <? ?> arasına yazılır.Ancak <? ?> arasına yazdıklarımız wampserverca kabul görmezler.Bu durumun nasıl düzeltileceğini de anlatacağım.

Uyarı : Çok iyi bir dille yazamadım özür dilerim,sabahın 5 inde,bir de bitirmem gereken bir kitap varken ancak bu kadar oluyor.
Neyse devamı gelecek.


< Bu mesaj bu kişi tarafından değiştirildi amone -- 12 Kasım 2008; 23:01:59 >


_____________________________

IMZANIZ KURAL DIŞIDIR | | Uymanız gereken imza kurallarını okumak icin tıklayınız.
amone

Mesaj: 251


 23 Temmuz 2008; 14:00:04 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

3-DEĞİŞKENLER,VERİ TÜRLERİ,SABİTLER,OPERATÖRLER
Değişkenler
Değişkenler,bir çok programlama dilinin olduğu gibi şüphesiz php'nin de vazgeçilmez bir parçasıdır.Kısaca tanımlamak gerekirse değişkenler,programcı tarafından tanımlanan,içine geçici bir değer yüklenen ve yeri geldiğinde bu değerin kullanılmasını sağlayan nesnelerdir.Tüm değişkenler php de $ ile tanımlanırlar.$ den sonra değişkenin ismi gelir.

<?php

$sagopa = 2008;

?>


işte yukarıda en basitinden bir değişken tanımladık ve ona 2008 değerini atadık.Dediğimiz gibi değişkenler $ ile tanımlanırlar.$ den sonra değişkenin ismi gelir.Değişkenlere bir değer atamak için = operatörünü kullanırız.= operatörünün sağındaki değerler soldaki değişkene atanır.Yukaridaki 2008 değerini de = operatörü ile $sagopa değişkenine atadık.";" ile de php ye değişkene değer atama işlemimizin bittiği haberini verdik.Noktalı virgül (;) php de bir işlemin bittiği anlamına gelir.
Değişkenlere tam sayı değeri atadığımız gibi onlara karakter dizisi de atayabiliriz.

<?php

$sagopa = "melankolya";

?>


İşte yukarıda $sagopa değişkenine melankolya değerini atadık.Aşağıda da değişkenlerimizi amacına ulaştırmış oluyoruz.$sagopa değişkenin içindeki değeri ekrana yazdırıyoruz.

<?php

$sagopa = "melankolya";

echo $sagopa;

?>


echo komutu php de ekrana yazı yazmak için kullanılır.Aynı şekilde bir değişkene veri atamadan da ekrana yazabilirdik.

<?php

echo "melankolya";

?>


Veri Türleri
Elbetteki php de de belli başlı veri türleri vardır.Biz en çok kullanacağız string,boolean,integer,float/double değerlerini göreceğiz.




Aşağıda türleri test etmeyi gördüğümüzde daha iyi anlayacaksınız.

Türleri php de gettype() fonksiyonu ile test ederiz.Aşağıda en basitinden değişkenlere belli verileri atıyoruz,ardındanda bu değişkenlerin içerisindeki verilerin türlerini öğreniyoruz.

<?php

$sagopa = "melankolya";
echo gettype($sagopa);  //string yazdırır

$kolera = 2008;
echo gettype($kolera);  //integer yazdırır

$medusa = 2.545; 
echo gettype($medusa); //dobule yazdırır

$ceycey = false;  
echo gettype($ceycey); //boolean yazdırır

$kuheylan;
echo gettype($kuheylan); //NULL yazdırır,çünkü burada değişkene hiç bir değer tanımlamadık ancak bu hareket bazen sistemimizde güvenlik açıklarının oluşmasına sebep olabilir

//diğer türleri de zamanla öğreneceksiniz  (object,array,resource)

?>


Gördüğümüz gibi değişkenlerin içindeki verinin türü ne ise o tür yazdırılıyor.Boolean türünü anlamamış olabilirsiniz.Bu tür ya true ya da false ifadelerinden oluşur.True'nun karşılığı doğru,false'un karşılığı yanlıştır.Bu tür genellikle iki ifadenin karşılaştırılması durumunda ortaya çıkar.Mesela 2 5 ten büyükse true,değilse false döner.Bu türü operatörler bölümünde daha iyi anlayacaksınız.

Bir de verilerin türlerini değiştirme işlemleri vardır.Onu da aşağıdaki örnekte görebilirsiniz

<?php

$kolera = "taş dibe düşmez";
echo gettype($kolera); //doğal olarak string yazdırılacaktır
settype($kolera, 'integer');
echo gettype($kolera) //integer yazar

?>


settype() fonksiyonu ile php de verilerin türlerini değiştirebiliriz.Bu fonksiyon iki parametre alır.Birincisi türü değiştirilecek değişkenin ismi,ikincisi değişkenin yeni türü.

settype($turu_degisecek_degisken,'yeni tür');

Değişkenlerin türlerini settype() fonksiyonu kullanmadan da değiştirebiliriz.

<?php

$kolera = "taş dibe düşmez";
$kolera = (integer) $kolera;
echo gettype($kolera);

?>


Yukarı önce $kolera isimli bir değişken oluşturup içine bir karakter dizisi atadık.Ardından da $kolera değişkenini yeniden tanımladık.Tanımlarken yeni türü parantez içinde yazıp ardından üstteki değişkeni yazdık.İkisi de aynı değişken.Yeniden tanımlarken yukarıdaki değeri aşağıya kopyaladık ve türü değiştirdik hepsi bu.Bu şekilde de yapabilirdik :

<?php

$heidi = "dağlar kızı heidi";
$keloglan = (integer) $heidi;
echo gettype($keloglan);
echo "<br>".gettype(heidi);

?>


Gördüğünüz gibi heidi değişkenin türünü ellemedik, sadece keloglan değişkenini atarken türü integer yapıp heidi içindeki tüm değerleri keloglana geçirdik.Şimdi sabitlere oradan da php nin vazgeçilmez bir parçası olan operatörlere geçeceğiz.Aklınızda soru işaretleri kalmış olabilir,yine bunları foruma sorarak giderebilirsiniz. Merak etmeyin bir müddet sonra soru işaretleri yerlerini programlama dünyasının verdiği vazgeçilmez hazza bırakacaklar. (ne cümle kurdum )

Sabitler
Sabitler değişkenlere benzerler.Yaptıkları iş hemen hemen aynıdır.Tek farkları değişkenler kodların icrası sırasında değişebilirler.Eğer değişmeyecek bir değişken tanımlamak istiyorsak bu işi sabitlere bırakmalıyız.Bazı sebeplerden ötürü bazı değişkenlerimizin değerlerinin hiç bir zaman değişmemesini isteyebiliriz.İşte bu yüzden sabitleri kullanırız.
Sabitler define() fonksiyonu ile tanımlanırlar.Aşağıda bir sabit örneği görmekteyiz :

<?php

define("Misti","hoşaf");
echo Misti;
define("Misti","mesir macunu");
echo "<br>".Misti      

?>


Gördüğünüz gibi tepede önce Misti adında bir sabit(constant) tanımladık ardındanda onu ekrana yazdırdık.Altta Misti sabitini tekrar tanımlak istedik ancak başarılı olamadık.Çünkü adı üstünde sabit.
Karakter dizisi olduğu gibi sabitlere rakam değerleri de verebiliriz.

<?php

define("Cedric",31);
echo Cedric;

?>


Yukarıda gördüğünüz gibi Cedric ismindeki sabite bir tamsayı değerini atadık.

Sabit tanımlarken önce isim sonra da sabite atanacak değer gelir.

Toparlamak gerekirse
--- Değişkenler :
-> $ işareti ile tanımlanırlar
-> = operatörü ile değişkenlere veri atanır
-> ";" işareti php de herhangi bir işlemin bittiği anlamına gelir
-> echo komutu php de yazı yazdırma komutudur
-> gettype() fonksiyonu ile değişkenlerin tipleri test edilir ÖRNEK : gettype($değişken);
-> settype() fonksiyonu ile değişkenlere yeni türler verilir ÖRNEK : settype($değişken , 'double');
-> değişkenlere settype() kullanmadan da yeni türler verilebilir ÖRNEK : $değişken = (boolean) $değişken;

---Sabitler
-> define() fonksiyonu ile tanımlanırlar ÖRNEK : define("Sabit","değer");
-> değerleri hiç değişmez
-> sayısal ve ya karakter dizisi değeri verilebilir


Yorum Satırları
Ben biraz php de ki yorum satırlarına değinmek istiyorum.Hemen her programlama dilinde olduğu gibi php de de ekrana yazdırılmayan ve sadece arkaplanda bulunan yorum satırları tanımlanabilir.
Php de yorum satırı tanımlamanın üç metodu vardır.


# : bu karakterden sonra bir satır boyunca yorum yazabilir
// : yine bu kısımdan sonrasına da yorum yazabiliriz
/* */ : burada ise /* işaretinden */ işaretine kadar olan kısım komple yorum bölümüdür

<?php

echo "Yorum Satırları"; //BURASI GÖRÜNMEZ

#BURASI DA GÖRÜNMEZ

/* E HİÇ BURASI GÖZÜKÜR MÜ ?
HAYIR GÖZÜKMEZ
İYİ O ZAMAN*/

?>



Operatörler
Operatörler hemen her programlama dilinde kullanılan,tabii ki php de de bulunan,diğer öğrendiklerimiz gibi php nin temelini oluşturan kavramlardandır.Kısaca operatörler belli bir işi yapmak üzere hazırlanmış özel karakterler ya da karakterler dizisidir.Operandlar ise operatöre işlemesi için verilen değerlere denir.Mesela biz şuana kadar en çok = operatörünü gördük.= operatörü soldaki operandı sağdakine eşitliyordu.Mesela aşağıdaki kod bloğunu inceleyelim :

<?php

$redkit = "tintin";

?>


yukarıda $redkit değişkenine tintin değerini verdik.Burada $redkit ve tintin = operatörünün operandı oluyorlar.

Operatörler aritmetik,mantıksal,karşılaştırma gibi ya da tek operandlı,çift operandlı,daha fazla operandlı olarak sıralanabilirler.Biz matematiksel operatörlerden başlayacağız.


aritmetik operatörler : +-/*% operatörleridir.

+ : Toplama işlemi yapan operatördür.Sağdaki operand ile soldaki operandı toplar. ÖRN : 5+10 ve ya $aa + $bb ve ya $ds + 8
- : Çıkarma işlemi yapan operatördür.Soldaki operanddan sağdakini çıkarır. ÖRN : 10-8 ve ya $aa - $bb ve ya $ds - 4
/ : Bölme işlemi yapan operatördür. ÖRN : 10/2
* : Çarpma işlemi yapan operatördür. ÖRN : 4*2
% : Bu operatör ise bir sağdaki operandın soldakine bölümünden kalanı verir.Mesela yandaki öğrenkte 10 un 3 e bölümünden kalanı verir ÖRN : 10%3

bitiştirme operatörü : .
. : Bitiştirme operatörüdür.İki operandı birleştirir. ÖRN : echo "gece"."kondu";

Birleşik Atama Operatörleri :

Bu operatörler sağdaki operandı soldakine eklerler.

Örneğin elimiz de içinde 4 değeri bulunan bir değişken var.Biz buna 10 daha eklemek ve toplamda 14 yapmak istiyoruz.Ner yaparız ? Şuana kadar öğrendiklerimiz ile şunu :

<?php

$degisken = 4;                            
$degisken = $degisken + 10;       

?>


Gördüğünüz gibi $degiskeni yeniden tanımladık,tanımlarken de $degisken deki değeri 10 ile topladık.Aynı şeyi birleşik atama operatörleri ile aşağıdaki gibi yapabiliriz :

<?php

$degisken = 4;
$degisken += 10;

?>


Yani $degiskenin üzerine 10 ekledik.

Aşağıda diğer birleşik atama operatörleri ve eşdeğer kullanımlarını görüyorsunuz.



.= ile birleştirme operatörünün (.) birleşik atama halidir.


Son Artırma ve Son azaltma Operatörleri : ++ ve --

Bu operatörler değişkenlerin değerini bir artırmak ve ya bir azaltmak için kullanılırlar.

<?php

$php=5;
$php++;
echo $php; //6 yazar

?>


Gördüğümüz gibi arkadaşlar $php ye 5 değerini verip,değerini bir artırıyoruz.Ardıdan ekrana yazdırıp sonucu görüyoruz.Aynı şekilde değeri azaltabilirdik de.

<?php

$php = 5;
$php--;
echo $php; //4 yazar

?>


Bir de bu operatörleri operandlarının önüne getirerek ön artırma ve ön azaltma yapabiliriz.

<?php

$php = 5;
++$php; 
echo $php; //6 yazar

--$php;
echo $php;  //5 yazar (Yukarıda 6 ya çıkarttığımız için bir azalttığımızda 5 yazar
?>


Peki soracaksınız ne fark etti diye.İkisinde de değeri bir artırıp azalttık.Ancak ekler sona geldiğinde önce işlem yapılır,sonra değer artırılır ya da düşürülür.Oysa ekler değişkenin önüne geldiğinde yapılan işlemden önce düşürülür ya da artırılır.Bunu yukarıda anlayamayız.Aşağıya bakalım :

<?php

$php = 5;
echo $php++;

?>


gördüğümüz gibi hiç bir şey olmadı.Neden ? : Çünkü önce echo komutu çalıştı ve değer çalıştıktan sonra artırıldı.

<?php

$php = 5;
echo ++$php;

?>


Oysa şimdi echo çalıştırılmadan artırıldı,ardından echo çalıştı.İşte bu eklerin sona gelmesiyle,öne gelmesinin arasındaki fark budur.

-> Son eklerde önce,örneğin echo ile kullanıyorsak önce echo çalışır ardından değerde işlem yapılır.
-> Ön eklerde ise önce işlem yapılır sonra yazılır.

Karşılaştırma Operatörleri

İki operandı karşılaştırırlar.Mesela $a ile $b eşitse sonuç true,değilse false döner.Hatırlarsanız false yanlışı,true ise doğruyu ifade ediyordu.




Yukarıda gördüklerimizi bir örnekle pekiştirelim.

<?php

$keloglan = 15;
echo $keloglan == 15;   //ekrana 1 yazacaktır    İKİSİ EŞİTSE
echo $keloglan != 10;     //ekrana 1 yazacaktır    DEĞİŞKEN 10 A EŞİT DEĞİLSE
echo $keloglan > 5;       //ekrana 1 yazacaktır     DEĞİŞKEN 5 TEN BÜYÜKSE
echo $keloglan <2;        //ekrana hiç bir şey yazmayacaktır      DEĞİŞKEN 2 DEN KÜÇÜKSE
echo $keloglan >= 31;   //ekrana hiç bir şey yazmayacaktır      DEĞİŞKEN 31 DEN BÜYÜKSE YA DA 31 e EŞİTSE
echo $keloglan <= 44;   //ekrana 1 yazar     DEĞİŞKEN 44 TEN KÜÇÜKSE YA DA 44 e EŞİTSE
echo $keloglan === "15";  //ekrana bir şey yazmaz    DEĞİŞKEN  15 e EŞİTSE VE TİPLER AYNIYSA

?>




Benim burada değinmek istediğim iki nokta var.Birincisi neden true ya da false değilde karşılaştırmaların sonucu olarak 1 yazdırdı ve ya hiç bir şey yazdırmadı.İşte php de karşılaştırmaların sonucu olarak 1 ve ya 0 rakamları ortaya çıkar.Doğruysa 1,değilse 0 çıkar.Bu yüzdendir ki bazı uzmanlar php de true ya da false değerlerinin olmadığı söylerler.Sonuç olarak 1 true,0 false ifade ediyor burada.Yani yukarıdaki karşılaştırmalarda doğruysa 1 yazdırılıyor.Yanlışsa hiç bir şey yazdırılmıyor.
İkincisi === operatörü.Gördüğünüz gibi bu operatörün doğru döndürmesi için yalnızca operandların eşit olması değil aynı zamanda tiplerininde eşit olması gerekiyor.Biz en son örnekte sağdaki operand olan 15'i tırnak içine aldığımızdan dolayı onun türü de otomatik olarak stringe dönüştü.$keloglan da ise bir tamsayı (integer) değeri bulunduğundan ekrana bir şey yazılmadı.Eğer en alttaki === operatörünü == olarak değiştirirseniz ekrana 1 yazıldığını yani true döndüğünü göreceksiniz.


Mantıksal Operatörler

Operatörler bölümünde göreceğimiz son operatör türü mantıksal operatörler olacak.



Şimdi bu operatörleri bir açıklayayım.

|| ve ya OR : || ve ya OR ikisi de geçerlidir.Bu operatör;soldaki ve sağdaki karşılaştırmalardan en az birisi true ise true döndürür.Elbette ikisi de true ise true döndürür.

&& ve ya AND : && ve ya AND ikisi de geçerlidir.Bu operatör;soldaki ve sağdaki karşılaştırmaların ikisi de true ise true döndürür.

Xor : Bu operatör;soldaki ya da sağdaki karşılaştırmalardan en az bir tanesi true ise true döndürür.Ancak && aksine ikisi de true ise false döndürür.

! : Tek operand alır.Örneğin ----------> !($ss = 21) $ss değişkeni true değilse true döndürür.Yani $ss değişkeni 21 e eşit değilse true döner.




< Bu mesaj bu kişi tarafından değiştirildi amone -- 4 Ekim 2008; 20:36:38 >


_____________________________

IMZANIZ KURAL DIŞIDIR | | Uymanız gereken imza kurallarını okumak icin tıklayınız.
amone

Mesaj: 251


 23 Temmuz 2008; 14:19:20 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

4-AKIŞ KONTROLÜ VE DÖNGÜLER
if deyimi
If kelimesinin İngilizce anlamı "eğer" dir.Biz de php de eğer li,yani şarta bağlı direktifler vermek için if deyimini kullanacağız.

<?php

$php = 5;

if($php < 10) {

echo "10 dan büyüktür";

}
?>


Yukarıda if deyimini en basit haliyle görüyorsunuz.Bu kod bloğunun tam olarak yaptığı şudur : eğer $php değişkeni 10 dan küçükse (yani $php < 10 ifadesinden 1 dönerse (true)) 10 dan büyüktür yazdır.
if deyiminin ardından parantez içinde işlemin hangi şarta bağlı olduğu gelir.Yukarıda $php 10 dan büyükse dedik.Ardından koşulun doğrulanması halinde yapılacak işlemler { } nin arasına yazılır.Aşağıda da benzer bir örnek görüyoruz :

<?php

$php = 255;
$asp = 123;

if($php != $asp)
{
echo "ikisi de birbirlerine eşittir";
}

?>


Gördüğümüz gibi eğer koşul doğrulanırsa istediğimiz direktif yerine getirilir.

<?php

$php = 255;
$asp = 123;
$perl = 44;

if($php != $asp && $perl == 44) {
echo "doğrulandı";
}

?>


Yukarıdaki if deyiminde ise ilk ifade de $php $asp ye eşit değilse 1 döndürülüyor,ikincisinde ise $perl 44 e eşitse 1 döndürülüyor.Ve iki koşuldan da 1 dönmüşse doğal olarak doğrulandı yazıyor.(&& operatörünü hatırlayalım.İki tarafın da true döndürmesi gerekiyordu)
Siz diğer operatörleri de kullanabilirsiniz elbette.Unutmamaz gereken nokta ise,if deyimi içindeki koşulları istediğimiz kadar artırabiliriz.Örneğin :

<?php

$php = 255;
$asp = 123;
$perl = 44;
$cgi = 72;
$jsp = 89;

if($php != $asp || $perl == 44 || $cgi == 72 || $jsp > 14) {
echo "personel home pages";
}

?>


|| operatörünü hatırlayın iki taraftan birinin 1 döndürmesi yetiyordu.

Else
Else if ile beraber kullanılır.Amacı if in aksi bir sonuç döndürmesi durumunda direktif vermektir.Aşağıdaki örneği inceleyelim.

<?php

$php = 255;
$asp = 123;

if($php == $asp) {
echo "eşitler";
} else {
echo "değiller";
}

?>


Yani yukarıda $php $asp ye eşitse "eşitler" yazdır aksi bir durum geçerliyse (eşit değillerse) "değiller" yazdır.Eşitlerse ilk komutu uyula,yok değillerse ikinci.

else if
Else if ise if ten sonra farklı bir koşulu denetlemek için kullanılır.

<?php

$php=255;
$asp = 123;

if($php < 10) {
echo "1.koşul";

} else if($php > 10) {
echo "2.koşul";

} else {
echo "hiçbiri";
}

?>


Yukarıda önce eğer $php 10 dan küçükse ilk komut uygulanıyor,eğer 10 dan büyükse ikinci komut uygulanıyor.Eğer hiçbiri değilse (yani eşitlerse) 3.komut uygulanıyor.

İf yapısında bilmemiz gereken bir noktada { lerle ilgilidir.Aşağıdaki örneği inceleyelim :

<?php

$dh = 12;

if($dh == 12)
             echo "donanımhaber";


?>


Gördüğümüz gibi "{" kullanmadan koşulumuz doğrulandığı için istediğimiz yazdırıldı.Eğer yapacağımız kısa bir iş ise yukarıda ki gibi if deyiminin hemen altına ya da yanına yazarak parantez kullanmadan da komutumuzu yazabiliriz.Aşağıdaki de doğrudur :

<?php

$dh = 12;

if($dh == 12) echo "dh";

?>


SWITCH
Switch te if deyimine benzer.Amaç yine bir değişkeni test etmektir.Ancak bu switch te biraz farklıdır.

<?php

$i=10;

switch($i) {
case 10:
          echo "değer 10";
          break;
case 9:
         echo "değer 9";
         break;
default:
        echo "ne bileyim ben";
        break;

}

?>


Yukarıda switche güzel bir örnek görüyoruz.Hadi açıklayalım.
Öncelikle switche hangi değişkeni test edeceğimizi söylüyoruz.Ardından süslü parantezlerin içine koşulları yazıyoruz.
case 10 yani $i 10 ise diyor ve bu koşulun doğrulanması halinde ne yapılacağını yazıyoruz.(echo "değer 10";) arıdanda break deyimi ile çıkış yapıyoruz.Burada break deyimi çıkış yapmak için kullanıyoruz.Yani case doğrulanırsa,$i 10 ise yazdır ve çık.Peki eğer break koymazsak ne olur.Hemen alttaki koşul doğrulanmadığı halde yazdırılır.Yukarıda ki örneği çalıştırdığınızda değer 10 yazısıyla karşılaşırsınız.

<?php

$i=10;

switch($i) {
case 10:
      echo "değer 10";
case 9:
      echo "değer 9";
      break;
default:
      echo "ne bilem";
      break;

}

?>



Yukarıdaki örneği çalıştırdığımızda ise değer10değer9 yazısı ile karşılaşırız.Yani case 9 doğrulanmamış olmasına rağmen yazdırılmıştır.Onun için case ler den sonra break koymamız case in doğrulanması halinde bir alttakine geçişi engelleyecektir.
Peki default ne oluyor.Default ise bizim switche verdiğimiz koşullarun hiç birisinin doğrulanmaması halinde yazdırılır.Mesela :

<?php

$i=202;

switch($i) {
case 1:
      echo "değer 1";
      break;
case 2:
      echo "değer 2";
      break;
default:
     echo "bilemem";
     break;
}

?>


Burada ise ekrana bilemem yazılacaktır.
Peki sadece sayısal değerler mi test edilir,hayır.

<?php

$i = "sagopa";

switch($i)
{
case "kolera":
       echo "rapper kolera";
       break;
case "abluka alarm":
       echo "rapper abluka alarm";
       break;
case "sagopa":
      echo "rapper sagopa";
      break;
default:
      echo "bu adam melankolia dan değil";
      break;
}

?>


Gördüğümüz gibi string değerler de switchler de test edilebilir.


? :
Çok tatlı bir operatördür. Yaptığı iş yine koşul test etmektir.

<?php

$i = "anektod";
$t = ($i == "anektod") ? "koşul doğru" : "koşul yanlış";
echo $t;

?>


Gördüğümüz gibi sadece tek bir koşul alır.Eğer $i anketoda eşitse koşul doğru aksi halde koşul yanlışı $t değişkenine ata.Yukarıda dediğimiz bundan ibaret.

For Döngüsü
Döngüler de akış kontrolleri gibi bir programlama dili için önemli konulardandır.İsterseniz hemen başlayalım.
Kısaca döngünün yaptığı iş şudur; siz döngüye bir koşul verirsiniz,o koşul doğrulandığı sürece döngü verdiğiniz işi yapmaya devam eder.Yani adından da anlaşılacağı gibi tekrar eder durur.Buna iterasyon da denir.

<?php


for($i=0;$i<10;$i++)
{
echo "selam<br>";
}

?>


Yukarıda yaptığımız iş şudur: önce for döngüsünde bir $i değişkeni tanımlıyoruz ve buna 0 değerini atıyoruz.Ardından ikinci ifadeye geçiyoruz.İfadelerin arasına ; koyduğumuza dikkat edin.Ardından $i<10 kombinasyonunu for döngüsüne veriyoruz.Yani $i 10 dan küçükse.Ve devamında $i++ ifadesi for döngüsü her çalıştırıldığında $i nin değerinin bir artmasına sebep olacaktır.Şimdi yukarıdaki örneği çalıştırın.
Sonucun aşağıdaki gibi olması lazım :

selam
selam
selam
selam
selam
selam
selam
selam
selam
selam


Şimdi burada gerçekleşen olaylara şöyle tekrardan bir bakalım.$i değişkenine 0 değeri atadık.Ardından for döngüsüne $i 10 dan küçükse çalış dedik.Ve $i++ ile de her çalıştığında $i nin değişkenin değerini 1 artır dedik.
Kodların akışı for döngüsüne geldiğinde önce $i'ye 0 değeri atanacaktır.Ardından for döngüsü $i<10 ifadesine bakacaktır.Eğer bu ifade doğruysa for döngüsü çalışacak yani bir kere selam yazacak ve $i nin değerini bir artıracaktır.Ardından tekrar $i<10 ifadesine bakacaktır.Eğer bu doğruya tekrar bir kere çalışacaktır.Her çalışmada $i nin değeri bir artacaktır ve en nihayetinde $i nin değeri 10'a gelecek ve $i<10 değeri geçerliliğini yitirecektir.İşte mantık bu.
Yani ilk çalıştırılışta $i<10 deyiminin 0<10 dan farkı yoktur.İkincisinde 1<10,üçüncüsünde 2<10 gibi devam edecek ve 10.çalıştırılıştı 10<10 haline gelecektir.Ve dolayısıyla döngü tekrarlanmayacaktır.

Şimdi bir örnekle de $i değişkenin değerinin nasıl her defasında artırıldığına tanık olalım.

<?php

for($i=0;$i<10;$i++)
{
echo "$i<br>";
}

?>


Yukarıdaki kod bloğunun sonucu aşağıdaki gibi olmalıdır.

0
1
2
3
4
5
6
7
8
9

Gördüğümüz gibi for döngüsü her çalıştırıldığında $i nin değeri bir artırılıyor.

Tüm değişkenleri for döngüsü içerisinde tanımlamak zorunda değiliz,şöyleki:

<?php

$i=0;

for(;$i<10;$i++)
{
echo "selam";
}

?>


Gördüğümüz gibi $i değişkenini for dışında tanımladık.For döngüsünde değişkeni tanımladığımız yeri boş bırakıp yine ; koyup devam ettik.Aşağıda da buna benzer bir şey yaptık.

<?php

$i=0;

for(;$i<10;)
{
echo "selam<br>";
$i++;
}

?>


Yukarıda da $i değişkeni for dışında tanımladık,ve değeri { } içerisinde artırdık.Değişen bir şey olmayacaktır.

WHILE
While döngüsünün de yaptığı iş for dan çok da farklı değildir,ancak kullanıldığı yerler bazen farklılaşabilir.Şimdi while döngüsün yapısını inceleyelim.

<?php

$i=0;

while($i<10)
{
echo "selam<br>";
$i++;
}

?>


Gördüğünüz gibi değişkeni dışarıda tanımladık ve her çalıştırılışta değer artırılması işlemini döngü blokları içerisinde yaptık.

<?php

$i=0;

while($i != 10)
{
echo "selam<br>";
$i++;
}

?>


Yukarıda ise $i 10 olmadığı sürece while'ın çalışmasını sağladık.Değişen bir şey yok aslında.



do....while
do....while döngüsü ise bir kez çalıştıktan sonra koşulu kontrol eder.Eğer koşul doğrulanırsa çalışmaya devam eder.

<?php

$i=0;

do{
echo "selam<br>";
}while($i>10);

?>


Yukarıda while'a verilen koşulun doğrulanamayacağını biliyoruz.$i değişkeni ondan büyük değil.Bu yüzden döngü önce bir kez çalıştırılıp while bölümüne gelecek,koşulum doğrulanmadığı görülüp döngüden çıkılacaktır.

FOREACH
Foreach'ı dizileri okumak için kullanırız,bu yüzden bu döngüyü de diziler bölümünde göreceğiz.

BREAK
Break ifadesi döngülerden vs. çıkmaya yarar.Bunun en iyi örneğini sanırım switch deyiminde görmüştük,şimdi switchte break ifadesini nasıl kullandığımıza bakalım.

<?php

$i=2;

switch($i)
{
case 2:
        echo "değer 2";
        break;
case 1: 
        echo "değer 1";
        break;
default:
       echo "değeri bulamadım";
       break;
}

?>


Yukarıdaki kodları çalıştırdığımızda ekrana değer 2 yazılacaktır.Burada nelerin gerçekleştiğini bir daha gözlemlersek php önce case 2 ye bakacaktır,eğer $i nin değeri 2 ise koşul gerçekleşecek ve ekrana değer 2 yazılacaktır.Eğer değil ise alttaki caseyi kontrol edecektir.Eğer biz case 2 nin sonuna break deyimini yerleştirmiş olmasaydık,yani aşağıdaki gibi :

<?php

$i=2;

switch($i)
{
case 2:
        echo "değer 2";
       
case 1: 
        echo "değer 1";
        break;
default:
       echo "değeri bulamadım";
       break;
}

?>


Koşul doğrulandığı zaman değer 2 yazılacaktı ancak döngüden çıkılmayacak ve $i'nin değeri 1 olmamasına rağmen alttaki satırda yazılacaktı.Yani switch'ten çıkılmayacaktı.Eğer yukarıdaki örnek aşağıdaki gibi olsaydı :

<?php

$i=1;

switch($i)
{
case 2:
        echo "değer 2";
       
case 1: 
        echo "değer 1";
        
default:
       echo "değeri bulamadım";
       
}

?>


php önce koşulu yazacaktı,break olmadığı için alttakiler de yazılacaktı.($i nin değerini son örnekte 1 yaptık yani php koşulu yakaladığı yeri break yoksa koşulun altındaki caseleri yazdırır)

Gördüğümüz gibi break oldukça önemli bir deyimdir.

<?php

for($i=0;$i<10;$i++)
{
if($i == 5) break;
echo "$i.selam<br>";
}

?>


Yukarıdaki örnekte ise $i nin değeri 5'e geldiğinde döngüden çıkılmasını istiyoruz.Burada if deyimine dikkat çekmek istiyorum.If deyimine vereceğimiz tek satırlık bir direktif olduğu için { } kullanmadık.Aşağıdaki örnekleri inceleyelim :

<?php
$i=10;

if($i==10)   echo "selam<br>";       #GEÇERLİDİR

if($i==10)                                     #GEÇERLİDİR
echo "selam<br>";            

if($i==10)                                     #GEÇERLİDİR,"merhaba"'yı IF DOĞRULANMASA DA YAZACAKTIR

echo "selam<br>";
echo "merhaba";
?>


Gördüğümüz gibi tek satırlık ifadelerde { } kullanmasakta olur.

CONTINUE
Akış kontrolleri ve döngüler bölümünde göreceğimiz son konu continue deyimidir.Continue deyimi break'a benzer,bakalım hemen.

<?php

$i=0;

for(;$i<10;$i++)
{
if($i==5) continue;
echo "$i";
}

?>


Gördüğümüz gibi $i'nin değeri 5 olunca atlanıyor,ancak döngüden çıkılmıyor.


< Bu mesaj bu kişi tarafından değiştirildi amone -- 4 Ağustos 2008; 12:58:36 >


_____________________________

IMZANIZ KURAL DIŞIDIR | | Uymanız gereken imza kurallarını okumak icin tıklayınız.
C# C++ JAVA SQL

Mesaj: 396


 23 Temmuz 2008; 15:23:04 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

süper olmuş webe ilgim olsayfı keşke :D

_____________________________

DiabloIII(3)

amone

Mesaj: 251


 23 Temmuz 2008; 17:44:00 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

5-DİZİLER VE FOREACH
DİZİLER
Dizilerin de görevleri değişkenlerden farklı değildir.Amaç yine belli türde veri depolamaktır.Ancak dizilerde bir değil birden fazla değişken fazladır.Örneklerle daha iyi anlayacaksınız.
Php de dizileri array() fonksiyonu ile tanımlarız.Örneği inceleyelim.

<?php

$pd = array("php","asp","jsp");

?>


Az önce ilk dizimizi tanımladık.Ancak bu kodları yazıp,çalıştırdığınızda ekrana hiçbir şey yazılmayacaktır.Sebebi ise zaten birşey yazdırmamamızdır :).Peki o halde bu tanımladığımız dizi yazdıralım.Dizileri yazıdırırken dizi operatörünü ([]) kullanırız.

<?php

$pd  = array("php","asp","jsp");
echo "$pd[0]<br>";
echo "$pd[1]<br>";
echo "$pd[2]<br>";

?>


Gördüğümüz gibi 3 elemanlı dizimizi madde madde ekrana yazdırıyoruz.Örnekteki gibi dizi operatörünü kullanarak ([]) dizi elemanlarını ekrana yazdırabiliriz.Dizi operatörünün içine dizi indeksi adını verdiğimiz değer gelir.Dizi indeksi o maddenin dizideki yeridir.Yani jsp'nin dizideki yeri 2 dir.
Peki neden jsp nin dizi indeksi 2 dir,3 olması gerekmez mi ? Burada dikkat etmemiz gereken nokta şudur.Php deki dizi indeksleri 0 dan başlar.Yani yukarıdaki dizide "php" değerinin indeksi 0 dır.Bu yüzden de jsp nin indeks numarası 2 dir.
Biz de bu yüzden yazdırmaya 0 dan başladık.

Dizileri farklı şekillerde de tanımlayabiliriz.Örneğin :

<?php

$pd[0] = "php";
$pd[1] = "asp";
$pd[2] = "jsp";

echo "$pd[0]<br>";
echo "$pd[1]<br>";
echo "$pd[2]<br>";

?>


Yine bu şekilde de tanımlayabilirdik :

<?php

$pd[] = "php";
$pd[] = "asp";
$pd[] = "jsp";

echo "$pd[0]<br>";
echo "$pd[1]<br>";
echo "$pd[2]<br>";

?>


Yukarıdaki durumda elemanlar tanımlanma sırasına göre indeksleneceklerdir.

Dizileri Seri Okumak (Döngülerle Diziler)
Dizilerin tüm elemanlarını bir döngü yardımıyla rahatça okuyabiliriz.

<?php

$dh = array("kopya kalpler","baytar","küheylan","vasiyet","terapi");

for($i=0;$i<count($dh);$i++)
{
echo "$dh[$i]<br>";
}

?>


Burada daha önce hiç karşılaşmadığımız bir fonksiyon gördük : count() fonksiyonu.Bu fonksiyonun işlemi kendisine parametre olarak verilen dizinin eleman sayını hesaplar.Fonksiyonlara işlemesi için verilen değerlere o fonksiyonun parametresi denir.Yukarıda $dh count() fonksiyonunun parametresidir.Yani yukarıdaki count() $dh içindeki dizinin eleman sayısını hesaplıyor böylelikle döngü sadece eleman sayısı kadar çalıştırılıyor.Döngü içerisinde ise dizi operatörleri içine $i değişkenini yerleştirdiğimize dikkat edin.$i değişkenin her çalıştırılışta değeri bir artıyor ve böylelikle döngü yazdırılıyor.


Foreach ile dizi okuma
Foreach genellikle dizi okumak için kullanırız.Hatta biz sırf dizi okumak için kullanacağız.Yukarıdaki dizi aşağıdaki şekilde de okuyabilirdik.

<?php

$dh = array("kopya kalpler","baytar","küheylan","vasiyet","terapi");

foreach($dh as $cc)
{
echo "$cc<br>";
}

?>


Yukarıdaki döngüde,döngü boyunda $dh içerisindeki değerler $cc ye yerleştirilecektir.Foreach'in asıl gücünü çok boyutlu dizilerde göreceğiz.

Çok Boyutlu Diziler
Şuana kadar tek boyutlu dizilerle çalıştık ancak php de çok boyutlu diziler tanımlamak ta mümkündür.Aşağıda çok boyutlu bir dizi örneği görüyoruz.

<?php

$dh= array(
       array("isim" => "echo",
              "işlevi" => "yazı yazdırır"),
      array("isim" => "count()",
            "işlevi" => "elemanları sayar"),
     array("isim" => "for",
            "işlevi" => "koşula göre iterasyon yaratır"));


?>


Çok boyutlu bir dizi tanımladık,ancak çok boyutlu dizileri tek boyutlular gibi "$dh[1]" şeklinde yazdıramayız."$dh[1]" şeklinde yazdırmayı denesek "Array" yazısıyla karşılaşırız.
Bunun sebebi birinci dizinin de kendi içinde diziler depolamasıdır.Yani farkettiyseniz birinci dizinin içinde de diziler tanımladık.Bu yüzden $dh[1] birinci dizinin elemanını yazdıracaktır.
Yani tekrar bir diziyi.Kısaca çok boyutlu dizileri aşağıdaki gibi yazıdırabiliriz.

<?php

$dh= array(
       array("isim" => "echo",
              "işlevi" => "yazı yazdırır"),
      array("isim" => "count()",
            "işlevi" => "elemanları sayar"),
     array("isim" => "for",
            "işlevi" => "koşula göre iterasyon yaratır"));

echo $dh[0]['isim'];


?>


Bu şekilde yazdırdığımızda echo yazısı ile karşılaşırız.Peki çok boyutlu dizileri nasıl seri bir şekilde tüm elemanlarını yazdırırız.İşte burada foreach döngüsü bize çok büyük kolaylıklar sağlıyor.

<?php

$dh= array(
       array("isim" => "echo",
              "işlevi" => "yazı yazdırır"),
      array("isim" => "count()",
            "işlevi" => "elemanları sayar"),
     array("isim" => "for",
            "işlevi" => "koşula göre iterasyon yaratır"));

foreach($dh as $cc)
{
while(list($a,$b) = each($cc))
{
echo "$a : $b<br>";
}
}

?>


Bu kodları çalıştırdığımızda tüm elemanların yazdırıldığını görürüz.Peki burada ne yaptık.Foreach her bir çalıştırılışta $dh deki elemanlar teker teker $cc ye geçecektir.Zaten foreach'i yukarıda da kullanmıştık.
Ayrıca foreach'in içinde bir de while döngüsünü kullandık.While döngsüne verdiğimiz koşulda ise,each() fonksiyonu aracılığıyla her bir değeri list fonksiyonuna aktardık.List fonksiyonu da kendisine aktarılan bu
değerleri kendi içinde verdiğimiz değişkenlere yerleştirdi.
Toparlamak gerekirse foreach ile dizi değişkenindeki her elemanı sırasıyla $cc değişkenine atıyoruz.Önce isim,sonra echo vs. vs..Daha sonra while içinde each() aracılığıyla $cc içindeki her bir değeri list'e atıyoruz.
List fonksiyonu ise kendi içinde tanımladığımız değişkenlere bu değerleri atıyor.$a ' ya başlıkları "isim" "işlevi",$b ye ise elemanları "echo" "yazı yazar" gibi.
Biliyorum biraz karışık ama gün geçtikçe daha da iyi anlayacaksınız.Ve tüm bilgiler oturacaktır.


6-FONKSİYONLAR
Bir çok programlama dilinin olduğu gibi fonksiyonlar php nin de yapı taşlarındandır.Farkında olmasak ta aslında şu ana kadar bir çok defa fonksiyonları kullandık.Örneği array(),list(),each(),echo() bunların hepsi birer fonksiyondu.Tabii bu fonksiyonlar php'nin getirdiği hazır fonksiyonlardı.Biz istersek php de kendi fonksiyonlarımızıda tanımlayabiliriz.Peki bu ne işe yarayacak.Fonksiyonlar aslında program parçacıklarıdır.Örneğin bir alışveriş portalı yazdığımızı farzedelim.Ve bir kaç farklı yerde veritabanı bağlantısı yapmamız gereksin.Biz heryer gerektiği yerde veritabanı bağlantı kodlarını yazacağımıza sadece tek bir yerde fonksiyon içerisinde yazıp gerektiğinde bu fonksiyonu kullanacağız.
Neyse fonksiyonlar tahmim ettiğiniz kadar zor değiller,hatta bence dizilerden daha kolaylar.

Fonksiyon Tanımlama
PHP de fonksiyonlar function ifadesi ile tanımlanırlar.Aşağıda ekrana "merhaba dünya" yazdıran bir fonksiyon tanımlayacağız.

<?php

function yazdir() 
{
echo "merhaba dunya";
}

?>


Function ifadesi ile php'ye bir fonksiyon tanımlayacağımı belirttik ve ardından da fonksiyonun ismini yazdık.Parantezleri şimdilik boş bırakıyoruz buraya daha sonra foknsiyonun alacağı parametreleri yazacağız.Ardından süslü parantezler içerisinde fonksiyonun gerçekleştirmesini istediğimiz komutları yazıyoruz.
İşte php de fonksiyon tanımlamak bu kadar basittir.Şimdi aşağıda tanımladığımız fonksiyonu çağıracağız ve ekrana "merhaba dünya yazılacak"

<?php
function yazdir() 
{
echo "merhaba dunya";
}

yazdir();

?>


Tanımladığımız fonksiyonları yine isim ve parantezler ile çağırırız.Şimdi aşağıda bu parantezleri de kullanacağız.

Dediğimiz gibi fonksiyonlarda parantezler yani (),fonksiyona parametre verilmesi için vardır.Şimdi öyle bir fonksiyon yazacağız ki,biz fonksiyonu çağırıp,ona 2 sayı vereceğiz ve fonksiyon o sayıları toplayıp ekrana yazdıracak.

<?php

function topla($a,$b)
{
echo $a+$b."<br>";
}


topla(2,4);


?>


Yukarıda yine bir fonksiyon tanımladık ve parantezler içine iki değişken yazdık.Ardından fonksiyona bu parantezlerdeki değişkenleri toplayıp yazdırmasını söyledik.
Aşağıda fonksiyonu çağırdımızda ona parametre olarak iki sayı verdik.2 $a değişkenine,4 ise $b değişkenine atandı.Fonksiyon da bu değerleri toplayıp yazdırdı.
Şimdi de farklı bir örnek yapacağız.Biz fonksiyonu çağırdımızda ona bir cümle vereceğiz ve bu cümleyi kaç defa tekrarlayacağınız söyleyeceğiz.

<?php

function iterasyon($cumle,$tekrar)
{
for($i=0;$i<$tekrar;$i++)
{
echo "$cumle<br>";
}
}


iterasyon("gam tozu ve dünyanın ninnisi",3);

?>


Bu kodları çalıştırdığımızda ekrana üç defa istediğimiz cümlenin yazılmış olduğunu görürüz.

Fonksiyonların değer döndürmesi
Fonksiyonlar illa ekrana birşey yazdırmak zorunda değildir.Onlar bir değer de döndürebilirler.Örneğin topla fonksiyonunu ele alalım.topla fonksiyonu ekrana sonucu yazdırmak zorunda değildi.İsteseydik topla fonksiyonu verdiğimiz iki rakamı toplayıp bize sonucu döndürürdü ve sonucu biz ekrana yazdırırdık.

<?php

function topla($a,$b)
{
return $a+$b;
}

echo topla(5,5);


?>


Yukarıdaki örnekte fonksiyonu çağırdığımızda $a ve $b değişkenlerine 5 değerlerini veriyoruz.Fonksiyon iki değişkeni toplayıp bize sonucu döndürüyor.Ve biz de sonucu ekrana yazdırıyoruz.Eğer echo yu kaldırırsanız ekrana bir şey yazılmadığını fark edeceksiniz.Fonksiyonların değer döndürmesini return sözcüğü ile sağlayabilirsiniz.Yukarıda da return $a+$b; ifadesi ile iki saynın toplamını döndür dedik.


Global İfadesi
Global ifadesi fonksiyonların dışındaki bir değişkenin fonksiyon içerisinde kullanılabilmesini sağlar.

<?php

$dh = 10;

function php()
{
echo $dh;
}

php();
?>


Bu kodları çalıştırdığınızda ekrana bir şey yazılmadığını fark edeceksiniz.Bunun sebebi $dh değişkenin fonksiyon tarafından tanınmamasındır.Dediğim gibi dışarıdaki bir değişkeni fonksiyon içerisinde kullanmak gerekir.Bunun için global ifadesini kullanırız.Aşağıda fonksiyon çalışacaktır.

<?php

$dh = 10;

function php()
{
global $dh;
echo $dh;
}

php();
?>



7-FORM İŞLEMLERİ
Evet php'nin yapıtaşlarını (diziler,değikenler,döngüler,fonksiyonlar,operatörler vs.) öğrendik,artık bu dili biraz daha etkin kullanma zamanımız geldi.
Öncelikle şunu söyleyeyim ki html kodlarının php versiyonları yoktur.Yani <form><a><b><i> vs. gibi html kodlarının php de bir karşılıkları yoktur.Zaten php de bir işaretleme dili değildir bu yüzden bu tagları getirmek zorunda değildir.Biz bu yüzden php içerisinde html de kullanırız.Mesela şu ana kadar da en çok <br> tagını php içerisinde kullandık.
Eğer html de form nesnelerini bilmiyorsanız,öğrnemenizi tavsiye ederim çünkü html form nesnelerini bilmeden bu konuyu anlamanız da mümkün olmaz.Zaten form nesnelerini öğrenmeniz de biraz html ilginiz varsa bence bir kaç saat sürecektir.Belki daha da kısa.
Bildiğiniz gibi form yollamanın iki metodu vardır.Biz bunları <form> etiketinin method niteliğinde belirtiyorduk.Bunlar GET ve POST metodlarıydı.Peki bu metodlar ne işe yarar ?
POST metodu ile veriler ziyaretçiler tarafından okunamazlar,yani ziyaretçiler göremezler.Oysa GET metondu veriler adres çubuğunda görünür,ziyaretçiler tarafından okunabilir.


BASİT FORM
Aşağıda kullanıcıdan bir isim alan ve onu ekrana yazdıran bir form görüyoruz.


DH.HTML nin içeriği :
<form action="dh.php" method="POST">
<b>isim :<br></b>
<input type="text" name="mesaj"><br>
<input type="submit" value="gönder">
</form>


DH.PHP NİN İÇERİĞİ
<?php

echo $_POST['mesaj'];

?>


$_POST değişkeni formdan post metoduyla gelen veriyi input alanından (textarea,vs. de olabilir) almaya yarar.DH.HTML de bir form hazırladık ve form gönderildiğinde dh.php sayfasının çağrılmasını istedik.DH.PHP çağrılınca da $_POST[] değişkeni formun mesaj ismindeki input alanındaki veriyi ekrana yazdırıyor.
Aynı şeyi GET ile de yapabilirdik.


DH.HTML
<form action="dh.php" method="GET">
<b>isim :<br></b>
<input type="text" name="mesaj"><br>
<input type="submit" value="gönder">
</form>




DH.PHP
<?php

echo $_GET['mesaj'];

?>


Burada da $_GET değişkeni ile adres çubuğundaki mesaj değişkenin değerini alıyoruz ve yazdırıyoruz.Adres çubuğuna bakarsanız şu şekli almış olduğunu görürsünüz :
http://localhost/dh.php?mesaj=yazdıklarınız
$_GET adres çubuğundaki değişkeni almak için kullanılır.Zaten biz de yukarıda öyle yaptık.

E-POSTA FORMU (MAIL FORM)
Sunucu taraflı dillerin güzel bir özelliği de web sayfası üzerinden herhangi bir kişinin e-posta adresine e-posta yollabilmesidir.Biz de bundan farklı birşey yapmayacağız.Ancak aşağıdaki kodları yerel ağda (localhost) çalıştıramayız.Localhost üzerinden bir kişiye e-posta gönderemeyiz.Bunun için bir hosta ihtiyacımız vardır.Daha doğrusu SMTP ye sahip bir hosta ihtiyacımız vardır.Peki SMTP nedir ? Açılımı Simple Mail Transfer Protocol'dür.Kısaca e-posta göndermek için SMTP destekli bir hosta ihtiyacımız vardır.Biz yine de örneğimizi yapacağız.Bence atlamayın ve bakın zaten php de e-posta yollamak için sadece bir fonksiyon kullanırız : mail().


DH.HTML
<form action="dh.php" method="POST">
<b>göndereceğiniz-posta adresi :</b><br>
<input type="text" name="eposta"><br><br>
<b>başlık :</b><br>
<input type="text" name="baslik"><br><br>
<b>mesajınız :</b><br>
<textarea name="mesaj"></textarea><br><br>
<input type="submit" value="gönder">
</form>



DH.PHP
<?php

$mesaj = $_POST['mesaj'];
$baslik = $_POST['baslik'];
$adres = $_POST['eposta'];
$konu = "bilgi vermek";

mail($adres,$konu,$mesaj,$baslik);
echo "e-posta gönderildi teşekkürler";
?>

mail fonksiyonu dört parametre alır.Yukarıdaki gibi mail($gonderilecek_adres,$konu,$icerik,$baslik)

Tek Bir Form Sayfası --Form Sayfasını ve Scripti Tek Sayfada Birleştirmek--
Şu ana kadar bir form gönderebilmek için iki sayfa kullandık.Bunlar formun bulunduğu,ve form tarafından çağrılan scriptin bulunduğu sayfalardı.Oysa biz çok daha kolay bir şekilde formu da scripti de tek bir sayfada birleştirebilirdik.Bu bize çok büyük bir kolaylık sağlar.


DH.PHP
<?php

if(!$_POST['gnd'])
{

echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"POST\">
         <b>isim :</b><br>
         <input type=\"text\" name=\"isim\"><br><br>
         <input type=\"submit\" name=\"gnd\" value=\"gönder\">
        </form>";

} else {

echo $_POST['isim'];

}
?>


Yukarıdaki form kullanıcıdan aldığı ismi ekrana yazdırıyor ancak bu form için tek bir sayfa yetiyor.Peki bu nasıl oluyor.Öncelikle size formda \ neden kullandığımızı açıklayayım.
Bildiğimiz gibi echo dan sonra iki tırnak kullanıyoruz.İşte ters slaş (\) karakteri kendisinden sonra gelen tırnağın geçersiz sayılmasını sağlar.Yani eğer biz \ kullanmasaydık php daha ilk tırnak gördüğü yerde echo ile yazmayı bitirdiğimizi sanacaktı ve formun yazımı devam ettiği için hata verecekti.Mesela normalde input tagının type niteliği type="text" şeklinde yazılır.Biz bunu php içinde type="text" şeklinde yazdığımızda php'nin kafası karışacaktı.Çünkü echo "type="text"" şeklinde bir yazımda php yazmayı hangi tırnaktan sonra kesip kesmeyeceğini anlamayacaktı.Fazla ve arka arkaya hatalı tırnak kullanımı echo nun çalışmasını engelleyecek ve hata verecekti.İşte biz ters slaş (\) karakteri ile php'ye bu karakterden sonra gelen tırnağın (") echo ile ilgisi olmadığını belirtiyoruz.Bunu html tagı içerisinde kullandığımız içinde ekrana yazılmıyor .Eğer html tagı içinde değilde şu şekilde kullansaydık ekrana bir tırnak yazdırılırdı. ÖRN : echo " \" ";

Ancak burada tek bilmediğimiz işlem bu değil.$_SERVER[PHP_SELF] değişkenini de neden kullandığımızı bilmiyoruz.Bizim bu değişkeni burada kullanma sebebimiz formu yine aynı sayfada açmasıdır.Bu değişken sayfanın ismini temsil eder.Yani formun gönderildiğinde yine aynı sayfayı açmasını sağlar.Biz burada $_SERVER[PHP_SELF] yerine dh.php de yazabilirdik (sayfası dh.php olarak kaydetmiştik) Eğer mesela.php diye bir sayfa oluşturup

<?php echo $_SERVER[PHP_SELF]; ?> yazıp kaydederseniz çalıştırdığınız sayfanın isminin ekrana yazılmış olduğunu görürsünüz.

Neyse kısaca $_SERVER[PHP_SELF] değişkenini burada kullanma amacımız sayfayın kendi kendisini çağırmasıydı.

Bir de sayfayı if ile iki ayırdık.If'e verdiğimiz koşul şuydu --> !$_POST['gnd']
Yani eğer formda gnd değişkeni yoksa formu göster,varsa scripti işle.Dikkat ederseniz submit'in ismini gnd yaptığımızı görürsünüz --> <input type="submit" name="gnd" value="gönder">

Form gönderildiğinde gnd isimli bir değişken oluşur ve sayfa yüklendiğinde php bu değişkeni kontrol eder.Eğer $_POST['gnd'] değişkeni yoksa formu gösterir.Eğer varsa scripti işlemeye başlar.Yani ismi ekrana yazdırır.

Kullanıcı Şifre/İsim Sorgulama
Son yapacağımız örnekte genellikle üyelik sistemlerinde bulunan kullanıcının girdiği şifreyi ve kullanıcı ismini sorgulama sistemini yazacağız.Tabii ki bir üyelik sistmi oluşturmak için veritabanı ve cookie (ya da session) bilgisi gerekir biz sadece sorgulayıp ekrana yazdıracağız.

<?php

if(!$_POST['gnd'])
{

?>

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
<b>kullanıcı ismi :</b><br>
<input type="text" name="isim"><br><br>
<b>şifre :</b><br>
<input type="password" name="sifre"><br><br>
<input type="submit" name="gnd" value="gönder">
</form>

<?php

} else {

$gecerli_isim = "sagopa";
$gecerli_sifre = "kajmer";

if($_POST['isim'] == $gecerli_isim && $_POST['sifre'] == $gecerli_sifre)
{
echo "doğru giriş";
} else {
echo "yanlış giriş";
}

}

?>


Yine formu tek bir sayfa birleştirdik.Önce gnd değişkenin üretilip üretilmediğini kontrol ettik.Eğer üretilmemişse yani form gönderilmemişse formu yazdırdık.Eğer gönderilmişse de formdan gelen verilerin geçerli olup olmadığını kontrol ettik.

8-BELLİ BAŞLI PHP FONKSİYONLARI
Php de istediğimizi yapabilmemiz için aynı zamanda bir çok fonksiyon bilmemiz gerekir.İşte bu bölümde işimize yarayacak çeşitli fonksiyonları göreceğiz.

STR_REPLACE
Belli kelimeleri belli kelimelerle değiştirir. str_replace($eski,$yeni,$yazi);

<?php

$dh = "selam";

echo str_replace("selam","merhaba",$dh);

?>


Yukarıda str_replace() fonksiyonu $dh içinde "selam" görürse "merhaba" ile değiştirir.

SIZEOF()

Count() yaptığı işi yapar.

STRTOUPPER()

K