php - hakkı Öcal

Upload: synche

Post on 30-May-2018

248 views

Category:

Documents


5 download

TRANSCRIPT

  • 8/14/2019 PHP - Hakk cal

    1/163

    PHPHP

    PHP.......................................................................................................................................................1

    nsz...................................................................................................................................................4

    PHP Destei veren sitelerle ilgili not:................................................................................... 6PHP'ye Giri................................................................................................................ ........................7

    PHP ve Veritaban ................................................................................................................. 10PHP ve Web Sunucusu ...................................................................................... ........... ...... . 12

    Unix/Linux Sistemleri.................................................................................................... ....... 12Linux'ta program derlediniz mi? ........................................................................................... 13Gvenli socket ve Internet Eriimi Katman......................................................................... 17Windows-PWS ve IIS ...................................................................................................... ..... 20IIS 4.0 ve 5.0 .................. .................. .................. .................. ................... .................. .................. ............ 20

    Browser Yetenek Dosyas: Browscap.ini ............................................................................. 21PWS 4.0 .................. .................. .................. .................. .................. ................... .................. .................. . 22

    Windows'da Apache! .......................................................................................................... .. 23Windows'da MySQL ........................................................................................................... .. 24

    PHP'nin Yap Talar............................................................................................................................31

    PHP programn durdurmak ............................................................................................... .. 31Deikenler ............................................................................................................ ............... 31

    Veri Trleri............................................................................................................................. 33Tr Deitirme .................................................................................................. ...... ...... ...... . 34

    Fonksiyon .............................................................................................................................. 35Escape ......................................................................................................................... .......... 37Drt yararl fonksiyon ...................................................................................... .................... 42lemciler (Operatrler) .............................................................................................. .......... 44

    Bir Arttrmak veya Azaltmak iin .............................................................................. ............ 46Sabit Deerler ........................................................................................................ ............... 49Tarih ve saat Verisi ............................................................................................................... 51

    PHP'de Program Denetimi.................................................................................................................53

    if Deyimi................................................................................................................................. 53switch deyimi ........................................................................................................................ 55

    switch iin ksa yol............................................................................................................... 57Dngler ........................................................................................................................... ..... 57

    while dngs ............................................................................................................. ......... 58do..while ........................................................................................................................... .... 59for dngs ................................................................................................................. ......... 60

    PHP-1 1

  • 8/14/2019 PHP - Hakk cal

    2/163

    foreach ......................................................................................................... ......................... 61Dngy sona erdirmek iin: break .................................................................................... . 61Dngy srdrmek iin: continue ............................................................... ................ ...... . 62

    Fonksiyonlar........................................................................................................................................64

    Fonksiyon Tanmlama ve arma ..................................................................................... . 64Fonksiyona varsaylan deer verebiliriz ......................................................... ...... ...... ...... . 70Deikenlerin kapsam: global ve static ............................................................................ 72

    Dizi-Deikenler, Nesneler................................................................................................................ .76

    Dizi Deikenler ................................................................................................................... ............... 76

    Dizi Deiken Oluturalm ................................................................................................... 77Dizi deikenleri kullanalm ................................................................................................ 81Dizi Deikenlerin Dzenlenmesi ................................................................................ ....... 86

    Dizileri birletirme: array_merge() ........................................................................................ 86Dizilere deiken ekleme: array_push() .............................................................................. 86Dizinin ilk elemann silme: array_shift() ........................................................... ................... 87Diziden kesit alma: array_slice() .......................................................................................... 87Dizileri sralama: sort() ve rsort() ............................................................................. ............ 87likili dizileri sralama: asort() ve ksort() .............................................................................. 88

    Nesneler .......................................................................................................................................... ..... 88

    Bir Nesne Oluturalm ..................................................................................................... ..... 89PHP banda......................................................................................................................... ............92

    Formlar ................................................................................................................................................ 92

    Form'dan GET Metoduyla Gelen Bilgiler ............................................................................ 95URL Kodlar........................................................................................................................... 99Form'dan POST Metoduyla Gelen Bilgiler ......................................................................... 102Form ile ilemciyi Birletirelim ......................................................................... ...... ............ 104Dosya "kartma" ........................................................................................ ......................... 106

    Dosya lemleri ........................................................................................................... ........................ 109

    Harici Dosya (include) ..................................................................................................... ..... 109include mu, require m? ............................................................................................. .......... 111Dosyalar hakknda bilgi ....................................................................................................... 112

    Dosya var m? file_exits() ................................................................................. ...... ...... ...... . 112

    Dosya m, dizin mi? is_file() ve is_dir() .................................................................... ............ 112Dosya okunabilir mi? is_readable() .................................................................................... . 113Dosya yazlabilir mi? is_writable() ............................................................... ...... ...... ............ 113Dosya altrlabilir mi? is_executable() ........................................................... ...... ............ 114Dosya boyutu: filesize() ............................................................................... ........... ...... ...... . 114Dosyaya son eriim tarihi: fileadate(), filemtime() ve filectime() ..........................................114

    Dosyalar oluturma ve silme ........................................................................................... .... 115

    PHP-1 2

  • 8/14/2019 PHP - Hakk cal

    3/163

  • 8/14/2019 PHP - Hakk cal

    4/163

    nsz

    Rasmus Lerdorf, tarihin ilk dnemlerinde yani Internet'in henz yayld 1990'larnortalarna doru i aryordu; hayat yksn bir kiisel sayfada yaynlamak ve bavuraca

    yerlere bu sayfann adresini verebileceini dnd. Fakat o dnemde zellikle

    niversitelerin Unix alarnda kurulan Web Sunucularda kiisel sayfa yapmak kolay deildi.

    Rasmus, kendisi iin hazrlad yazlmn Web'e aina olmayanlar starafndan da kolayca

    kullanabileceini dnd. Bu yazlmn byke bir blm Perl dilinden alnmt. Adna

    Personal Home Page (Kiisel Ana Sayfa) dedii bu programn ok tutulmas zerine

    Rasmus Lerdorf, Internet Sitesi kuran herkesin birinci gn deilse bile ikinci gn farkna

    vard ihtiyac, yani bir form yoluyla ziyaretiden gelen bilgileri ilemeyi salayan ekleri

    yazd ve programn ad PHP/FI (Form Interpreter/Form Yorumlayc) oldu. Kimileri

    programn bu srmne PHP2 adn takt; ve bu ad, programn ok deimesine ve

    gelimesine ramen uzun sre deimeden kald.

    Rasmus Lerdorf, 1995'in ortalarnda, Zeev Suraski, Stig Bakken, Shane Caraveo ve

    Jim Winstead ile bir grup kurdu ve PHP'yi Perl'den dn alma rutinlerle i yapan bir paket

    olmaktan kartp, Nesne-Ynelimli (Object-Oriented) bir programlama dili haline getirdi.

    Bu grup, bugn PHP4 ad verilen bu dili gelitirmekte ve yeni ilevsellikler kazanmas iin

    srekli almaktadr. PHP, Linux gibi, Ak Sistem kurallarna tabidir; isteyen programda

    istedii deiiklii yapabilir; ancak bu deiiklikten para kazanamaz ve yapt deiiklikleri

    isteyen herkese aklamak zorundadr.

    Linux'un nmzdeki yllarda en ok kullanlan iletim sistemi olaca yolundaki

    bilgiler kukusuz en ok Linus Torvalds' artt. Linux'un bu baarsndaki en nemli

    anahtar nokta olan ak kaynak gelitiriliyor ve dnyann heryerinden yazlm gelitiricilerin

    desteini alyor olmas. Ayn baary Web yazlm gelitirme dili PHP de gsteriyor. PHP

    bundan iki yl ncesine kadar ad duyulmam basit bir dildi. Ancak imdi gerek performans

    PHP-1 4

  • 8/14/2019 PHP - Hakk cal

    5/163

    gerek destek asndan dier Web yazlm gelitirme dilleri ile kolayca yaryor; hatta

    bunlar fazlasyla geiyor. Hemen her trl iletim sistemiyle alyor olmas da cabas.

    PHP, her trl veritabanyla sorunsuz alyor olmasyla ve Zend derleyicisiyle daha da

    yaygnlk ve g kazanacak. PHP ve ak kaynak olarak gelitirilmeye balanan MySQL'inbirlikte kullanldklarnda yakaladklar etkinlik binlerce Dolar verilerek alnan veritaban ve

    uygulama dilleriyle yarmann tesinde farklara sahip.

    Trkiye'de PHP olduka yeni kullanlmaya baland. Dnyadaki PHP kullanclarnn

    tercih ettikleri PHP editr PHPed'i bir Trk'n gelitirmi olmas, hepimize hakl bir gurur

    veriyor. Ayrca http://www.php.org.tr adresindeki oluum ok ksa srede Trkiye'de

    PHP'nin layk olduu yeri alacan gsteriyor.

    Bu kitap PHP'nin 4'nc srmne gre yazdk. Burada verdiimiz rnekleri

    uyguladnzda beklenen sonucu alamazsanz, nce sizin sisteminizde kurulu PHP'nin

    srmn kontrol etmelisiniz. Bu kitapktaki rnek kodlar PC Life dergisinin Internet

    sitesinde, http://www.pclife.com.tr/........../php_kodlar.zip adresinde bulabilirsiniz. Ayrca

    bu kitapktaki kodlarn tmnn gerek bir Web sunucuda nasl ilediini grmek iin

    http://www.mycgiserver.com/~ocal/ adresine bakabilirsiniz.

    Bununla birlikte bir programlama dilinin incelikleri, ancak kodlarnz kendiniz

    yazarsanz renilebilir. rnek kodlardan, ancak kendi yazdnz kodlar beklediiniz

    sonucu vermedii taktirde, karlatrma amacyla yararlanmalsnz. Sizi biraz da buna

    zorlamak iin yer yer konular bu kodlarn yazld varsaym ile ele alacam.

    Bugne kadar PHP programlarrna .php3 uzatmasn vermek adeta gelenek halini

    almt; ancak PHP'nin 4'nc srmyle birlikte, konfigrasyon ve INF dosyalar,

    yaplandrma srasnda iletim sistemlerine ve Web sunucularna varsaylan deer olarak

    sadece .php uzatmasn tanmasn bildiriyorlar. PHP programlarnza bundan baka

    uzatmalar verecekseniz, Linux'ta Apache konfigrasyon dosyasn, Windows'da ise Registry

    kaytlarn deitirmeniz gerekir.

    PHP-1 5

  • 8/14/2019 PHP - Hakk cal

    6/163

    ki blm olarak sunacamz PHP kitapnn birinci blmnn yazlmasnda

    yurdumuzda PHP kullanclarn eitme ve destekleme hareketinin ncleri Sayn Kayra

    Otaner, Serdar Soydemir ve zgr Akan, deerli yardmlarn esirgemediler. kinci

    kitapkta yer alacak uygulamalarn tmn bu grup gelitirdi ve Ak Kaynak hareketiningerek temsilcileri olduklarn gstererek, serbeste kullanlmak zere okuyucularmza

    sundular. Kendilerine sonsuz teekkrlerimizi sunarz. Bununla birlikte bu kitapkta

    varolan hatalarn tm bana aittir.

    PHP Destei veren sitelerle ilgili not:

    Bu kitapkta bir ka sayfa ilerledikten sonra, yapmak isteyeceiniz ilk ilerden

    birinin cretli veya cretsiz PHP destei veren bir Wes sitesi evsahibi (Hosting)

    firmas aramak olacan tahmin ediyorum. Bu amala aramalarnza

    http://www.pageresource.com/putweb/index.html adresinden balamanz salk

    veririm. Eer doruca byle bir evsahibi firmaya ulamak isterseniz

    http://www.mycgiserver.com adresine gidebilirsiniz. Kitapn sonunda eitli PHP

    kaynaklarnn bir listesini de bulabilirsiniz.

    PHP-1 6

  • 8/14/2019 PHP - Hakk cal

    7/163

    PHP'ye Giri

    C/C++, Pascal, hatta Visual Basic bilen kiiler iin PHP renmek hemen hemen birleden sonray ayrmak suretiyle yaplabilecek bir itir. Bu dillere aina olmayanlar ise

    belki bir ka leden sonralarn ayrmak zorunda kalabilirler! PHP, bir Script dilidir; yani

    kodlar dz yaz dosyalar halinde kaydedilir ve kullanlaca ortamda bir yorumlayc

    tarafndan yorumlanr. Bu, PHP ile yazacanz programlar, derlemek yani ortaya bir EXE

    veya altrlabilir baka bir dosya kartmaya gerek olmad anlamna gelir. Fakat PHP

    Script'lerinizi altrabilmek iin bu dili bilen bir programa ihtiyacnz vardr. Bu programn

    tek bana (komut istemci penceresinde veya terminal ekrannda) almas mmkn

    olduu gibi, Web Server tarafndan da altrlabilir olmas gerekir. Baka bir deyile Web

    Sunucu programnn PHP anlar hale getirilmesini salamak zorundayz.

    PHP yorumcusu, bugn Zend-ekirdei ad verilen bir Scripting teknolojine dayal

    olarak, Zeev Suraski ile Andi Gutmans tarafndan sfrdan, tamamen yeniden yazlm

    bulunuyor. Zend, tpk Windows Script Host ve mesela Visual Basic for Applications (VBA)

    gibi, iletim sistemine kendisi ile uyumlu Script dilleriyle yazlm programlar altrma

    imkan kazandran bir teknolojidir (Zend konusunda ek bilgiyi Internet'te www.zend.com

    adresinde bulabilirsiniz.) Bugn bu dilin resm ad "PHP: Hypertext Preprocessor" (Hiper-

    metin n-ilemcisi) olarak deitirildi, ve eitli Web Server'larn PHP dili anlamas iin

    gerekli yorumlayclar yeniden retlidi. 20 Ocak 200'de srail'de PHP'nin ilk uluslararas

    konferans yapld ve 4'nc srmnn betas ortaya kondu.

    Peki ama PHP nedir?

    PHP ile artk oturup her trl ilevsellii sahip programlar yazabilirsiniz; yani PHP

    bal bana uygulama alanlar bulabilecek dzeye ulamtr. Baka bir deyile PHP ile

    oyun programndan tutun veritaban ynetimine kadar hemen her trl program

    PHP-1 7

  • 8/14/2019 PHP - Hakk cal

    8/163

    yazabilirsiniz. Bizi bu kitapkta ilgilendiren tarafyla PHP, Web Sunucu'ya bir takm iler

    yaptrmak iin program yazma dilidir. Tpk CGI/Perl veya ASP ya da ColdFusion, Java

    (Javascript deil!) gibi! PHP kodlar, oluturacamz HTML sayfalarnda HTML etiketlerinin

    arasnda kendi zel ayrac iinde yazlr:

    ster kiisel bilgisayarmzda, ister gerek Internet ortamnda olsun, bir Web

    Sunucu, ziyaretinin (Internet istemci programnn, Browser'n) talep ettii dosya adnn

    uzatmas olarak ".PHP," ".PHP2," ".PHP3," veya ".PHP4" grnce, kendine kendine, "Yine

    bana i kt!" diye dnr! nk Web Server, uzatmas ".htm" veya ".html" olan bir

    dosyay, kendi sabit disklerinden birinde bulur ve zahmetsizce, ziyaretinin bilgisayarna

    gnderir. Fakat, ".asp," .pl," ".cfm" gibi, ".PHP" uzatmas, Web Sunucu'ya bu sayfay

    olduu gibi, alp ziyaretinin Browser'na gndermek yerine, nce PHP yorumlaycy

    ararak, ona teslim etmesi gerektiini bildirir. PHP yorumlaycs (yani Windows

    ortamnda PHP.exe veya 4'nc srmle gelen PHP4isapi.dll, Unix ve trevlerindealtrlabilir PHP dosyas), kendisine teslim edilen bu belgede nce ""

    ayralar arasndaki PHP kodlarn seerek alr ve gerei ne ise onu yapar. Bu ayralarn

    iinde kalan kodlar, bizim yaplmasn istediimiz ilemin komutlardr. HTML ile yetinmeyip,

    PHP kullanmamzn sebebi, bu komutlarn HTML'in yapayaca eyleri yapmasdr.

    HTML'in yapamayaca eylerin banda, Web Sunucusu'nda yaplacak iler vardr.

    Szgelimi HTML etiketlerini kullanarak, Web Sunucusu'ndaki bir veritaban dosyasn ap,

    iindeki verileri okuyamayz. HTML yoluyla Web Sunucusu'nun sabit disklerindeki dz yaz

    dosyalarn da okuyamayz ve bu disklere dosya yazamayz. HTML etiketleri ile Web

    ziyaretimizden bilgi edinebilir ve bunlar Sunucu'ya yollayabiliriz; ama o kadar! Bu bilgileri

    ie yarar ekle sokmak iin bize Server'da alan bir program gerekir. Server'da alan

    PHP-1 8

  • 8/14/2019 PHP - Hakk cal

    9/163

    program, EXE ve DLL veya JSP (Java Server Pages) gibi bir "gerek program"; veya Perl,

    ASP ve PHP gibi Script diliyle yazlm bir program olabilir. (Gerek programlar yazanlar,

    tabi, sizin Script diliyle yazlm programlara "program" demenize ok kzarlar! Ama bu

    Script pogramlarnn program olmasn hi engellemez.)Ne diyorduk? Web Sunucu, ".PHP" uzatmasn grnce telaa kaplr, bu dosyay

    PHP yorumlaycsna verir ve o da "" ayralar iindeki kodlar icra eder,

    demitik. Bu icraatn sonunda ortaya kan rn eer ziyaretiye gnderilecekse, HTML

    etiketleri iinde gnderilir; yani ziyareti asla PHP kodlarn gremez. Kimi zaman PHP

    programmzn almas sonucu ortaya ziyaretiye gnderilecek bir rn kmaz; elde

    edilen sonu ya baka bir programa (rnein elektronik ileti gnderen bir Sendmail

    progamna) hammadde olarak verilir, ya da Server'da sabit diske yazlr. Fakat her

    durumda, Web ziyaretimiz bizim PHP kodlarmz gremez; bu Web sayfalarmzda PHP

    kodu kullanmamz halinde, sayfalarmzn Browser tarafndan tannmas veya tannmamas

    gibi bir durumun ortaya kmamas demektir. Ziyareti ne tr Browser kullanrsa kullansn,

    kendisine Sunucu'dan daima saf HTML kodu gelecei iin, sayfalarmz rahata

    grebilecektir. Tabi bir nokta var: Sayfalarmzda herhangi bir Browser'n arzal

    yorumlad veya hi yorumlayamad HTML etiketleri bulunabilir; ya da sz gelimi

    ziyaretiye giden HTML'in iinde Browser'da altrlacak olan baka Script kodlar

    bulunabilir; ve Browser bu kodlar anlamayabilir. rnein, HTML sayfanzda VBScript

    kodlar kullanm iseniz, Netscape ile sitenize balanm olan kiiler bu kodun

    oluturmasn istediiniz etkiyi gremeyeceklerdir; nk Netscape VBScript anlamaz! PHP

    ile yazacanz Web programlarnn (eski deyimiyle "sayfalarn") oluturaca HTML

    belgesinin Browser trleri ve srmleri ile uyarlln salamak yine Web programcs

    olarak sizin sorumluluunuzdadr.

    zetlersek, PHP bir CGI programlama dilidir; bu dille, Web Sunucusu ile Web

    ziyaretisi arasndaki buluma noktas olan CGI'da bilgi alverii yaplabilir; Sunucu'da

    PHP-1 9

  • 8/14/2019 PHP - Hakk cal

    10/163

    bulunan baka programlar altrlabilir ve bylece Web sayfalarmza HTML'in

    snrlamalarnn tesinde hareket ve ziyareti ile etkileme olana kazandrlabilir.

    Sanrm iyi bir Web programcs olarak u anda ekrana "Merhaba Dnya!"

    yazdrmak iin sabrszlanyorsunuz. Ama bunun iin, PHP sayfanz ya PHP-uyumlu bir WebSunucusu'ndaki Web sitenize yklemek, ya da kiisel bilgisayarnzdaki kiiel Web

    Sunucusu'na PHP retmek zorundasnz. Bu ikinci yntemi kuvvetle tavsiye ederim;

    nk yazacanz PHP programlarn gerek Internet Sunucusunda snamak, bazen arzu

    edilmeyen durumlara yol aabilir. Oysa kiinin bu denemeleri, evinde ve iyerinde kendi

    bilgisayarnda yapmas, ou zaman daha az baars ve gzyana yol aar! En azndan,

    PHP hatalarnz ve gzyalarnz sizden baka gren olmaz!

    PHP ve Veritaban

    Kiisel bilgisayarnzdaki kiisel Web sunucusuna PHP retme ilemine gemeden

    nce, hemen hemen PHP'nin ikiz kardei saylan MySQL'den ve onun rakibi PostgreSQL'den

    ksaca sz edelim.

    PHP'nin varlk sebeplerinin banda, ticar Unix ve Microsoft Windows iletim

    sistemlerinden ayr, ticar olmayan Ak Sistem ortamlarnda alan bir Script dili ile bu

    dille kullanlabilecek yine Ak Sistem rn bir veritaban eriim ve ynetim aracna sahip

    olmak gelir. Perl, geri PHP'den ok nce Ak Sistem rn olarak, isteyen Web

    Programcs'nn cretsiz edinecei bir CGI programlama dili olarak Web'in ilk gnnden

    beri Web Programcsnn emrinde idi. Ama Perl, metin dosyalarndan yaz ekmek ve

    bunlar biimlendirerek rapor haline getirmek amacyla gelitirilen bir dil olduu iin,

    zellikle veritabanna dayal ilemlerde programcya ok glk kartyordu. ASP ise (ASP

    destei salayan ve cretsiz Web sitesi veren firmalarn giderek artmasna ve veritaban

    konusunda hem kolaylk, hem de byk bir etkinlik salamasna ramen) ounlukla

    cretli Web sitesi aldmz ticar amal evsahibi (Hosting) firmalarnn salad bir

    teknoloji olarak grld. PHP, tasarmclarnn MySQL ve PostgreSQL teknolojilerini

    PHP-1 10

  • 8/14/2019 PHP - Hakk cal

    11/163

    gelitiren kurum ve firmalarla yapt yakn ibirlii sonucu ikinci srmnden itibaren veri-

    ynlendirmeli Web uygulamas alannda nemli bir ara olarak belirdi. Dolaysyla, PHP

    kurulumu dendii zaman, kendiliinden, MySQL kurulumu da kastedilmi olur. imdi

    PostgreSQL da ekleyebiliriz.PHP, bir dildir; MySQL ve PostgreSQL ise bir demet srcdr. PHP ile, Web

    Server'a sayfanz Internet ziyaretisine gndermeden nce bir takm komutlar icra

    etmesini, bir takm veri dosyalarn ap iindeki bilgileri alp bunlar HTML kodlaryla

    bezeyip, Browser'a bildiimiz klasik HTML sayfas olarak gndermesi talimatn veririz.

    MySQL ve PostgreSQL ise, Windows sistemlerinde Denetim Masas'nda grdnz ODBC

    Veri Kayna Ynetmeni adl ara gibi, bir vertaban sunucusu, yani Database Server

    pprogramlardr. Yakn zamana kadar bu iki veritaban ynetim arac arasnda fazla bir

    ekime yoktu. Ancak imdi zellikle Linux kullanclar topluluklarnda iki program arasnda

    verimlilik testleri yaplyor; hangisinin daha iyi oldununa ilikin youn bir tartma

    sryor. PHPBuilder.com uzmanlar, yaptklar bir ok denemede, MySQL'in daha hzl ve

    daha etkin altklar sonucuna varyorlar. (Bu konuda daha geni bilgi edinmek iin

    Internet'te www://PHPbuilder.com/columns/tim20000705.PHP3 adresine bakabilirsiniz.)

    MySQL, bir kullanc lisans 200 Dolar olan ticar bir program iken 2000 yl

    ortalarnda GPL (GNU General Public License/GNU Kamusal Lisans) uygulamasna gemi

    ve cretsiz datlr hale gelmi bulunuyor. Buna gre MySQL'i bir ticar uygulamann iinde

    motor olarak kullanacaksanz reteci firmaya lisans creti demeniz gerekir; bunun

    dndaki uygulamalar iin program Internet'ten indirerek kullanabilirsiniz. PHP iin

    MySQL'e gerek yoktur. PHP, bir NT veya Win9x tabanl Web Server'da altrlyorsa,

    Microsoft'un ODBC srcleri ile alabilir; ve ODBC'nin okuduu btn veritabanlarndan

    veri ekebilir. (ODBC'nin Unix-Linux srm de vardr.) Ayrca PHP iin Adabas, dBase,

    Empress, FilePro, Informix, InterBase, mSQL, Oracle, Solid, Sybase, Velocis ve bir ok

    Unix veritaban yneticisi iin gelitirilmi add-on (sonradan eklenen) modller vardr. PHP,

    PHP-1 11

  • 8/14/2019 PHP - Hakk cal

    12/163

    bir ok LDAP istemci program iin yazlm API'lere de sahiptir. PHP ile IMAP, SMTP gibi

    Internet elektronik mektup protokollerini kullanmak da mmkndr.

    Biz bu kitapkta rneklerimizde ve uygulamalarmzda MySQ'den yararlanacaz.

    PHP-MySQL ikilisini kiisel bilgisayarmza kurmak iin nce gerekli programlarInternet'ten indirmemiz gerekir. Bunun iin u adreslerden yararlanabilirsiniz:

    http://www.PHP.net/downloads.PHP

    http://www.mysql.com/downloads/index.html

    PHP ve Web Sunucusu

    Bizim amzdan PHP, bir Web sunucu programdr; kurulaca sistemdeki Web

    sunucusu ile uyumlu olmas gerekir. 4'nc srm itibariyle, PHP btn Unix-trevisistemler (rnein Linux) ve Microsoft Windows sistemleri ile uyumludur. Birlikte

    alabilecei Web sunucu programlar arasnda Apache, IIS, FHTTP, Omni HTTPd, Xitami

    ve Windows 95/98 iin PWS (Personal Web Server) vardr. Gerek Internet ortamnda

    sunucu programlara PHP yetenei kazandrma ilemi, Web Pnogramcs olarak bizi

    ilgilendirmez; bizim iin Internet sitemize evsahiplii yapan Hosting firmasnn PHP destei

    verip vermediini bilmek yeter. Fakat tasarmlarmz snayabilmek iin kendi

    bilgisayarmza bir kiisel Web Server kurmak ve bu program PHP-uyumlu hale getirmek

    gerekir. Burada sadece iki rnek ele alacaz: Linux iin Apache sunucu program ve MS-

    Windows iin PWS. Bu iki programdan hangisi sizin sisteminize uygunsa onu kendi

    bilgisayarnza kuracanz varsayarak, imdi PHP ve MySQL kurulumu ile uraabiliriz.

    Unix/Linux Sistemleri

    Kurma ilemine Unix ortamndan balayalm. Burada Unix sistemi dediimiz zaman

    Unix'in tekrar biliim haritasnda yerini almasn salayan Linux'u kastediyorum. Bunun iin

    nce http://www.PHP.net/ adresini ziyaret etmemiz gerekiyor. Eer PHP uzman

    olacaksanz, buras sizin ikinci eviniz olabilir. Downloads kprsn tklayarak alacak

    sayfada Unix/Linux iin kaynak kodunu bilgisayarnza aktarn. PHP'yi kuracanz

    PHP-1 12

  • 8/14/2019 PHP - Hakk cal

    13/163

    bilgisayarda bir Web sunucu program yoksa, http://www.apache.org/dist/ adresinden

    apache_1.3.12.tar.gz (veya daha ileri) dosyasn da indirmeniz gerekir. Unix-Linux

    sistemleri iin bilgisayarnzda "gcc C derleyici" bulunmas gerekir. Linux sisteminizde

    rnein Red Hat Linux srm 5.2 gibi eski bir gcc derleyici varsa, gcc srm 2.8.1'iInternet'ten bulmanz gerekir.

    //////KUTU///////////////////

    Linux'ta program derlediniz mi?

    Daha nce hi Linux program derlemediyseniz, nce baz kavramlar akla

    kavuturalm:

    tar: (tape archiver) birden fazla dosyay tek dosya haline getirir ve sktrr.

    Teyplere yedekleme amacyla gelitirilmitir. tar dosyalar sktrlmsa uzatmas .gz,

    deilse .tar olur.

    gcc: GNU'nun C derleyicisidir. nsan tarafndan okunabilen kaynak kodlarn makina

    tarafndan okunabilen nesne (object) dosyalarna dntrr. C programlama diliyle

    yazlm kaynak kodlar ieren dosyalarn uzantn .c olur. Nesne dosyalarnn adnn

    uzants genellikle .o olur. Derleyici balk (header, uzants .h olan) dosyalarn bulamazsa

    derleme hatas verir.

    make: henz derlenmemi kaynak dosyalarn derleyen yardmc bir programdr.

    make, derleme talimatlarn Makefile adl bir dosyadan alr.

    ld: GNU'nun balayc (linker) programdr. Nesne dosyalarn ve kitaplk denen

    dosyalar birbirine balayarak ortaya altrlabilir bir program dosyas kartr. Genellikle

    Makefile'n iinde linker'n altrlmas talimat bulunur ve sizin bu program kullanmanz

    gerekmez.

    ldconfig : paylalan kitaplk dosyalarn (shared librari) arar. Bu dosyalardan birden

    fazla program tarafndan paylalr, ve dosya adlarnda .so bulunur.

    ./configure : C derleyecisi ve header dosyalarnn nerede olduunu aratrr, ve

    vard sonuca gre Makefiles dosyasnda deiiklik yapar.

    PHP-1 13

  • 8/14/2019 PHP - Hakk cal

    14/163

    /////////////////KUTU BTT///////////////

    PHP, bir Unix/Linux sisteminde mstakil yorumlayc veya Apache Web sunucusunun

    bir modl olarak almak zere derlenebilir. PHP, mstakil yorumlayc olarak

    kurulduunda, Web sunucusu, her ihtiya halinde PHP yorumlaycsnn bir rneinialtrr. Bu, bir sre sonra Web sunucusunun bulunduu iletim sisteminin yknn

    artmasna ve ileyiinde yavalamaya yol aabilir. Oysa PHP, sunucunun bir modl olarak

    kurulduunda, bu saknca ortaya kmaz. (Bu zellii ile PHP, klasik CGI/Perl'n alma

    tarzndan ayrlr, ASP'nin ve ColdFusion'n alma tarzna yaklar.) Bununla birlikte kt

    niyetle veya beceriksizce yazlm PHP programlar modl olarak kurulmu PHP'yi

    kertirlerse, Web sunucusunu da kertmi olurlar; oysa mstakil PHP yorumlayc

    kerse, Web sunucusuna bir ey olmaz.

    Burada yapacamz kurulum ilemi srasnda Linux kurulu olan bilgisayarmza

    Apache Web sunucu programn, bu sunucunun kullanaca gvenli Socket katmann

    salayacak Mod_SSL programn, bu programn gerektirdii OpenSSL aracn, MySQL

    veritaban sunucusunu ve PHP Scripting dilini kurmu olacaz.

    PHP'yi Linux ortamnda Apache Web sunucusuna modl olarak kurmak iin srasyla

    u ilemleri yapmamz gerekir (Sisteminizde gzip veya gunzip ile gcc and GNU make

    kurulu olduunu varsayyorum):

    1. Sisteminizi root olarak balatn ve sktrlm olarak alacanz PHP ve Apache

    dosyalarn geni yer olan geici bir dizinde an, ve o dizine gidin. Szgelimi, Apache'nin

    tar-zip olarak sktrlm kaynak dosyalarnn tmp adl dizinde olduunu varsayalm:

    # cd /tmp

    # gunzip c apache_1.3.12.tar.gz | tar xf

    Burada, indirdiiniz Apache srm farkl ise onun adn yazacaksnz. imdi

    Apache'yi atnz klasre gidin ve buradaki configure dosyasn altrn:

    # cd apache_1.3.12

    # ./configure --prefix=/usr/local/apache

    PHP-1 14

  • 8/14/2019 PHP - Hakk cal

    15/163

    Buradaki rnekte Apache'yi /usr/local/apache dizinine koyduumuza dikkat edin.

    Bu dizini, bir ok kurulumun varsaym olarak arayaca dizin olduu iin tercih ediyoruz.

    Ama isterseniz siz Apache'yi baka dizine de kurabilirsiniz.

    2. Sra MySQL veritaban sunucusunda. Linux'ta root oturumunda iken sktrlmdosyalar indirdiiniz geici dizine gein ve dosyalar an; sonra oluturulan dizine

    giderek, configure komutu ile veritaban srcsn yaplandrn:

    # cd /tmp

    # gunzip -dc mysql-3.22.32.tar.gz | tar xvf -

    # cd mysql-3.22.32

    # configure --prefix=/usr/local/mysql

    imdi make komutu ile binary dosyalarn oluturarak, ve sisteme ykleyelim:

    # make

    # make install

    MySQL'in kullanm izinlerini belirlememiz gerekir. Aadaki komutlar yazarken

    "parola" kelimesi yerine vermek istediiniz parola kelimesini yazmanz gerekir:

    # scripts/mysql_install_db

    # cd /usr/local/mysql/bin

    # ./safe_mysqld &

    # ./mysqladmin -u root password 'parola'

    Kurulum ileminin baarl olup olmadn snamak iin, kurulum srasnda

    oluturlan rnek veritaban dosyalarn bulunup bulunmadn soruturabilir ve kendimiz

    yeni bir veritaban oluturabiliriz. Bunun iin u komutu yazalm:

    # BINDIR/mysqlshow -p

    # mysql -u root -p

    Sistem "Enter password:" karln verdiinde, yukarda kullanm izinlerini

    belirlerken yazdnz parolay yazn; MySQL sunucusu alacak ve size kullanc izinlerinin

    bulunduu "mysql" ve snama amacyla oluturulan "test" adl iki veritabannn

    bulunduunu bildirecektir. imdi kendi veritabanmz oluturalm. MySQL sunucu komut

    istemcisi satrna unu yazn (Bilgisayarn verecei karlklardan ayrt etmek iin kendi

    yazdklarmz koyu renkle gsteriyoruz):

    PHP-1 15

  • 8/14/2019 PHP - Hakk cal

    16/163

    mysql> create database deneme;

    Sunucu "Query OK, 1 row affected (0.00 sec)" eklinde karlk verecektir. imdi

    bu veritabann seerek iinde deneme adl ve iinde "no" ve "isim" adl iki alan bulunan bir

    tablo oluturalm (MySQL komutlar byk harf-kk harf ayrm yapmaz; komutlardan

    sonra noktal virgl konur). Burada koyu renkle gsterilen satrlar ve iaretler bize aittir:

    mysql> use deneme;

    Database changed

    mysql> CREATE TABLE books (

    -> no int(3) not null auto_increment,

    -> isim char(50) not null,

    -> unique(no),

    -> primary key(no)

    -> );

    Query OK, 0 rows affected (0.00 sec)

    Bakalm tablomuz baarl ekilde olumu mu?

    mysql> show tables;

    mysql> describe deneme;

    Field Type Null Key Default Extra

    no int(3) PRI 0 auto_increment

    isim char(50)

    2 rows in set (0.00 sec)ok gzel! Hem MySQL'i kurmu, hem de ilk tablomuzu oluturmu bulunuyoruz.

    MySQL komutlarn daha ayrntl renebilmek iin MySQL'in http://www.mysql.com

    adresindeki sitesini ziyaret edebilirsiniz. imdilik MySQL'den kalm ve kuruluma devam

    edelim.

    3. Sra geldi PHP'ye! PHP kaynak dosyasnn bulunduu geici dizine gein, ve

    dosyalar an; sonra alan dosyalarn bulunduu dizine gidin:

    # gunzip -c PHP-4.0.1pl2.tar.gz | tar xf -

    # cd PHP-4.0.1pl2

    imdi configure dosyasn altracaz; bu komutun bir ok opsiyonu vardr;

    bunlarn tmn grmek istiyorsanz, "configure --help" komutunu verebilirsiniz. Biz

    sadece PHP'ye MySQL ve Apache opsiyonlarn eklemekle yetineceiz:

    PHP-1 16

  • 8/14/2019 PHP - Hakk cal

    17/163

    # ./configure --with-mysql=/usr/local/mysql \

    --with-xml \

    --with-apache=../apache_1.3.12 \

    --enable-track-vars

    Oluan binary dosyalarn program dosyasna evirerek, ykleyelim:# make

    # make install

    Oluan ini dosyasn lib dizinine koplayalm:

    # cp PHP.ini-dist /usr/local/lib/PHP.ini

    PHP.ini dosyasndaki bir ok zellii deitirerek, PHP'nin alma tarzn

    ayarlayabilirsiniz; rnein u satr ekleyerek, PHP'nin azam alma sresini

    arttrabilirsiniz:

    max_execution_time = 60;

    ///////////////KUTU/////////////////////

    Gvenli socket ve Internet Eriimi Katman

    Kuracanz Web sunucusu gerek Internet'e alacaksa, sisteminize Mod_SSL

    yeteneini kazandrmanz gerekir. Bu sistemin rsaref-2.0 adnda bir eki vardr; ancak

    Amerika dnda kurulan Web Sunucularda rsaref-2.0 ekinin kurulmas gerekmez. Apache

    sunucusunu sadece PHP dosyalarnz snamak amacyla kendi bilgisayarnza kuruyorsanz,

    Mod_SSL kurmak art deildir.

    Bu ilemi yapmak zorunda iseniz, nce http://www.openssl.org/ adresinden

    openssl-0.9.1c.tar.gz adl dosyay, http://www.modssl.org/ adresinden de mod_ssl-2.6.5-

    1.3.12.tar.gz dosyasn indirin. Sonra srasyla u ilemleri yapabilirsiniz:

    # gunzip -dc openssl-0.9.5c.tar.gz | tar xvf -

    # cd openssl-0.9.x

    #./config --prefix=/usr/local/ssl \

    -L`pwd`/../rsaref-2.0/local/rsaref -fPIC

    # make

    # make test

    # make install

    # cd ..

    PHP-1 17

  • 8/14/2019 PHP - Hakk cal

    18/163

    imdi Mod_SSL modln Apache ile kullanlacak ekilde kuralm:

    # gunzip -dc mod_ssl-2.6.4-1.3.12.tar.gz |tar xvf -

    # cd

    # ./configure --with-apache=../apache_1.3.12

    # cd ..# cd apache_1.3.12

    # SSL_BASE=../openssl-0.9.x \

    RSA_BASE=../rsaref-2.0/local \

    ./configure \

    --enable-module=ssl \

    --activate-module=src/modules/PHP4/libPHP4.a \

    --enable-module=PHP4 \

    --prefix=/usr/local/apache \

    --enable-shared=ssl

    [...ISS'ler buraya arzu ettikleri dier opsiyonlar ekleyebilirler..]

    # make

    Bu noktada sistem binary dosyalarn oluturulduunu ve kurulumun gerekli

    gvenlik sertifikalarn istediini bildirecektir. Sertifika oluturma konusunda fazla bilgi iin,

    http://www.modssl.org/docs/2.6/ssl_faq.html#ToC25 adresine bakabilirsiniz.) Diyelim ki

    sadece ISS'in yeri, firma ad ve bir iki dier bilgiden oluan zel bir sertifika oluturmakla

    yetineceksiniz. Bunun iin u komutu girin ve sistemin soraca sorulara cevap verin:# make certificate TYPE=custom

    imdi Apache'yi yeniden kurabiliriz:

    # make install

    Herey yolunda gittiyse, sistem "You now have successfully built and installed the

    Apache 1.3 HTTP server," eklinde balayan uzun bir mesaj verecektir. Bu durumda

    Apache sunucusu u komutla balatlabilir:

    /usr/local/apache/bin/apachectl start

    Apache'yi gvenli iletiim katman destei ile balatmak istiyorsanz u komutu

    yazn:

    /usr/local/apache/bin/apachectl startssl

    //////////////////////KUTU BITTI/////////////////

    PHP-1 18

  • 8/14/2019 PHP - Hakk cal

    19/163

    Bu ilemleri baaryla bitirmi olsak bile sistemin altn kontrol etmemiz gerekir.

    nce Apache'nin altndan emin olalm. Bunun iin nce Apache'nin yaplandrlmasna

    PHP'nun eklendiinden emin olmamz gerekir. Kurulumu buradaki gibi yapt iseniz

    /usr/local/apache/conf dizininde bulunan httpd.conf dosyasn an; ve "addtype for PHP4"satrlarn nndeki yorum (#) iaretlerini kaldrn; yani bu satr yorum olmaktan kp

    yaplandrma komutu olsun:

    #AddType application/x-httpd-PHP .PHP

    #AddType application/x-httpd-PHP-source .PHPs

    eklindeki satrlar u ekle getirin:

    AddType application/x-httpd-PHP .PHP

    AddType application/x-httpd-PHP-source .PHPs

    imdi Apache sunucusunu altrabilir ve PHP desteinin bulunup bulunmadn

    snayabilirsiniz:

    # cd /usr/local/apache/bin

    # ./apachectl configtest

    Syntax OK

    # ./apachectl start

    ./apachectl start: httpd started

    "httpd started" ifadesi bize Apache'nin altn gsteriyor. imdi Browser'nz anve HTTP sunucusu olarak Apache'nin adresini yazn. Bu, bilgisayarnzn Domain addr;

    Apache'nin kurulu olduu bilgisayarn IP numarasn da yazabilirsiniz.

    imdi, bir dzyaz dosyasna unlar yazn:

    Dosyay PHP.PHP adyla Apache'nin Web sunucu iin kk dizin sayd klasre

    kaydedin. Browser'nzn URL adresi alanna sunucu adyla birlikte dosyann adn yazn.

    Aldnz sonu, PHP'nin sistem ve sunucu hakknda ayrntl raporu ise, kendi

    kendinizi kutlayabilirsiniz: hem Apache sunucu, hem de PHP alyor!

    PHP-1 19

  • 8/14/2019 PHP - Hakk cal

    20/163

    Windows-PWS ve IIS

    PHP'yi Windows 95/98/NT/2000 iletim sistemlerinden biri ile alan bilgisayara

    kurmak iin nce http://www.PHP.org adresinden PHP-4.0.1pl2-Win32.zip veya daha ileri

    srmdeki zip dosyasn almamz gerekir. Bu dosyay an ve iindekileri szgelimi c:\PHPdizinine kopyalayn. (Dizini olutururken "PHP," "PHP" veya "PHP" yazdnza dikkat edin!)

    Daha nce Wihdows sistemine PHP 3.x kurmu olanlar PHP 4.0'n kurulumumu

    biraz farkl bulacaklardr. Bu, daha nce PHP kiisel ve Internet amal Web sunucuda (PWS

    veya IIS) mstakil bir CGI program olarak alrken imdi buna ek olarak (tpk ASP gibi)

    DLL yoluyla, bir ISAPI modl olarak almasnn salanm olmasndan kaynaklanyor.

    PHP'yi Windows 95 veya NT4.0 sisteminde kurulu bir PWS veya IIS iin

    kuracaksnz, nce baz nlemler almanz gerekiyor. NT 4.0 sistemlerinde IIS 4.0'n

    bulunduu Option Pack'in kurulmas art. Windows 95 sistemlerinde ise nce DCOM

    bileenlerinin gnceletirilmesi gerekiyor. Bu dosyay,

    http://download.microsoft.com/msdownload/dcom/95/x86/en/dcom95.exe adresinden

    alabilirsiniz.

    PHP'yi mstakil alan CGI program olarak kullanmay dnseniz bile daha nceki

    srmlerinden farkl olarak baz DLL dosyalarnn Windows dizininde sistem alt-dizinine

    kopyalanmas gerekir. Atnz Zip dosyasndan kan ve C:\PHP dizinine kopyaladnz

    dosyalar arasnda bulunan MSVCRT.DLL ve PHP4TS.DLL adl dosyalar Windows 9x

    sistemlerinde WINDOWS dizininde SYSTEM, NT/2000'de ise WINNT dzininde SYSTEM32

    dizinine kopya edin. (Windows, MSVCRT.DLL dosyasnn kullanlmakta olduu bildirerek,

    kopyalamay reddederse, kopyalamaya gerek yok demektir.)

    I I S 4 . 0 V E 5 . 0

    Windows NT/2000'e kurulu olan IIS 4.0 veya 5.0'e PHP destei kazandrmak iin,

    nce yukardaki gibi DLL dosyalarn gerekli yere kopyalayn. Atnz Zip dosyasndan

    km olan PHP.ini-dist isimli dz yaz dosyasn Notepad ile an ve "extension_dir="

    satrn bularak, karsndaki "./" yazsn silip yerine PHP dosyalarn kopyaladnz dizinin

    PHP-1 20

  • 8/14/2019 PHP - Hakk cal

    21/163

    adn (rnein C:\PHP) yazn. PHP dizinin adn doru yazdnz kontrol etmekte daima

    yarar vardr! Sonra ";browscap =" satrn bulun ve nndeki noktal virgl kaldrarak

    karsndaki "extra/browscap.ini" kelimelerini c:\Winnt\browscap.ini olarak deitirin. Bu

    dosyay, PHP.ini adyla Winnt dizinine kaydedin. (Windows dizininin Winnt adn tadnvarsayyorum. Sizin Windows dizininiz baka ise, gerekli dzeltmeyi yapmanz gerekir.)

    ////////////////KUTU///////////////

    Browser Yetenek Dosyas: Browscap.ini

    Windows sistemine kurulu bir Web Sunucu programna (PWS, IIS veya Apache

    Win32) PHP yetenei kazandrabilmek iin PHP'nin talep sahibi Browser'n yeteneklerini bir

    dosyadan okumas gerekir. Bu dosyann ad browscap.ini dir.

    Internet'te http://asptracker.com/browscap.zip dosyasn alarak an ve kacak

    "browscap.txt" dosyasnn adn "browscap.ini" olarak deitirerek Windows/Winnt

    klasrne kopyalayn.

    //////////////////KUTU BTT/////////////

    Internet Services Manager' an; bu ara, NT 4.0'te Start mensnde

    Programs/Option Pack'te, 2000'de ise Control Panel/Administrative Tools'dadr. Alacak

    pencerede muhtemelen Default Web Server adn tayan Web sunucusunun adn sa

    tklayn:

    Alan listede Properties maddesini; alan kutuda Home Directory sekmesini sein;

    Configuration dmesini tklayn ve yeni bir Application Mappings satr eklemek zere,

    Executable kutusuna PHP4isapi.dll dosyasnn tam yolunu ve adn (rnein C:\PHP\

    PHP4isapi.dll); Extension kutusuna ise .PHP yazn (IIS 4.0'te Method exclusions kutusunu

    bo brakn) ve Script engine kutusuna iaret koyun.

    PHP-1 21

  • 8/14/2019 PHP - Hakk cal

    22/163

    ISAPI Filters sekmesini sein. Add dmesini tklayarak yeni bir ISAPI filtresi kayd

    yapn. Alacak kutuda filtre ad olarak PHP, yol olarak da PHP4isapi.dll dosyasnn

    bulunduu dizinin yolunu (rnein C:\PHP\ PHP4isapi.dll) yazn.

    IIS'i tamamen durdurun; ama bunun iin sadece Internet Services Manager'daki

    Stop dmesini tklamak yetmez; komut istemci (MSDOS Prompt) penceresinde net stop

    iisadmin yazn. Windows, bu servisin bal olduu dier baz hizmetlerin de durdurulacan

    bildirince "Y" yazn ve Enter'a basn. imdi IIS'i tekrar balatmak iin ayn pencerede net

    start w3svc yazn. Artk IIS'iniz PHP anlar hale gelmi olmal. Bunu, hemen snayalm.

    Notepad veya bir baka dzyaz programyla unlar yazn:

    Dosyay PHP.PHP adyla IIS'in kk dizin sayd klasre kaydedin. Browser'nzn URL

    adresi alanna sunucu adyla birlikte dosyann adn yazn.

    Bravo! te yeni bir dil renmi Web sunucuya sahip oldunuz.

    P W S 4 . 0

    Windows'un 95/98/SE/Me trlerine kiisel Web sunucu program olarak Personal

    Web Server (PWS 4.0) kurulmaldr. PHP Zip dosyasndan kacak DLL'leri Windows

    dizininde System klasrne kopyaladktan sonra, Zip dosyasndan km olan PHP.ini-dist

    isimli dzyaz dosyasn Notepad ile an ve "extension_dir=" satrn bularak, karsndaki

    "./" yazsn silip yerine PHP dosyalarn kopyaladnz dizinin adn (rnein C:\PHP) yazn.

    PHP dizinin adn doru yazdnz kontrol edin! Sonra ";browscap =" satrn bulun ve

    nndeki noktal virgl kaldrarak karsndaki "extra/browscap.ini" kelimelerinic:\Windows\browscap.ini olarak deitirin. Bu dosyay, PHP.ini adyla Windows dizinine

    kaydedin. Daha nceki sayfalarda greceiniz ekilde Browscap.ini dosyasnn dosyasn

    Windows dizinine kopyalam olmanz gerekir. (Windows dizininin Windows adn tadn

    varsayyorum. Sizin Windows dizininiz baka ise, gerekli dzeltmeyi yapabilirsiniz.)

    PHP-1 22

  • 8/14/2019 PHP - Hakk cal

    23/163

    imdi, atnz PHP Zip dosyasnn iinden kan PWS-PHP4.reg adl dosyay bir

    dzyaz programyla, rnein Notepad ile an. ".PHP"="[PUT PATH HERE]\\PHP4isapi.dll"

    yazl satr PHP dosyalarn koyduunuz dizine gre, rnein yle deitirin:

    ".PHP" = "C:\\PHP\\PHP4isapi.dll"Burada ok dikkat etmeniz gereken nokta, ters-bl iaretlerinin baka yerlerde

    normal olarak yazdmz gibi bir adet deil, iki adet olmasdr. Dosyay kaydettikten sonra,

    iki kere tklayn ve Windows'un Registry'de deiiklik yapmay isteyip, istemediinize ilikin

    sorusuna Evet yantn verin. Tamaam! Sizin de PHP bilen bir PWS'iniz oldu. Ama bunu bir

    snayalm. Ve bunu bir Merhaba Dnya program ile yapalm ki, gelenek bozulmasn!

    Dzyaz programnzla u metni merhaba.PHP adyla PWS'in Web iin kk dizin

    sayd (muhtemelen C:\Inetpub\wwwroot) klasre kaydedin:

    Sonra Personal Web Manager kutusunda, Ana balkl blmde, Yaymlama

    ksmndaki "http://" diye balayan ve kiisel Web sunucunuzun ad ile devam eden

    kpry tklayn. Varsaylan Browser'nz, kiisel Web sunucunuzun ana sayfasn aacaktr.

    Browser'n URL adres blmne, merhaba.PHP yazn ve klavyede Enter tuuna basn. Eer

    gerekten PWS'iniz, PHP renmise, size ve dnyaya merhaba diyecektir.

    ///////////////////////KUTU///////////

    Windows'da Apache!

    NT sisteminizde ISS deil de Apache for Win 32 Web Server programn

    altryorsanz, srmne gre httpd.conf veya srm.conf dosyasna u ekleri yapmanz

    gerekir:

    ScriptAlias /PHP3/"c:/path-to-PHP-dir/"

    PHP-1 23

  • 8/14/2019 PHP - Hakk cal

    24/163

    AddType application/x-httpd-PHP3 .PHP3

    Action application/x-httpd-PHP3"/PHP3/PHP.exe"

    ////////////////////////KUTU BTT//////////

    Windows'da MySQLPHP, Windows ortamnda, Windows'un ODBC srclerini kullanarak, srcs

    bulunan btn veritabanlarna ulaabilir. Ancak Windows ortamnda gelitirseniz bile, Web

    sitenizi, Unix tabanl ve ODBC-uyumlu olmayan bir sunucuya gnderebilirsiniz. Bu

    durumda sayfalarnzda kullanacanz verileri muhtemelen MySQL araclyla

    veritabanndan ekeceksiniz demektir. Bu yzden Windows sisteminize MySQL kurmak ve

    veritabanlarn bu arala gelitirmeniz yerinde olur. Unix/Linux ortamnda cretsiz olmakla

    birlikte MySQL, Windows iin bedeli paylaml (shareware) olarak edinilebilir. Benioku

    dosyasnda belirtildiine gre, program eitim amacyla ve 30 gn amamak kaydyla

    kullanyorsanz, cret denmesi gerekmiyor. Dier durumlarda TCX firmasnn Internet'te

    http://www.tcx.se adresindeki sitesindeki formlar doldurarak lisans alnmas gerekiyor. Bu

    program, MySQL'in http://www.mysql.com/downloads/ adresinden edinebilirsiniz. Bu

    adresteki mysql-shareware-3.22.34-win.zip dosyasn alarak, bir geici dizinde an.

    (Sisteminiz gerek Internet sunucusu olarak ticar amal hizmet salayacaksa u dosyay

    almanz gerekir: http://www.mysql.com/Downloads/MySQL-3.23/mysql-3.23.21-win-

    src.zip) Shareware srmn ieren dosyay atnzda ortaya kacak setup.exe program

    MySQL'i kuracaktr.

    MySQL Server'n Windows'da da tpk Linux'ta olduu gibi altrlmas ve

    durdurulmas gerekir. MySQL'in paylam srmn kullanmak iin Windows sistemlerinde

    mysqld-shareware.exe programn altrmanz gerekir. DOS komut istemcisini an ve"C:/mysql/bin" dizinine giderek, srasyla u komutlar verin:

    mysqld-shareware

    mysqlshow

    mysqlshow -u root mysql

    PHP-1 24

  • 8/14/2019 PHP - Hakk cal

    25/163

    mysqladmin version status proc

    imdi MySQL server alyor ve biraz sonra PHP yoluyla kiisel Web Server'nza

    hizmet vermeye hazr demektir. Bu komutlar icra ettiiniz srada bir hata mesaj ile

    karalarsanz, MySQL'in kuruluunda hata yapm olabilirsiniz. DOS ekrarnda test veMySQLl veri tabanlarnn varln ve hizmete girdiini gsteren mesajlar grrseniz,

    MySQL gzelce alyor demektir. Bunu bir de Browser ile ve PHP yoluyla snayalm:

    Yukarda IIS'e PHP destei kazandrma almalar srasnda oluturmad iseniz, dz

    yaz programnzda u tek satr yazn; php.php adyla, kiisel Web'inizin kk dizinine

    kaydedin:

    Browser'nz an; URL hanesine rnein http://localhost/PHP.PHP3 yazn. Alacak

    sayfada iki eye dikkat edin: MySQL ve ODBC blmleri var m? MySQL blm varsa;

    kendinizi yeniden kutlayn! ODBC blm yoksa, muhtemelen sisteminizde Microsoft'un

    Open Database Connectivity (Ak Veriban Balants) srcleri kurulu deil demektir.

    (Windows'da Denetim Masas'nda ODBC simgesini grmyorsanz, MS'un sitesinden gerekli

    kur programn indirmeniz gerekebilir. Linux'ta ise MyODBC program ile bu imkan

    kazanabilirsiniz.)

    Bir kere daha tekrar etmek gerekirse, PHP ile veritabanna dayanan sayfalar

    yapmak iin mutlaka ve sadece MySQL srclerini kullanmak gerekmez. Bunun yerine

    MS'un ODBC srclerini kullanabilirsiniz. Ancak Web sitenize evsahiplii yapan firmann

    size ODBC destei verip vermediini renmeniz gerekir. Aslnda ayn ekilde, evsahibi

    firmann MySQL destei verip vermediini de renmek zorundasnz. (PHP ile MS-ODBCsrclerini kullanabilmek iin Andrew Stopford'un ASPToday sitesindeki

    http://www.asptoday.com/articles/20000202.htm yazsnda geni bilgi bulabilirsiniz.)

    Gemi olsun. Bana sorarsanz, PHP ile dolu yeni bir hayata balamak iin en

    nemli adm attnz. Bundan sonras, sadece PHP dilini renmekten ibaret. Dilin

    PHP-1 25

  • 8/14/2019 PHP - Hakk cal

    26/163

    retecilerinden Zeev Suraski, bu yln banda srail'de yaplan ilk uluslararas PHP

    Konferans'nda "PHP renmek zor mu?" diye soran bir bilgisayar meraklsna u cevab

    veriyordu: "Bir haftadan fazla zaman ayrmanz gerekiyorsa, sizin iin zor demektir!"

    PHP-1 26

  • 8/14/2019 PHP - Hakk cal

    27/163

    PHP Dili

    PHP bir Script dilidir; PHP ile yazdnz "programlar" birer dzyaz dosyasdr. Dil

    gelerini ayrntl olarak ele almadan nce bir iki yazm kuralndan sz edelim.

    PHP yorumlaycs, bu "program" altrabilmek iin dosyann iinde PHP

    komutlarn arar. PHP komutlar birinci blmde grdmz gibi iki ekilde yazlabilir:

    1.

    2.

    Bunlara PHP komut ayrac denir; birinci tr uzun veya standart ayra saylr;

    ikincisine ike "ksa ayra" denir. PHP yorumlaycsnn ksa ayra kullanmasn istemiyorsak,

    PHP.ini dosyasndaki, short_open_tag = On: satrn short_open_tag = Off; yapmak yeter.

    Bununla birlikte uzun vadede, PHP programlarnzda HTML yerine XML kullanmak

    istiyorsanz, imdiden elinizi uzun ayraca altrmanz yerinde olur; nk XML etiketleri

    "" eklinde biter.

    ASP ile alan Web programclar "

  • 8/14/2019 PHP - Hakk cal

    28/163

    Web sunucusunda bu program aarsanz, ayn sonucu aldnz greceksiniz.

    Burada bir yanl anlamaya yol amayalm. Javascript veya VBScript gibi HTML kodlarnn

    iine gmdmz ve HTML sayfasnn iinde, Web ziyaretimizin bilgisayarna gnderilen

    ve orada (istemci-tarafndan) icra edilen ve yine ayn ekilde SCRIPT> etiketi iine

    koyduumuz Script kodlar ile burada etiketi ile ifad eettiimiz PHP kodlarnn

    icra yerini kartrmayalm. PHP, nasl bir ayra ve etiket ile yazarsak yazalm, daima

    sunucuda altrlar ve ziyaretiye asla PHP kodlar gsterillmez. merhaba2.PHP'nin

    alt Browser'da kayna grntlersek, istemciye gelen kodlarn saf-ve-temiz HTML

    olduunu greceiz.

    PHP kodlarmz, oluturulmasn istediimiz sayfann HTML kodlar ile tabir yerinde

    ise iie yazlr. Bunun bir rnei olarak yukardaki dosyay yle deitirerek,

    merhaba3.adyla kaydedin:

    PHP ile Merhaba

    Sayfamzn grntsnde hi bir deiiklik olmamakla birlikte, Browser'a giden

    HTML kodlar nemli lde deimi olacaktr.

    PHP-1 28

  • 8/14/2019 PHP - Hakk cal

    29/163

    Geri burada henz ihtiyacmz yok; nk bir bakta yazdmz kodun marifetini

    anlayabiliyoruz; ama cidd PHP programclna baladmz zaman, hangi satrda neye

    niyet ettiimi anlamamz daima mmkn olmayabilir. Biz kendi programmz satr satr

    ezberlesek bile, ibirlii yaptmz dier Web programclarnn programmz anlamalarnsalamamz gerekir. Bunu, yorum satrlar ile yapabiliriz. PHP ayralar iinde iki trl

    yorum bulunabilir: ok-satrl yorumlar ve tek satrl yorumlar. Birinci grubu, bana "/*" ve

    sonuna "*/* iaretleri koyarak, ikinci grubu ise sadece bana *//* iareti koyarak

    belirtiriz:

    Bunu da PHP yorumcusu asla dikkate almaz

    Buraya istediimiz kadar yorum yazabiliriz.

    */

    print "Merhaba Dnya!";

    // Bu ise PHP'nin tek satrl yorum blm

    // Bu satrlar da PHP yorumcusu dikkate almayacaktr.

    ?>

    PHP-1 29

  • 8/14/2019 PHP - Hakk cal

    30/163

    PHP'rir bir dier yorum iareti ise # (Diyez) iaretidir. Bu iaretin banda olrduu

    satr da PHP tarafndan dikkate alnmaz:

  • 8/14/2019 PHP - Hakk cal

    31/163

    PHP'nin Yap Talar

    PHP, bir programlama dili olarak, deikenler, deikenlerin deerleriyle bir ilemyapmay salayan ilemciler, ilemcilerle oluturulan deyimler ve nihayet bunlarn tmn

    toplu olarak kullanmamz salayan ilevlere (fonksiyonlara) sahiptir. PHP, nesne-ynelimli

    (object-oriented) bir dil olduu iin, nesne oluturma imkanna ve bunlarn kullanlmasn

    salayan metodlara da sahiptir. Btn bu imkanlar kullanarak, PHP ile bir veritabanndan

    veri alarak, bunlar HTML etiketlerinin deerleri olarak kullanabiliriz; Web sitemizi ziyaret

    eden kiilerden bilgi alabiliriz, bu bilgilerle ilemler yapabiliriz. PHP'nin eitli komutlarn,

    deyimlerini ve fonksiyonlarn kullanarak, programmzn alt Web sunucusunun

    bulunduu bilgisayara da eitli dosya ilemleri yaptrabiliriz.

    ////////////////KUTU///////////

    PHP programn durdurmak

    imdi belki PHP'yi durdurmay hi dnmyorsunuz; ama ilerde bir fonksiyonun

    verecei sonucun btn programn durdurulmasn gerektii zamanlar olabilir. PHP'nin

    resm el kitabna bile ilk basksnda konulmas unutulmu olan program durdurma komutu,

    exit kelimesidir; hi bir parametre almadan alr.

    //////////////////KUTU BTT///////////

    Bu tr karmak uygulamalara geebilmek iin nce, PHP dilinin unsurlarn biraz

    yakndan inceleyelim.

    Deikenler

    Programclkta ilemlerimizi deikenlerle yaparz. Deikeni bir kap gibi

    dnebilirsiniz. Szgelimi "Gn," deikenin ad ise bu deikenin deeri Pazar, Pazartesi,

    Sal, vd., olabilir. Her deiken, trne gre, ya bir ya da daha fazla deer tutar. Adndan

    PHP-1 31

  • 8/14/2019 PHP - Hakk cal

    32/163

    da anlalaca gibi deikenin deeri deiir! Bu deiiklii biz yapabiliriz; programn

    kendisi yapabilir.

    PHP'de de, bir ok baka bilgisayar programlama dilinde olduu gibi deikenlerin

    iine bir deer konmadan nce tanmlanmas mmkndr; fakat gerekli deildir.Deikenleri adnn nne $ iareti koyarak tanmlarz:

    $adi;

    $soyadi;

    $123;

    $sevdigiRenk;

    Deikenler, harf, rakam veya alt izgi (_) ile balayabilirler; bu karakterleri

    ierebilirler; ama iinde boluk veya dier iaretler bulunamaz. PHP deikenleri her trl

    deiken tutabilirler: bir deikenin adnn yazl ekli onun tutabilecei deerin niteliini

    belirlemez. Dolaysyla, "$adi" deikenin deeri "Reit" da olabilir, "1255" de olabilir.

    PHP'de genellikle deikenleri deerini atayarak belirleriz:

    $adi = "Reit";

    $soyadi = "Glen";

    $123 = 123;

    $sevdigiRenk = "yeil";

    Deikenler, kullanldklar ileme, tadklar deeri verirler:print $adi;

    komutu, eer deeri "Reit" ise "Browser penceresine "Reit" kelimesini yazdrr.

    PHP'de zel bir deikene deiken ad olarak kullanlacak deerleri de atayabiliriz:

    $adi = "Reit";

    $degisken = "adi";

    print $$degisken;

    Burada Browser penceresine yine "Reit" kelimesi yazlacaktr; nk PHP

    $degisken adl deikenin "adi" adl deikeni tuttuunu bilecek ve iki Dolar iaretini

    grnce, $degisken'in deerini deil, onun tuttuu deikenin deerini yazacaktr. Bu, size

    u anda kark grnebilir. Daha sonra dngleri grdmzde bu teknii bir satrlk kod

    ile yzlerce deeri yazdrmakta kullanacaz. Bu teknik yle de kullanlabilir:

    PHP-1 32

  • 8/14/2019 PHP - Hakk cal

    33/163

    $degisken = "adi";

    $$degisken = "Reit";

    print "$adi";

    print $$degisken;

    print "${$degisken}";

    print "${'adi'}";

    Buradaki drt "print" komutu da Browser'a "Reit" kelimesini yazdracaktr.

    PHP'de bir deikenin tuttuu deer, bir baka deikene atanabilir. Bu ya duragan,

    ya da dinamik olarak yaplr. Duragan yntemde:

    $birinci_degisken = "Nurcan";

    $ikinci_degisken = $birinci_degisken;

    $birinci_degisken = "Tlay";

    print $ikinci_degisken;Buradaki "print" komutu Browser penceresine "Reit" kelimesini yazdracaktr. ki

    deiken arasndaki deer al-verii birinci deikenin tuttuu deeri deitirmeden nce

    olduu iin, ikinci deiken birinci deikenin ilk deerini alm oldu. Fakat kimi zaman iki

    deiken arasndaki deer al-verii srekli (dinamik) olsun isteriz. PHP, buna, ilk atama

    srasnda & iareti kullanrsak izin verir:

    $birinci_degisken = "Nurcan";

    $ikinci_degisken = &$birinci_degisken;

    $birinci_degisken = "Tlay";

    print $ikinci_degisken;

    Buradaki "print" komutu ise Browser penceresine "Tlay" kelimesini yazdracaktr.

    nk iki deiken arasndaki deer al-verii birinci deikenin tuttuu deeri

    deitirmeden nce halde, ikinci deikene birinci deikenin deerini dinamik olarak

    atam olduk. Atama ilemi srasnda & iareti kullandmz iin, birinci deikenin deeri

    deitiinde ikinci deikenin de deeri deiecektir.

    Veri Trleri

    PHP, deikenlere, tuttuklar deere gre farkl bellek alan tahsis eder; bu

    bakmdan verilerimizin tr etkin bir programclk asndan nem tar. Ayrca PHP, dier

    PHP-1 33

  • 8/14/2019 PHP - Hakk cal

    34/163

    btn programlama dilleri gibi belirli veri trleri ile belirli ilemleri yapar veya yapamaz.

    rnein, ancak iki say arasnda aritmedik toplama yaplabilir. ki metin tutan deiken

    aritmetik olarak toplanamaz; ancak ierdikleri deerler ardarda eklenebilir. Ne var ki, PHP

    sizin aritmetik toplama m, yoksa ardarda ekleme mi yapmak istediinizi bilmekdurumunda deildir. (PHP'ye 'muazzam dil' dedik; iinde yapay zek var demedik!)

    Dolaysyla deerleri 5 ile 6 olan iki deikeni topladnz zaman ortaya 11 yerine 56

    karsa, kabahati PHP'de deil, deikenlere veri atayan kiide (byk bir ihtimalle

    kendinizde) aramalsnz.

    PHP asndan dnyada alt tr deer vardr:

    Tamsay (Integer): 5,124, 9834 gibi

    ift (Double): 3,567 gibi

    Alfanmerik (String): "Reit" gibi

    Mantksal (Boolean): doru (true)/yanl (false) gibi

    Nesne (Object)

    Dizi (Array)

    Baz uzmanlara gre, gerekte PHP'de mantksal (boolean) deiken tr yoktur. B

    kannn sebebi, PHP'nin true (doru) ya da false (yanl) olarak atadmz deerleri 1 ve

    bo/null deerlere evirmesi, mantksal olarak sorgulandnda 0 dndaki tam ve ondalk

    deikenleri TRUE, 0' FALSE saymas, ve bo alfanmerik deikenleri FALSE, dolu

    alfanmerik deikenleri ise TRUE olarak deerlendirmesidir. Ancak daha sonra

    gereceimiz gibi PHP, Mantksal/Boolean adnda bir deiken deitirme fonksiyonuna

    sahiptir ve bu tr deikenlerin tr sorulduunda "boolean" karln verir.

    Tr Deitirme

    Deikenlere atadmz deerlerinin trlerini genellikle biliriz; ama yzlerce

    deikenle uratmz bir Web programnda deiken trn unutmak ok kolaydr. Kimi

    zaman da deikenlere program yoluyla deer atarz; baka bir deyile programmz baz

    deikenleri kendisi oluturabilir, ve bunlara kendisi deer atayabilir. Bu tr program

    PHP-1 34

  • 8/14/2019 PHP - Hakk cal

    35/163

    yoluyla atanan deerlerin de trnde kukuya kapldmz anlar olabilir. Bir deikenin

    deerinin tr hakknda kukunuz varsa, en emin yol bunu PHP'nin kendisine sormaktr. Bu

    sorgulamay gettype() fonksiyonu ile yaparz.

    /////////////////KUTU/////////

    Fonksiyon

    PHP'nin gettype() ve print() gibi, kendi iinde bulunan kullanlmaya hazr bir ok

    fonksiyonu vardr. Daha sonra kendi fonksiyonlarmz yazmann yollarn da greceiz.

    Programclk dilinde ister dile ait olsun, ister kendimiz yazm olalm, bir fonksiyonu

    kullanmaya "fonksiyon arma" denir. Fonksiyonlar da fonksiyon arabilirler. arlan bir

    fonksiyon ya kendisinden beklenen ii yapar, ya da kendisini aran ileme veyafonksiyonu bir deer sunar. Buna fonksiyondan dnen deer denir.

    ////////////////////KUTU BTT///////////

    imdi, bir PHP program yazalm, bir takm deikenlere deerler atayalm ve

    bunlarn trlerini PHP'ye soralm. Bir dzyaz program ile u metni yazn ve turler.php

    adyla kaydedin:

    PHP'de Degisken Turleri

  • 8/14/2019 PHP - Hakk cal

    36/163

    print gettype( $sayi ) ; //tamsayi/integer

    print "
    ";

    print "
    ";

    $alfanumerik = "Reit";

    print "kinci deikenin ad: \$alfanumerik
    ";

    print "Deeri : ";

    print "$alfanumerik
    ";

    print("Tr : ");

    print gettype( $alfanumerik ) ; //alfanmerik/string

    print "
    ";

    print "
    ";

    $ondalik = 5.1234;print "nc deikenin ad: \$ondalik
    ";

    print "Deeri : ";

    print "$ondalik
    ";

    print("Tr : ");

    print gettype( $ondalik ) ; //ift,ondalk/double

    print "
    ";

    print "
    ";

    $mantiksal = true;print "nc deikenin ad: \$mantiksal
    ";

    print "Deeri : ";

    print "$mantiksal
    ";

    print("Tr : ");

    print gettype( $mantiksal ) ; //mantksal/boolean

    print "
    ";

    print "
    ";

    ?>

    Bu program altmzda karmza yle bir grntnn gelmesi gerekir:

    PHP-1 36

  • 8/14/2019 PHP - Hakk cal

    37/163

    Burada mantksal (boolean) deer olarak doru anlamna true deeri atadmz

    halde, PHP'nin bu deikenin deeri olarak 1'i gsterdiine dikkat edin. PHP'de bir

    fonksiyon, elde ettii deer doru ise sonu olarak 1 deerini verir. (Yanl/false deerinin

    neye evrildiini bulabilir misiniz?) ///////////////KUTU//////////

    Escape

    turler.php dosyasn yazdysanz, u satrdaki, ters-bl iareti dikkatinizden

    kamam olmal:

    print "kinci deikenin ad: \$alfanumerik
    ";

    Daha nce grdk ki, tek veya ift trnak iine de alsak, PHP, bir deiken adn

    grd zaman onun yerine o deikenin tuttuu deeri yazar. PHP bunu, deiken adnn

    bandaki $ grerek yaparak. $ iareti gibi PHP iin zel anlam olan iaretlerin

    anlamlandrlmasn nlemek ve bu iaretleri dz metin saymasn salamak iin bu

    iaretlerin nne ters-bl iareti koyarz. Buna o karakteri kurtarma veya ESCaping denir.

    PHP'nin anlaml iaretleri ve bunlarn ESCape-yazl yledir:

    \' Tek trnak

    \" ift trnak

    \\ Ters-bl

    \$ Dolar iareti

    \n Yeni Satr (New Line)

    \r Satr Ba (Return)

    \t Sekme (Tab) karakteri

    ///////////////////////////KUTU////////////////

    Kimi zaman bir deikene atadmz deerin trn deitirmek gerekir. Bunu

    settype() fonksiyonu ile yaparz. Elimizde byle bir imkan var diye, bir deikenin

    alfanmerik (String) olan deerini sayya evirebileceini sanmayn. PHP buna ok kzar!

    u rnei de tur_degistir.php adyla kaydedelim:

    PHP-1 37

  • 8/14/2019 PHP - Hakk cal

    38/163

    PHP'de Degisken Turleri

  • 8/14/2019 PHP - Hakk cal

    39/163

    settype( $degisken, double ); //ift,ondalk/double

    print "Deeri : ";

    print "$degisken
    ";

    print("Tr : ");

    print gettype( $degisken ) ; //ift,ondalk/double

    print "
    ";

    print "
    ";

    print "Drdnc deitirme ilemi: Mantksal/Boolean:
    ";

    settype( $degisken, boolean ); // Mantksal/Boolean

    print "Deeri : ";

    print "$degisken
    ";

    print("Tr : ");

    print gettype( $degisken ) ; // Mantksal/Booleanprint "
    ";

    print "
    ";

    ?>

    Bu program altrdmzda, ilk atadmz deerin ondalk/double olarak

    belirlendiine dikkat edin. Bu deerin trn alfanmerik/string olarak deitirdiimizde

    deimediini gryoruz. Fakat tamsay/integer'a evirdiimizde PHP deerin tamsay

    blmn alyor; ondalk-kesir blmn atyor. Nitekim daha sonra deikerin trn

    yeniden ondalk yaptmz halde, atlan bu blm geri gelmiyor. Son olarak deikeni

    mantksal ifade olarak deitirdiimizde, deerin doru/true olduunu anlyoruz; deer

    olarak bize 1 dnyor. PHP, sfr dndaki tm deerleri doru/true'ya evirir; sfr' ise

    yanl/false olarak atar ve bo/null deer verir.

    u anda PHP'yi tam bilemediimiz iin nerede kullanlr kestiremiyoruz, ama diyelim

    ki burada olduu gibi, deikeni bir daha dzelmeyecek ekilde deiiklie uratmak

    istemeyebiliriz; fakat yine de deerinin trn deitirmek isteyebiliriz. Bunu da nerede

    PHP-1 39

  • 8/14/2019 PHP - Hakk cal

    40/163

    kullanabiliriz, u anda bilmiyoruz. Ama diyelim ki, byle bir ilem yapmaya ihtiyacmz

    oldu! Hatrlyor musunuz, biraz nce zel bir ekilde bir deikene baka bir deikenin

    adn deer olarak vererek, aslnda bu deikenin ilk deikenin deerini almasn

    salamtk. Burada da ayn teknii kullanabiliriz. Bu kodu da tur_kopyala.php adylakaydedin:

    PHP'de Degisken Turleri Kopyalama (Casting)

  • 8/14/2019 PHP - Hakk cal

    41/163

  • 8/14/2019 PHP - Hakk cal

    42/163

    $degisken adl deikenin deeri deimeden durduu iin nc admda

    yptmz ondalk tr olarak kopyalama sonucu yeni deikenin deeri yine kesiri ile

    karmza kyor. ////////////////KUTU///////////

    Drt yararl fonksiyon

    PHP'de deiken deer tr deitirmekte kullanabileceimiz kullanlmaya hazr

    fonksiyon vardr. ilerde dngleri ele aldmzda daha ok anlam kazanacak olan bu

    deikenleri imdilik bir kenara kaydedin:

    isset() ve unset()PHP, bir deiken tanmland anda, sanki iinde deer varm gibi, bilgisayarn

    belleinde yer ayrr. Bu bazen bilgisayarn kt kaynaklarn zorlayabilir. isset() fnksiyonu,

    PHP'nin bir deikenin iinde deer bulunup bulunmadn snamasn salar. unset() ise

    varolan bir deikeni yok eder. Bu iki fonksiyonu birlikte kullanabiliriz ve bo deikenleri

    yok ederek, bilgisayarn belliinde yer aabiliriz:

    if (isset($bir_degisken)) {

    print( $bir_degisken );

    }

    else {

    unset($bir_degisken);

    }

    Bu kod paras, $bir_degisken isimli dikenin ii bo deise, ieriini

    grntleyecek, ii bo ise varlna son verecektir.

    empty()

    isset() fonksiyonun tersi ileve sahiptir; bir deikene deer atanmamsa, veya

    deeri sfr veya bo alfanmerik (null string) ise, doru (True) deeri verir.

    $bir_degisken = 123;

    echo empty($bir_degisken);

    $bir_degisken = "";

    PHP-1 42

  • 8/14/2019 PHP - Hakk cal

    43/163

    echo empty($bir_degisken);

    Bu program paras Browser penceresine sadece empty() fonksiyonun doru sonu

    verdii birinci echo() deyiminde 1 yazdracaktr.

    is_string() ,is_integer() ,is_double() ,

    Snadklar deikenin aradklar trden deer iermesi halinde doru 'True) sonu

    verirler.

  • 8/14/2019 PHP - Hakk cal

    44/163

  • 8/14/2019 PHP - Hakk cal

    45/163

    $a = 6;

    $b = "22/A"

    print ($a + $b)

    sonu olarak 28'i verecektir; veya

    $a = 6;$b = "A/22"

    print ($a + $b)

    sonu olarak 6 kacaktr. Bu kk deneyi yaparsanz, PHP ile program yazarken

    hangi deikenin ne sonu vermesi gerektiini dikkatle dnmek zorunda olduunuzu

    grrsnz. Bir kiinin geliri ile adresini toplamak, programc olarak arzu ettiiniz bir ilem

    olmayabilir!

    Bununla birlikte elimizde bir kiinin ad ve soyad ayr deikenler halinde ise,bunlar birbirine ekleyerek (concatenation) ortaya yeni bir alfanmerik deiken

    kartabiliriz:

  • 8/14/2019 PHP - Hakk cal

    46/163

    PHP'nin atama ilemcisinin eittir (=) iareti olduunu hatrlyorsunuz birleik-

    atama (combined-assignment) ilemcileri, bu iarete dier aritmetik ilemciler eklenerek

    oluturulur.

    lemci rnek Anlam+= $a += 5$a = $a + 5

    -= $a -= 5 $a = $a - 5

    /= $a /=5 $a = $a / 5

    *= $a *= 5 $a = $a * 5

    %= $a %= 5 $a = $a % 5

    .= $a .= "metin" $a = $a" metin"

    Bu ilemi zihnimizde, "A deikeninin mevcut deerine 5 ekle, kan sonucu A

    deikenin yeni deeri yap!" eklinde canlandrabiliriz.

    /////////////////KUTU//////////////

    Bir Arttrmak veya Azaltmak iin

    Deerleri sadece 1 arttrmak veya azaltmak iin PHP, bir kolaylk salar:

    $a++veya ++$a: $a'nn deerini 1 arttrr;

    $a--veya --$a: $a'nn deerini 1 eksiltir.

    ++ veya -- iaretinin deiken adndan nce veya sonra olmasnn sonucu farkl

    olur. aretler deikenin adndan nce ise PHP nce deikenin deerini bir arttrr veya

    eksiltir, sonra bu yeni deeri ileme katar; iaretler deiken adndan sonra ise, PHP

    deikenin o andaki deerini ileme kadar, sonra deeri bir arttrr veya eksiltir.

    /////////////////////KUTU BTT/////////////

    PHP'nin karlatrma yapmas iin kullandmz ilemciler ise ilem iaretinin sa

    ve solundaki deerleri veya deikenlerin deerlerini iaretin belirttii karlatrmay

    yaptktan sonra ortaya ya doru (true) ya da yanl (false) sonucunu kartrlar. Sz gelimi,

    deeri 6 olan deikenin 5'ten byk olup olmadn snarsak, sonu doru; 5'ten kk

    olup olmadn snarsak sonu yanl kacaktr. PHP'nin karlatrma ilemcileri unlardr:

    PHP-1 46

  • 8/14/2019 PHP - Hakk cal

    47/163

    lemci rnek rnek $a=6 ise:

    == eitse $a == 5 Yanl/False

    != eit deilse $a != 5 Doru/True

    === ayn ise $a === 5 Yanl/False> bykse $a > 5 Douru/True

    < kkse $a < 5 Yanl/False

    = 5 Doru/Trueveya eitse

    PHP'nin karlatrma ilemcileri hem tam ve ondalk say tr deerlerle, hem de

    alfanmerik deerlerle kullanlabilir.

    Daha ileri aamalarda, bazen deikenlerimizin karlatrmasnn bu kadar basit

    olamayacan; kimi zaman iki grup deikenin karlatrlmas gerektii durumlarn

    bulunduu greceiz. Diyelim ki, bir rencinin baarl saylmas iin hem vize notunun,

    hem de ylsonu snav notunun belirli saylardan byk olmas gerekiyor. Bu durumu ancak

    karmak-mantksal snamadan geirmemiz gerekir. Bu snamay iki ayr snama sonucu ile

    birlikte kullanrz. rnein:

    vize notu yeterli - final notu yetersiz = kalr (yanl/false)

    vize notu yeterli - final notu yeterli = geer (doru/true)

    PHP'de bu karlatrmay iki grubun arasna koyduumuz iaretlerle yaparz

    aretin sa ve sol tarafnn doruluu veya yanl iarete gre nihai sonucun doru veya

    yanl olmasn salar. Bu karlatrmalar yaparken u ilemcileri kullanrz:

    lemci Ad Anlam rnek

    || veya sol veya sa doru doru || yanl = doru

    or veya sol veya sa doru doru || yanl = doru

    && ve sol ve sa doru doru || yanl = yanl

    and ve sol ve sa doru doru || yanl = yanl

    PHP-1 47

  • 8/14/2019 PHP - Hakk cal

    48/163

    Xor artl-veya Sadece sol veya sa doru doru || yanl = doru

    ! Deil sol veya sa yanl doru || yanl = doru

    "veya" ve "ve" snamalar iin iki ayr ilem iareti bulunmasnn sebebi, PHP'nin

    ilem srasyla ilgilidir. Birazdan oraya geliyoruz. imdi, kavranmas kolay olmayan ikilimantksal snamalara bir rnek verelim; yukarda rencinin durumunu PHP komutu olarak

    yazalm.

    Mantksal karlatrma ilemleri daha da karmak olabilir. rnein, rencinin

    gemi saylmas iin ylsonu vize ve final notlarnn 45'dan yksek, ve ya birinci smester

    notunun ya da vize ve final notlarnn ortalamasnn 65'den yksek olmas art aranabilir.

    (Kabul; kt bir rnek oldu. Ama srf altrma iin!) Bu durumda kodu yle yazmamz

    gerekirdi:

    PHP-1 48

  • 8/14/2019 PHP - Hakk cal

    49/163

    Burada, PHP nce || veya && iaretinin sonucunu bulacak sonra and veya or

    ilemcisinin gereini yapaaktr. Bu kodun verecei sonucu, bilgisayarda altrmadan

    tahmin edebilir misiniz? pucu: Bu rencinin yerinde olmak istemezdim!

    lem ncelii deyince.. Btn programlama dilleri gibi PHP iin de ilemlerin hangisrada yapld nem tar. "5 + 4 * 2" ileminin sonucu, nce 5 ile 4'n toplanmas ve

    sonucun 2 ile arplmas halinde baka, 4'n 2 ile arplmas ve sonucun 5 ile toplanmas

    halinde baka olacaktr. Bu bakmdan, PHP'nin hangi ilemi nce yapt, hangi ilemi sonra

    yaptn bilmemiz gerekir. PHP'deki ilemlerin yapl sras yledir:

    ++ ve --

    / * %

    + -

    < >

    == === | =

    &&

    ||

    = += -= /= %= .=

    and

    xor

    or

    r.

    Sabit Deerler

    ster Web, ister Web-d amal olsun, bir programn bazen bandanh sonuna

    kadar deeri deimeyen deikene ihtiyac olabilir. "Deeri deimeyen deiken"

    teriminin anlamsz olduu kansnda iseniz, bunlara sabit deerler adn da verebilirsiniz!

    PHP'de sabit deerler, Script boyunca deimeden kalr.

    PHP-1 49

  • 8/14/2019 PHP - Hakk cal

    50/163

    Sabit deerler, deikenlerden farkl ekilde oluturulur. Bunun iin PHP'nin define()

    fonksiyonunu kullanrz. Bu fonksiyonun yazm kural yledir:

    define ("SABIT_DEGER", deer);

    Burada SABIT_DEGER yerine, tanmlamak istediimiz sabit deere vereceimizisim, deer yerine de sabit deeri yazarz. rnek:

    Burada tanmladmz DOLAR_KURU sabit-deeri, tpk bir deiken gibikullanlabilir. Fakat bir sabit deeri tanmladktan sonra ieriini deitiremezsiniz. Sabit

    deer ile ayn ismi tayan deiken oluturmak mmkndr; ancak ayn ismi tasa da bir

    sabit ile deikeni (birinin adnn nnde $ iareti bulunduu iin) kartrmak kolay olmasa

    gerek.

    Tanmlanm olan bir sabiti yeniden oluturamayz; ama buna teebbs ettiimizde

    PHP hata vermez. Bir sabit deerin oluturulmu olup olmadn defined() fonksiyonu ile

    anlayabiliriz:

    Bu program, bu ekilde ve define() komutunu en st satra alarak altrrsanz,

    ikinci altrnzda programn sabit deeri yeniden oluturmay reddettiini grecektiniz.

    PHP-1 50

  • 8/14/2019 PHP - Hakk cal

    51/163

  • 8/14/2019 PHP - Hakk cal

    52/163

    Browser penceresinde "Trke bugn gnlerden Sunday" yazsn okursanz,sunucuda Trke iin blgesel ayar destei yok demektir!

    PHP'nin zaman ve tarih belirlemekte kullanabileceiniz balca fonksiyonu getdate()

    ise xyle kullanlr.

    getdate() Tarih ve saat bilgisini alr ve ve vereceiniz bir isimdeki dizi-deikende

    kaydeder. rnek:

    $saat_tarih = getdate()

    Bu durumda, $saat_tarih dizi deikeninde srasyla u bilgiler yer alr:

    32 saniye

    57 dakika

    6 saat

    30 ayn gn says (1-31)

    0 haftann gn says (1-7)

    7 ayn says (1-12)

    2000 yl

    211 yln kanc gn

    Sunday gnn ad

    July ayn ad

    964929452 Unix sistemlerinde Epoch biiminde zaman bilgisi

    PHP'nin tarih ve saat bilgisini biimlendirmede yararlandmz date() fonksiyonunudaha sonra metin biimlerdirme blmnde ele alacaz

    PHP-1 52

  • 8/14/2019 PHP - Hakk cal

    53/163

    PHP'de Program Denetimi

    Bilgisayar program, belirli deerlere gre kendi izleyecei yolu kendisi bulmaldr.Bir Web program da ayn mantkla tasarlanr. PHP, bir ksmn daha nceki blmlerde, bir

    ksmn da imdi ele aldmz aralar kullanarak, belirli durumlarda belirli istikametlere

    gidecek, yeri geldiinde geri dnecek, yeri geldiinde baka blmlere srayacak bir ak

    plan tasarlamamza imkan verir.

    Web programlarmzda, ziyaretilerimizin sitemizde yaptklar veya yapmak

    istediklerini bildirdikleri ie gre sayfalar, bu ilere gre sayfa ierikleri sunarz. Web

    programmz ziyaretimizin hareket tarzna ve amacna uygun olarak ilerler. Bir programn

    ak plann kontrol etmemizi salayan unsurlar ou zaman programn kendi kendine

    karar vermesini salayan aralardr. PHP'de program denetim unsurlar, programn gidi

    ynn deitirmemizi veya olduu yerde durmasn ve beklemesini veya bir ii biteviye

    yapmasn salar. Bu blmde bu aralar ele alacaz.

    if Deyimi

    nsan olarak kararlarmz hemen hemen daima "bir ey yle ise byle, yle deilse

    yle davranmak" zere almaz myz? PHP programnda if deyimi bunu salar. Kelime

    anlam eer olan if deyimi ile programmz karar almaya zorlarz. Ne var programmz

    bizim kadar akll olamayaca iin if artnn doru veya yanl olmas durumunda ne

    yapacan da ona biz syleriz. if deyimi yle yazlr:

    if ( koullar ) {

    koullar doru ise yaplacak ilere ilikin komutlar}

    elseif (dier koullar) {

    dier koullar doru ise yaplacak ilere ilikin komutlar

    }

    else {

    PHP-1 53

  • 8/14/2019 PHP - Hakk cal

    54/163

    dier her durumda yaplacak ilere ilikin komutlar

    }

    PHP, if ifadesinin doru olmas halinde, ifadeye ait ilk ssl parantezin iindeki

    komutlar icra eder; bu artlar doru deilse, elseif deyimi ile ileri srebileceimiz dier bir

    grup artn doru olup olmadn snayabiliriz. Bu artlar yerine geliyorsa, PHP, elseif

    blmndeki ileri icra eder. Nihayet dier her hangi bir durumda icra edilmesini

    istediimiz komutlar else blmnde belirtiriz. PHP, if deyimi doru deilse, deyime ait

    ssl parantezin iindeki ileri yapmadan yoluna devam eder; varsa elseif deyiminin

    artlarn snar; elseif blm yok fakat else blm varsa bu blmdeki ileri icra eder.

    Deyimde else blm de yoksa, PHP yoluna if deyiminden sonraki ilk admdan devam eder.

    Bunu bir rnekle belirtelim:

    ou zaman if deyimlerini birden fazla koulu snayacak ekilde yazarz; bununla

    birlikte elseif ve else blmleri olmadan da yazlabilir:

    PHP-1 54

  • 8/14/2019 PHP - Hakk cal

    55/163

    Buradaki if deyimi $parola deikeninin bo alfanmerik olmas halinde ziyaretiyi

    uyarak ve grevi bitecektir. Ziyareti bir parola yazmsa, daha sonraki komutlar bu

    parolann doru olup olmadn snayabiliriz.

    switch deyimi

    PHP'de program akn ynlendirmekte kullandmz bir dier unsur, switch

    deyimidir. Ad anahtar anlamna gelen switch deyimi, verilen bir deikenin deerinin

    sraladmz koullardan hangisine uygun olduunu snar ve o koula ilikin komutlar icra

    eder. PHP'nin yapt ii bitirdikten sonra switch deyiminin dna kmasn salayan, break

    komutu vardr:

    switch ( deiken ) {case KOUL-1 ;

    Koul-1 doru ise yaplacak ilere ilikin komutlar

    break;

    case KOUL-2 ;

    Koul-2 doru ise yaplacak ilere ilikin komutlar

    break;

    case KOUL-3 ;

    Koul-3 doru ise yaplacak ilere ilikin komutlar

    break;case KOUL-4 ;

    Koul-4 doru ise yaplacak ilere ilikin komutlar

    break;

    ......................

    ......................

    default:

    dier her durumda yaplacak ilere ilikin komutlar

    }

    switch deyimini yazarken mutlaka break ifadesini kullanmamz gerekmez; switch

    deyiminin ak break ile kesilmemise, program ilk art yerine gelmi olsa bile dier

    artlar da snamaya devam eder ve en sondaki default deyimine ulaarak (default'tan

    sonra noktal virgl deil iki nokta stste iareti olduuna dikkat edin), bu blmdeki

    komutlar icra eder. Ne var ki programclk mantna aykr olabilir: bir deikenin ierii

    PHP-1 55

  • 8/14/2019 PHP - Hakk cal

    56/163

  • 8/14/2019 PHP - Hakk cal

    57/163

    switch iin ksa yol

    Kimi zaman uzun uzadya switch deyimi yazmamz gerekmeyebilir; bir deikenin

    deerini sadece bir arta uygunluk asndan snamamz gerekir. Bunu soru ve iki nokta

    stste iaretleri (? ... :) olarak yazlan ilemci ile yaparz. Diyelim ki, Web sitemizi ziyareteden kiinin parola yazp yazmadn sramak istiyoruz:

    Bu kod parac, ziyaretinin parola girip girmediini $parola deikeninin iinin

    bo olup olmadna bakarak anlayacak ve $parola deikenin ii bo ise (yani soru

    iaretinin sorgulad durumun doru olmas halinde) iki nokta stskte iaretinden nceki

    metni $uyar deikenin ierii haline getirecek; $parola deikeninin ii dolu ise (yani

    koul yerine gelmiyorsa, durum yanl ise) iki nokta stste iaretinden sonraki metni

    $uyar deikeninin ierii yapacaktr. Bir sonraki echo() komutu ise ierii bu snav

    sonucuna gre belirlennen $uyar deikeninin deerini Browser penceresinde

    grntleyecektir.

    /////////////////////////////KUTU BTT///////////////

    Dngler

    Yukardaki iki denetim gesi de programn ileri doru akn bozmayan aralardr.

    Oysa bazen programmzn bir koul gerekleincele kadar yerinde saymas ve koul

    gereklemedike ilerlememesi gerekebilir. Kimi zaman da programmza bir ii bitirmeden

    ileri gitmemesini biz bildiririz. Program aknn bu tr denetimini dng deyimleri salar.

    PHP'de iki tr dng vardr: bir durum devam ettii veya etmedii srece yaplan ve ka

    kere tekrar edecei bilinemeyen while dngleri, ve tekrar says belirli for dngleri.

    PHP-1 57

  • 8/14/2019 PHP - Hakk cal

    58/163

    while dngs

    Bir deikenin ieriinin belirli bir art karlamas veya karlamamas halinde icra

    edilir. Burada dikkat edeceimiz nokta, programn icras srasnda deikenin ieriinin

    veya koulun deimesinin salanmasdr. Aksi taktirde pgrammz sonsuz dngye girerve muhtemelen ker. while dngs yle yazlr:

    while (koul) {

    Koul doru ise yaplacak ilere ilikin komutlar

    }

    Bu yntemin yaygn kullanld alan, bir sayala yaptrlan ilerdir. Aadaki

    program while.php adlma kaydedip, alrrsanz, PHP, Browser'n yaz tr boyutunu

    1'den 7'ye kadar byterek, ayn metni yazdracaktr:

    PHP'de Dng

    Programmz, while dngs iindeki iken, sonsuz dngden kurtulabilmek iin,

    yazy yazdrdktan sonra, $sayac deikenini bir arttryor. Aksi taktirde, deiken hi bir

    zaman while dngsnn bekledii arta kavuarak 7'ye eit hale gelemeyecektir.

    (Program, sondaki "$sayac ++;" satrn kaldrarak denerseniz, zararsz bir sonsuz

    PHP-1 58

  • 8/14/2019 PHP - Hakk cal

    59/163

    dngnn ne olduunu grebilirsiniz! Ama nce Browser'n dur dmesinin yerinde durup

    durmadna bir bakn!)

    while dngsn arad artn yerine gelmesi, her zaman burada olduu gibi, tabir

    yerinde ise "elle" yaplmaz; dngnn icra ettii komutlar veya fonksiyonlar koulu ierendeikeni deitirebilirler. Szgelimi elektronik ticaret sitemizde Web ziyaretimizin while

    iinde yapt alveriin tutarn koul olarak kullanabiliriz ve bu koulu ieren deiken

    alveri ile deiebilir.

    do..while

    while dngs farkettiiniz gibi, ileri srdmz art, iyi yapmadan nce snar; ve

    bu art ortadan kalkmamsa (yani henz doru/true ise) yapaca ii yapar; baka bir

    deyile while dngsnn yapaca i hi yaplmayabilir. Fakat snamann i yapldktan

    sonra yerine getirildii bir ekli de vardr: do..while.. Bu dng ise yle yazlr:

    do {

    Koul doru ise yaplacak ilere ilikin komutlar

    }

    while (koul);

    Burada grdnz gibi do..while dngs en az bir kere icra edilir; nk artn

    snanmas yaplacak ie ilikin komutlardan sonra gelmektedir. Bu dngnn arad artn

    dngnn yapt ilerin sonucu veya kod blmnde bizim tarafmzdan gerekletirilmesi

    iin igerekli komutlarn bulunmasna dikkat etmelisiniz. Yoksa, bu dng de sonsuzlua

    eriir! Yukarda rnei, bu yntemle yazalm:

  • 8/14/2019 PHP - Hakk cal

    60/163

    ?>

    Bu dngy yazarken, while satrnn sorunda noktal virgl bulunduuna dikkat

    edin.

    for dngs

    PHP'de Web programlarmz, dngnn belirli bir sayda olmasn ve mesela bu

    saynn bizim istediimiz basamaklarda artmasn gerektiriyorsa, dngy for deyimiyle

    kurabiliriz. Ayrca for deyimi saya gibi artn yerine gelmesini salayacak arttrma vea

    eksiltme ilemlerini kendisi yapaca iin, sonsuz dngye girme tehlikesi de hemen

    hemen yoktur. Bu dng yle yazlr:

    for ( $yeni_degisken atama ; koul ; art basamas ) {

    Koul doru ise yaplacak ilere ilikin komutlar

    }

    for deyiminin ilk gesi, dng sayac olarak kullanlacak bir deiken olukturulmas

    ve buna deer atanmasna ilikindir; sonra bir noktal vrigl ile bu sayacn snr olan koul

    belirtilir. Yine noktal virgl ile ayrarak, saya deikeninin art hz verilir. Bunu da yine

    yukardaki rnekle gsterelim:

    Buradaki kod, while ve do..while gre ok daha ksa; ve while dngs sayac

    arttrmay salayan satr unutulsa bile alaca halde, for dngs unsurlara ilikin

    noktal virgller eksik olursa almayacak ve bize bylece sonsuz dng tehlikesinihatrlatm olacaktr. for dngs kendi sayacn verdiiniz art karlayncaya kendisi

    arttracak, yani buradaki rnei gre $saya deikeni 7 oluncaya kadar alacak ve art

    karland anda, sona erecektir.

    //////////////////KUTU///////////////

    PHP-1 60

  • 8/14/2019 PHP - Hakk cal

    61/163

    foreach

    PHP'nin programcya ok kolaylk salayan bir dier dngs, foreach dngsdr.

    Ancak bir deikenin btn elemanlarn tekrar saysnda esas alan bu dngnn alma

    ilkelerini grebilmek iin dizi deiken kavramn ele alm olmamz gerekiyor. imdilik bu

    dngnn varln bir kenara yazp, dizi deikenlere kadar, unutabilirsiniz.

    ////////////////////KUTU BTT///////////////

    Dngy sona erdirmek iin: break

    Programmzn ak, bazen dngnn durdurulmasn gerektirir. rnein, saya

    deikenini ziyaretinin vermesi gerektii ve vermedii durumda, dngnn balamamas

    yerinde olur. Programn gerektirdii byle bir sebeple dngy break komutuyla durduruz.Szgelimi aadaki kodda kullandmz $tekrar deikenini deerini ziyaretiden

    form yoluyla aldmz varsayalm:

    Bu kod parasn, bir sayfa kodunun iine yerletirir ve nce bu ekliyle, danha

    sonra $tekrar= 0 yazarak snarsanz, break komutunun ie yaradn greceksiniz.

    ($tekrar deikeninin deerini, Form yoluyla ziyaretiden deiken deeri almay

    reninceye kadar imdilik kaydyla biz yapyoruz. Ayrca buradaki if deyiminin ssl

    parantez olmadan yazldna dikkat edin.

    PHP-1 61

  • 8/14/2019 PHP - Hakk cal

    62/163

    Dngy srdrmek iin: continue

    break ifadesinin dngy tamamen durdurduunu farkettiniz mi? Oysa

    programmzn ak, kimi zaman da dngnn sadece belirli bir durumda kendisinden

    beklenen ii yapmamakla birlikte byle tmyle kesilmesini de gerektirmez. Yineyukardaki rnee dnersek, saya deikenini ziyaretinin vermesi gerektii ve vermedii

    durumda, dngnn tmyle kesilmesini deil de, sadece sayac gsteren $sayac

    deikeninin sfrdan byk bir deere ulalmasn beklememiz yerinde olabilir. Bu

    devamll continue komutuyla salarz:

    Yine bu rnekte kullandmz $sayac deikeninin deerini ziyaretiden form

    yoluyla aldmz varsayarak, kodu yle deitirebiliriz:

    Bu durumda PHP, conktinue komutunu grd anda for dngsnn geri kalan

    ksmn icra etmek yerine baa dnecek ve dngy yeniden icra etmeye balayacaktr.

    Dngnn ilk satrnnda kod parasn, bir sayfa kodunun iine yerletirir ve nce bu

    ekliyle, danha sonra $sayac= 1 yazarak snarsanz, continue komutunun program saya

    deikeninin deeri 1 oluncaya kadar durdurduunu ama bu srada for dngsnn devam

    ettiini greceksiniz. ($sayac deikeninin deerini, Form yoluyla ziyaretiden nasl

    alacamz daha sonra greceiz.)

    PHP-1 62

  • 8/14/2019 PHP - Hakk cal

    63/163

  • 8/14/2019 PHP - Hakk cal

    64/163

    Fonksiyonlar

    Bir bilgisayar programnn kalbi, fonksiyonlardr. Fonksiyonlar, bir kere tanmlanr vebir ok kereler, ihtiya olduu noktada hizmete arlr. Fonksiyonlar genellikle bir i veya

    hesaplama yaparlar ve bunun sonucu olarak ortaya yeni bir deer kartrlar. Bu deere

    "fonksiyondan dnen deer" denir.

    Fonksiyonun bir program iin ne kadar nemli bir unsur olduunu bir rnekle

    belirtelim. Diyelim ki Web'de rencilerimizin yl iinde aldklar notlar gsteren bir

    programmz var. Bu siteyi ziyaret eden rencilerin, iskterlerse, bir dmeyi tklayarak, o

    andaki not ortalamalarn hesap ettirmelerini salamak istiyoruz. Bu hesab yapacak olan

    ilem, bir fonksiyondur. Web ziyaretisi dmeyi tklad anda, program, ortalama

    hesabn yapacak olan fonksiyonu, o sayfada bul