You are on page 1of 65

Internet Programcl DERS NOTU

Yazarlar: Fehmi Noyan S, Nilgn Belma Bugner

Yeniden Dzenleme: Seval ZBALCI

2004

NSZ .......................................................................................................................................... 5 HTML LE WEB TASARIMINA VE PHP-MYSQL LE WEB PROGRAMCILIINA GR ........................ 7 HTML LE WEB TASARIMINA VE PHP-MYSQL LE WEB PROGRAMCILIINA GR ........................ 7 1. HTML Nedir?................................................................................................................................. 7 2. HTMLnin Yaps............................................................................................................................. 7 3. HTML'ye Giri ...............................................................................................................................7 HTML ETKETLER ......................................................................................................................... 8 <html> </html> .............................................................................................................................. 8 <head> </head> ............................................................................................................................. 8 <body> </body> ............................................................................................................................. 9 <title> </title> .............................................................................................................................. 10 <center> </center> ....................................................................................................................... 10 <hx> </hx> Balk Etiketleri ........................................................................................................... 11 <b> </b>, <i> </i>, <s> </s>, <u> </u>, <big> </big>, <small> </small>, <tt> </tt> .................. 11 <sub> </sub>, <sup> </sup>........................................................................................................ 11 <hr> ............................................................................................................................................ 11 <p> </p> ve <br> ........................................................................................................................ 11 <pre> </pre>................................................................................................................................ 12 Tanmlama Listeleri <dl> </dl>, <dt> </dt>, <dd> </dd> ................................................................ 13 Dier Listeler <ul> </ul>, <ol> </ol>, <li> </li>.............................................................................. 13 <img> .......................................................................................................................................... 15 <a> </a> ..................................................................................................................................... 15 <font> </font>.............................................................................................................................. 16 <acronym> </acronym>................................................................................................................. 17 <meta> </meta> .......................................................................................................................... 17 <!-- --> ........................................................................................................................................ 18 BAST BR HTML DOSYASI RNE ............................................................................................ 18 META ETKET LE YNLENDRME RNE ................................................................................. 19 WEB PROGRAMCILIINA GR.................................................................................................. 21 ereveler, tablolar, formlar. PHP ve MySQL ile Web Programlama........................................................ 23 <frameset> </frameset> ................................................................................................................ 23 <table> </table> ........................................................................................................................... 24 <form> </form>............................................................................................................................ 26 <input> ........................................................................................................................................ 27 text ........................................................................................................................... 28 password ................................................................................................................... 28 checkbox.................................................................................................................... 28 radio ......................................................................................................................... 29 submit, reset, button, image......................................................................................... 29 .: 3

file ............................................................................................................................ 29 <button> </button> ...................................................................................................................... 30 <select> </select>, <optgroup> </optgroup>, <option> </option> ................................................... 30 <textarea> </textarea> ................................................................................................................. 31 <fieldset> </fieldset>, <legend> </legend>..................................................................................... 31 PHP VE MYSQL LE WEB PROGRAMLAMA .....................................................................................33 PHP'ye Giri ................................................................................................................................... 33 PHP ile Ekrana Yaz Yazma ............................................................................................................... 34 Web Formundan Bilgi Almak............................................................................................................. 36 Diziler ........................................................................................................................................... 37 Mantksal leler ............................................................................................................................ 37 PHP Komutlar ................................................................................................................................ 38 if............................................................................................................................... 38 if... else ... ................................................................................................................. 38 while ......................................................................................................................... 39 do ... while ................................................................................................................. 40 for............................................................................................................................. 41 for (ilk_deer;koul;ilem) ........................................................................................... 41 switch........................................................................................................................ 41 Baz PHP levleri............................................................................................................................ 43 Include() ve Require() ilevleri...................................................................................... 43 mail() ilevi ................................................................................................................ 44 PHP ile Dosya lemleri .................................................................................................................... 45 fopen() ilevi .............................................................................................................. 45 fgets() ve fread() ilevleri............................................................................................. 46 fputs() ve fwrite() ilevleri............................................................................................ 46 feof ........................................................................................................................... 47 PHP ile Dizin lemleri...................................................................................................................... 47 opendir() ilevi ........................................................................................................... 47 readdir() ilevi ............................................................................................................ 47 ereg() ve eregi() ilevleri ............................................................................................. 48 ereg_replace() ve eregi_replace ilevleri ........................................................................ 48 md5() ilevi................................................................................................................ 48 unlink() ilevi.............................................................................................................. 49 mkdir() ve rmdir() ilevleri ........................................................................................... 49 PHP ile levleri Yazmak................................................................................................................... 49 MYSQLE GR ............................................................................................................................51 Veritaban Nedir? ............................................................................................................................ 51 MySQLde Tablolar .......................................................................................................................... 52 PHP LE MYSQL KULLANMAK .......................................................................................................55 Ziyareti Defteri rnei ................................................................................................................... 57 erez rnei.................................................................................................................................. 60 Renk Tablosu rnei ....................................................................................................................... 61

4 :.

nsz
Internet Programcl konusunda her eyden nce bilinmesi gereken, bu ii renmek istediiniz ve aba sarfettiiniz oranda yeterli dzeye eriebileceinizdir. Anlatlanlar okumak ya da dinlemek bu konuya vakf olmanz salamayacaktr. Bunun ncelikli nedeni, web sayfas hazrlamann ilk bakta ok karmak gelen onlarca tekniin bir arada ve yerinde kullanmn gerektiren bir uzmanlk alan olmas ve bu tekniklerin sayfalarn baarl sunumu ile anlam kazanmasdr. Baarl bir web sitesinin tasarm, drt unsurun bileimini gerektirmektedir. Bu unsurlar; sanat, tasarm, ynetim ve son olarak da programlamadr. Her bir unsur web sitesinin baarsnda eit oranda (%25) etkilidir. Dolaysyla bu ii tek bana yapacak kiinin bu unsurlarn her birine vakf olmas gerekecektir (eer bu ii bir ekip yrtecekse, bu unsurlar gerekletirecek bir ekip kurulmaldr). Dersimizin kapsam %25lik ksm olan programlamay iermektedir. Internet yaynclnda dersin gerek yararn grebilmek iin kalan %75i tamamlamak kiisel yeteneklere baldr. Yukardaki paragrafta akladmz nedenlerden dolay elinizdeki bu kitapk ile ya da belirli srede alnan ders/kurslar ile profesyonel bir web sitesi hazrlamanz ne yazk ki mmkn deildir. Profesyonel bir site, teknik yeterliliin yannda ve ncesinde grsel ve grafiksel adan da belli bir seviyeye ulam olmay gerektirir. Bu kitapkta deinilen konular ve dersimizin ierii daha ok bir web sitesinin oluturulmasnda zerinedir. Dersimiz ierisinde renmemiz gereken programlama ile ilgili konularn yan sra ynetimsel ve tasarmsal ufak ipular da verilecektir. Sanatsal yeterlilik ise kiinin becerisi ile ilgilidir. renme yeterliliini gsterdiiniz konular yaama geirmeniz ve yararn grmeniz dileiyle Seval zbalc gerekli olan programlama bilgileri ve temel teknik konular

- Internet Programlama Ders Notu -Tm- CB TMYO

.: 5

Internet Programciligi &Web Tasarimi

6 :.

HTML ile Web Tasarmna ve PHP-MySQL ile Web Programclna Giri


1. HTML Nedir?
HTML (Hyper Text Markup Language) internet zerinde web sayfas oluturmak iin kullanlan bir betik dilidir. HTML dosyalarnn aktarm iin HTTP (Hyper Text Transfer Protocol) kullanlr. HTML dosyalar sunucu bilgisayarn sabit diskinde .html ya da .htm uzants ile saklanr. Yazdmz html dosyalar dz yaz dosyalarndan baka bir ey deildir. Yani yazdmz html dosyalarn bir C ya da Pascal programnda olduu gibi bir derleyici ile derlememize gerek yoktur. Bir siteye girdiimiz zaman bize grntlenen ilk sayfa index.html, index.htm, index.asp, index.php ya da default.htm dosyalarndan birisidir. index.* dosyalar UNIX ve trevi sunucu sistemler, default.htm dosyasda WinNT ya da trevi sistemler iin giri sayfas olur. Saylanlarn dnda uzants deiik birok biemdeki sayfalar da sunucu sistemin ayarlar deitirilerek giri sayfas yaplabilir.

Web istemcimizin adres satrna http://www.belgeler.org gibi bir ifade yazarsak sunucu sistem bize, o adresin www kk dizinindeki index.html (ya da hangi giri sayfas tanml ise) dosyasn grntleyecektir.

2. HTMLnin Yaps
Daha nce deinildii gibi html dosyalar sadece dz yaz dosyalardr. HTML renmesi olduka basit ve yaratcla fazla ak olmayan bir dildir. Basittir nk, internette gezinirken grntlediiniz sayfalarn kaynandan hazrlanrken kullanlan teknikleri renmemiz mmkndr (Sayfann zerinde farenizin sa tuuna bastktan sonra Kayna Grntle seenei ile). Beendiiniz tasarmlar kendi sayfanzda kullanabilir, bu tasarmlarn hangi html kodlar kullanlarak yapldn renebilirsiniz. Yaratcla fazla ak deil, nk html ile yazdnz sayfalar PHP, ASP, CGI... gibi web programlama dilleri kullanlmadan statik html dna kamaz. HTML kodlarn yazmak iin zel bir dzenleyiciye ihtiyacnz yoktur. Bu i iin Windows altnda NotePad ya da DOS-Edit, Linux altnda pico, joe ya da vi gibi metin dzenleyicileri yeterlidir. HTML sayfalarnz kod yazmakszn FrontPage, Netscape Composer gibi programlarla da hazrlayabilirsiniz. Yalnz bu programlar kullanlarak hazrlanan sayfalar zaten dar olan HTMLnin reticilik alann daha da daraltmaktadr. HTML bilmenin kullancya her zaman fayda getirecei unutulmamaldr (Dinamik Web Tasarm iin HTMLnin kod dzeyinde bilinmesi gereklidir!).

3. HTML'ye Giri
Etiket, HTML dosyasnda kullanlan komutlara verilen addr. HTML iinde kullanlan tm etiketler < iareti ile balar ve >ile biter. Ayrca etiketin yorum aral da </etiket ismi> kalb ile bitirilir. Etiket kullanmna ksa bir rnek: <etiket1>...Buras etiket1in yorum aral...</etiket> <etiket2> ....Buras etiket2nin yorum aral... .... <etiket3>...Burada etiket3 tanml...</etiket3> ...Etiket2 hala tanml... ...

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 7

</etiket2> Grld gibi en son, etiket2 </etiket2>etiketi ile kapatlyor. Dikkat ederseniz deiik etiketler birbirlerinin iinde kullanlabiliyor. Yani ak etiketin iinde baka bir etiket ap istediiniz ilemi gerekletirebiliyorsunuz. Etiketin biti iaretini (</etiket ismi>) vermediiniz srece o etiket tanml olarak ilem grr. Tm HTML dosyalar <html> etiketi ile balayp </html> etiketi ile son bulur. Bunun yannda <html> etiketi ile <HTML> etiketi arasnda hibir fark yoktur. Ancak etiketleri kk harflerle yazmaya almanz neririm. leride XHTML kodlar yazmak zorunda kalabilirsiniz ve XHTML dilinde etiketlerin kk harflerle yazlmas zorunludur. HTML dosyalar temel olarak iki blmden oluur. Bunlar HEAD (Balk) ve BODY (Gvde) ksmlardr. Balk ksmnda ziyaretiye grnmeyen, sayfa hakknda tanmlayc bilgiler bulunur. Gvde ksm ise web sayfamzn ziyaretiye grnen ksmn yani asl ksmn oluturur.

HTML Etiketleri
<html> </html>
HTML kodlarnn yorum araln balatmak iin bu etiketi kullanrz. Sayfamzn head ve body blmleri bu etiketin yorum aralnda tanmldr. 1 <html> 2 <head>... head etiketinin ierii ....</head> 3 <body> 4 5 6 .... body etiketinin ierii ....

7 </body> 8 </html> Birinci satrda <html> etiketi ile HTML sayfamza balyoruz. Daha sonra <head> ve <body> etiketleri <html> etiketi ierisinde tanmlanp ierikleri yazlyor. En son olarak da </html> etiketi ile HTML sayfamz bitiriyoruz. Yazdmz html dosyasnn banda bu etiketin tanmlanmamas u an kullanlan web istemciler asndan bir sorun oluturmayacaktr. Fakat sitenizi ziyaret eden ziyareti eski bir istemci kullanyorsa bu etiketi kullanmamanz bir takm sorunlar oluturabilir (sonsuz uzunlukta sayfa gibi). En iyisi siz her html dosyasna balarken ve bitirirken bu etiketi kullann. Yorum alannda kullanlabilecek etiketler: HEAD, BODY

<head> </head>
Yorum alannda sayfamz hakknda bilgilerin bulunduu bir etikettir. rnein sayfamzn balk bilgisinin bulunduu TITLE etiketi ya da arama motorlarna bilgi salamak iin oluturulan META etiketi bu etiketin yorum alannda tanmlanr.

8 :.

<html> <head> <title>.....</title> </head> <body> .... body etiketinin ierii .... </body> </html> Yorum alannda kullanlabilecek etiketler: SCRIPT, STYLE, META, LINK, OBJECT, TITLE, BASE

<body> </body>
HTML dosyamz iindeki en geni ierikli etiket budur. Ziyaretiye grnen herey bu etiketin yorum alannda tanmlanr. Ayrca bu etiket iinde kullanlan bileenlerle de sayfamzn baz temel zelliklerini belirtebiliriz. Girilecek Kod text = renk link = renk vlink = renk alink = renk bgcolor = renk background = resim_dosyas topmargin = deer leftmargin = deer rightmargin = deer onload = betik onunload = betik Grevi Sayfanzdaki yazlarn rengine renk ile belirtilen deeri verir. Sayfanzdaki balarn rengine renk ile belirtilen deeri verir. Sayfanzdaki ziyaret edilmi balarn rengine renk ile belirtilen deeri verir. Sayfanzdaki aktif balarn rengine renk ile belirtilen deeri verir. Sayfanzn arka plan rengine renk ile tanml deeri verir. Eer arka planda sade bir renk deil de bir resim kullanmak istiyorsanz, resim_dosyas kullanacanz resmin adn temsil eder. Sayfamzda kullanacamz bileenlerin istemci penceresinin st kenarna olan uzakln belirler. Sayfamzda kullanacamz bileenlerin istemci penceresinin sol kenarna olan uzakln belirler. Sayfamzda kullanacamz bileenlerin istemci penceresinin sa kenarna olan uzakln belirler. Sayfa yklenirken altrlacak javascript betiini belirler. Baka bir sayfaya geerken altrlacak javascript betiini belirler. Tablo 1: Body etiketinin bileenleri Yukardaki tabloda kullanlan renk deeri HTML iinde kullanlan renk kodlarn temsil etmektedir. Alt basamaktan oluan bu renk kodlar ana renkler olan mavi, sar ve krmznn kullanlan renkteki tonuna gre onaltlk tabanda saylarla istediimiz rengi elde edebiliriz. Renk kodlar hakknda ksa bir bilgi vermek gerekirse kodlar ikier basamakl blmden oluur. Aadaki tablo bu konu hakknda kafanzda oluan soru iaretlerinin silinmesinde size yardmc olacaktr. Krmz 00...FF Yeil 00...FF Mavi 00...FF

Tablo 2: Renk Kodlarnn Yaps

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 9

2.

Satrdaki

aralklara

deiik

deerler

(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

vererek

rengi

oluturmamz mmkndr. Kod kullanmann yan sra renkleri dorudan ngilizce adlarn yazarak da kullanabiliriz. rnein beyazn kodu olan #FFFFFF yerine white yazmamzda sonucu deitirmeyecektir. Dikkat ederseniz her renk kodu bir diyez (#) iareti ile balyor ve daha sonra alt basamaktan oluan bir blm geliyor. Bu alt basamak iinde F yada f bulunduu basamaktaki rengin tam olarak kullanlmasn ve sfr (0) ise o basamaktaki rengin hi kullanlmamasn salamak iin kullanlr. Yine html kodlarnda olduu gibi renk kodlarnda da byk-kk harf ayrm yoktur. Yani #FFFFFF ve #ffffff ayn rengi yani beyaz temsil eder. <body text="#000000" bgcolor="#FFFFFF" link="#808080" vlink="#eaeaea" alink="#000000"> <body text="#000000" background="../resimler/arkafon.gif"> <body bgcolor="#334455" text=#ffffff" topmargin="0"> Yukardaki birinci kod satr sayfamzn arka plan rengini beyaz, yazlar siyah, balar ve ziyaret edilmi balar gri ve etkin balar da siyah yapmak iin kullanlr. kinci satr ise yaz rengini siyah yapmak, bulunduumuz dizinin bir st dizinindeki resimler dizininde bulunan arkafon.gif resmini artalan yapmak iin kullanlr. Son satr ile sayfamn arka fon ve yaz rengini belirliyor, sayfamn bileenlerinin istemci penceresinin st kenarlna olan uzakl sfrlyorum.

<title> </title>
Sayfamzn balk bilgisi bu etiket altnda yer alr. Bu etiket head etiketi iinde kullanlmak zorundadr. <head> <title>lk HTML denemem</title> </head> Gibi bir kod paras istemcimizin balk ubuunda lk HTML denemem metninin grntlenmesini salayacaktr. Bu etiket ile body etiketinde olduu gibi renk seenekleri kullanlamaz.

<center> </center>
Kendi yorum aralnda bulunan tm etiketlerin ekran ktlarn browser penceresine ekran ortalayacak ekilde basar. <center> .... Buras etiketin yorum aral ..... </center> ... Buras center etiketinin yorum aralnn dnda Normal artlarda HTML sola dayal olarak kt verecektir. Ama yukardaki gibi bir kod rneinin kts aadaki gibi olacaktr. Buras etiketin yorum aral Buras center etiketinin yorum aralnn dnda

10 :.

<hx> </hx> Balk Etiketleri


Bu etiketler basit olarak bir balk kullanmak istediimiz zaman, bal yazmak iin kullanlan etikettir. Etiketin kullanmnda Hx ifadesindeki x 1 ile 6 arasnda deerler alabilen bir tamsaydr. Bu etiket ile ekrana baslabilecek en byk boyutlu yaz <H1> etiketi ile, en kk boyutlu yaz <H6> etiketi ile baslr. Bu etiket ile birlikte bir nceki etiket olan <p> etiketindeki gibi drt yer belirleme kodu kullanlabilir. Etiketin kullanm <h1 align="center">Bu benim en byk balm!</h1> eklindedir. Etiketin yorum aralndaki metin balk olarak ekrana baslr. <h1 align="center" style="color:black;">Bu balklar gittike klecek!!!</h1> <h2 align="center" style="color:blue;">Bu balklar gittike klecek!!!</h2> <h3 align="center" style="color:navy;">Bu balklar gittike klecek!!!</h3> <h4 align="center" style="color:green;">Bu balklar gittike klecek!!!</h4> <h5 align="center" style="color:maroon;">Bu balklar gittike klecek!!!</h5> <h6 align="center" style="color:purple;">Bu balklar gittike klecek!!!</h6>

<b> </b>, <i> </i>, <s> </s>, <u> </u>, <big> </big>, <small> </small>, <tt> </tt>
Bunlar yaz tiplerinin nasl yorumlanacan belirten etiketlerdir. <b>kaln</b>, <i>eik</i>, <s>zeri izili</s>, <u>alt izili</u>, <small>kk</small>, <big>byk</big>, <tt>daktilo yazs</tt>

<sub> </sub>, <sup> </sup>


Forml ve benzeri metinleri yazarken kullanlr. H<sub>2</sub>SO<sub>4</sub> <br> E = mc<sup>2</sup>

<hr>
Ekrana yatay izgi izmek iin kullanlr. Bu etiketinde <br> etiketi gibi sonlandrcs yoktur. Yani bu etiket bir yorum aral belirtmez. Bu etiket ile tanmlanabilecek deiik zellik vardr. Girilecek Kod width = "genilik" size = "kalnlk" color = "renk" Grevi izilecek izginin yatay uzunluunu belirlemek iin kullanlr. izilecek izginin kalnln belirtir. izilecek izginin rengini belirtir. Tablo 3: hr etiketi iinde kullanlan kodlar Bu kod, sayfa geniliinde kaln ve mavi bir izgi <hr width="100%" color="#0000F8" size="4"> izer.

<p> </p> ve <br>


BR etiketinin sonlandrcs (</br>) yoktur, yani bir yorum aralndan sz edilemez. BR etiketi bulunduumuz satrdan bir satr aa gemek iin kullanlr.

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 11

Burada bir metin var Bir alt satra getiimi sanyorum! Yukardaki metin ekran yan yana baslacaktr. Her ne kadar kodu yazarken satr atlayarak yazm olsak bile browser bu kodu yorumlarken arada <br> etiketi olmad iin bu iki cmleyi yan yana basacaktr. Burada bir metin varBir alt satra getiimi sanyorum! Kodun doru kullanm aadaki ekilde olmaldr. Burada bir metin var <br>Bir alt satra getim! <p> ve </p> etiketleri ise paragraf oluturmak iin kullanlr. P etiketi iinde yine body etiketinde olduu gibi birtakm tanmlamalar yaplabilir. Girilecek Kod align = "left" align = "right" align = "center" align = "justify" class = "css_etiketi" style = "css:tanm1;css:tanm2;..." Grevi Paragraf sola dayal olarak yazar. Paragraf saa dayal olarak yazar. Paragraf ortalar. Paragraf sola ve saa dayal olarak yazabilmek iin szcklerin ara boluklarn deitirir. nceden tanml bir CSS dosyasndaki font-size, color... gibi zellikleri paragrafa uygular. font-size, color... gibi css tanmlarn paragrafa uygular. Tablo 4: <p> etiketinin bileenleri <p align="justify"> Burada bir metin var.<br> Bir alt satra getiimi sanyorum! yazm bir paragraf iinde yazyorum. </p> Burada bir metin var. Bir alt satra getiimi sanyorum! Daha nceki rnee ek olarak yazm bir paragraf iinde yazyorum. Daha nceki rnee ek olarak

<pre> </pre>
Bir kod paras, bir konsol ekran alnts ya da bir ascii-art gibi iindeki boluklarn korunmasn gerektiren metinleri grntlemek iin kullanlr. Web istemciniz, tm dier etiketler iin yorum aralndaki fazladan boluklarn gzard ederek metni sarmalad halde <PRE> etiketinin yorum aralndaki metnin boluklarn olduu gibi grntler. <pre> switch($i){ case "2": echo "Deeri 2"; break; case "3": echo "Deeri 3"; break; default: echo "Deeri bilinmiyor"; break;

12 :.

} </pre> Yukardaki kodun istemcinizdeki grnts aadakine benzer olacaktr. switch($i){ case "2": echo "Deeri 2"; break; case "3": echo "Deeri 3"; break; default: echo "Deeri bilinmiyor"; break; }

Tanmlama Listeleri <dl> </dl>, <dt> </dt>, <dd> </dd>


Terimler ve aklamalarn ieren listeler oluturmakta kullanlrlar. Bir uygulamann komut satr seeneklerini listelemek ve altlarnda aklamalarn vermek iin kullanldr. <dt> ve <dd> etiketleri <dl> etiketinin yorum aral iinde kullanlr. <dt> etiketi terim, <dd> etiketi ise aklamas iin kullanlr. Bir rnekle kullanm daha kolay anlalacaktr. <dl> <dt>align = "left"</dt> <dd>Paragraf sola dayal olarak yazar.</dd> <dt>align = "right"</dt> <dd>Paragraf saa dayal olarak yazar.</dd> </dl> Yukardaki kodun istemcinizdeki grnts aadakine benzer olacaktr. align = "left" Paragraf sola dayal olarak yazar. align = "right" Paragraf saa dayal olarak yazar.

Dier Listeler <ul> </ul>, <ol> </ol>, <li> </li>


Yukardaki blmde anlatlan tanmlama listesinden baka iki tr liste daha vardr. <ol> etiketi kullanlarak oluturulan listeler sral listelerdir. Sralama saysal, alfabetik ya da romen rakamlar ile yaplabilir. <ul> etiketi ile oluturulan listelerde ise sralama eleman bir grafik semboldr. <li> etiketi bu etiketlerin yorum aralnda kullanlarak liste eleri verilir. Bu etiketlerle kullanlabilecek yardmc kodlar aadaki tabloda belirttim. Girilecek Kod type = "listeleme tr" start = "deer" Grevi Bu alanda belirtilebilecek deerleri aada bir tablo halinde verdim. Sadece <ol> etiketi iindir. Sralama elemannn balang deerini belirtmekte kullanlr.

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 13

value = "deer"

Sadece <li> etiketi iindir. Yorum aralndaki liste esinin numarasn belirtmek amacyla kullanlr. start = "deer" parametresi ile belirtilen deer, saysal olmasa bile burada saysal bir "deer" belirtilebilir. Tablo 5: Liste kullanm iin yardmc kodlar

Sralamasz liste (<ul>) tr deerleri: Sralamasz listlerde liste elerini belirtmek iin 3 sembol ismi kullanlr: 1. 2. 3. disc - i dolu bir daire grntler circle - i bo bir daire grntler square - i dolu ya da bo bir kare grntler Tr 1 i I a A Sralama Onluk tabanda numaralama (1,2,3,4,...) Kk rakamlarla romen saylar (i,ii,iii,iv,...) Byk rakamlarla romen saylar (I,II,III,IV,...) Kk harflerle alfabetik (a,b,c,...) Byk harflerle alfabetik (A,B,C,...)

Tablo 6: Sral liste (<ol>) tr deerleri <ol type="i"> <li> Birinci e...</li> <li> kinci e ... <ul type="square"> <li>kinci enin bir esi... <li>kinci enin baka bir esi... </ul> </li> <li> nc e...</li> </ol> Yukardaki kodun istemcinizdeki grnts aadakine benzer olacaktr. i. Birinci e... ii. kinci e ... kinci enin bir esi... kinci enin baka bir esi... iii. nc e...

14 :.

<img>
Sayfamza resim yerletirmek iin kullanlan etikettir. Etiketin kullanmna gemeden nce Internet zerinde kullanlan resim dosyas biemleri zerinde durmak istiyorum. Internet zerinde en ok kullanlan resim dosyas biemleri GIF, JPG ve PNGdir. Bu biemlerin seilmesindeki ama sayfann yklenmesini kolaylatrmaktr. Windows ortamnda en ok kullanlan resim format olan BMP'lerin web zerinde kullanlmamasnn en byk sebebi, iyi resim kalitelerine karn bunun bir bedeli olarak boyutlarnn ok byk olmasdr. Kullanlan biemin kendine has baz zellikleri vardr. GIF biemi 256 renk kullanarak ve JPG biemi de resmin kalitesinden biraz ksarak boyut sorununu halleder. Bunun yan sra sayfamzda, mecbur kalmadka, byk boyutlarda (hem ebat hem de kb olarak) resimler kullanmaktan kanmak sayfamzn yklenmesini kolaylatracaktr. Yine bu etikette de sonlandrc yoktur. Yani bir yorum aral belirtmez. Bu etiket altnda kullanacamz resmin baz zelliklerini belirtmek iin tanmlayc baz kodlar kullanrz. Bu kodlar aadaki tabloda belirttim. Girilecek Kod src = "resim_dosyas" width = "genilik" Grevi Kullanacamz resim dosyasnn tam yolunu yazarak, hangi resmin kullanlacan belirtiriz. Resmin genilii burada tanmlanr. Byk bir resminiz varsa genilik deerini "100%" vererek resmin web istemci geniliine dinamik uydurulmasn salayabilirsiniz. Resmin ykseklii burada tanmlanr. Resmimizi eer metin iinde kullanyorsak metne olan dikey uzakl. Resmimizi eer metin iinde kullanyorsak metne olan yatay uzakl. Resmin zerinde fare ile bir sre beklendiinde kan aklayc bilgi burada tanmlanr. Resmin dnda ereve izgisi olmayacaksa "0" deeri kullanlr. Tablo 7: Resim kullanm iin yardmc kodlar <img src=./resimler/banner.jpg width=250 height=85 alt=Bilgisayar Topluluu> Yukardaki satr bulunduumuz dizinin bir stnde bulunan resimler dizinindeki banner.jpg dosyasn belirtilen ller dorultusunda ekrana basar. (Resmin boyutlarn belirtmek zorunlu deildir!). Alt kodu ile tanml ksm da resmin zerinde belli bir sre beklendiinde Bilgisayar Topluluu yazsnn belirmesini salar. olacaksa "1",

height = "ykseklik" vspace = "dey_aralk" hspace = "yatay_aralk" alt = "metin" border = "deer"

<a> </a>
Bu etiketi bir adres belirterek baka sitelere, sayfalara ya da ayn sayfann farkl blmlerine ba vermek veya eposta adreslerini yazmak iin kullanrz. Web istemciler genellikle ntanml olarak balar alt izili ve mavi olarak grntler. <a> etiketinin bir yorum aral vardr ve eitli tanmlayc kodlar da etiket ile birlikte kullanlabilir. Girilecek Kod href = "URL" target = "hedef" Grevi Yorum alanndaki yorumlanacak adres. bileene tklandnda

Yorum alanndaki bileene tklandnda sayfann alaca yer belirtilir.

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 15

name = "isim" type = "mime_tr"

Sayfa ii balantlarda baka bir ban hedefi olacak yeri belirtmek iin kullanlr. Hedefin ieriini belirtmek iin kullanlr. Tablo 8: Ba vermek iin kullanlan kodlar

<a href=http://www.belgeler.org>Linux Belgelendirme alma Grubu</a> <a href="http://www.slackware.com" target="new">Slackware Linux</a> <a href="mailto:abc@def.com">ABC</a> lkinden farkl olarak ikinci kodda target zellii kullanlmtr. Target zelliine new deerinin verilmesi ile alacak yeni site yeni bir istemci penceresinde alr. nc satr belirtilen adrese eposta yollamak iin kullanlr. Ban zerine tkland zaman web istemcisinde ntanml olarak kaytl eposta istemcisi alacaktr. Bunlarn dnda resimleri de ba olarak kullanabilme imkanmz var. Sayfamzda resimleri ba olarak kullanabilmek iin kullanmamz gereken kalp aadaki gibidir. <a href=http://www.belgeler.org><img src="../images/belgeler-logo.png" border="0"></a> <a href=http://www.belgeler.org><img src="../images/belgeler-logo.png" border="1"></a> Yukardaki iki satr da grev olarak ayn eyleri yaparlar. Fakat ziyaretiye grnen blmler arasnda kk bir fark vardr. lk kod satr oluacak ban etrafnda ereve oluturmayacaktr. Kullandmz resimli balarda ereve olumasn engellemek iin border="0" kodunu kullanrz.

<font> </font>
HTML dosyas iinde yazdmz yazlarn ekrana nasl bir kt vereceini bu etiket ile belirleriz. Uyumlu yaz tipleri ve renkler ile sayfanza gzel bir grnm kazandrabilirsiniz. Bu etiketin kullanmna alternatif olarak sayfanzda CSS de kullanabilirsiniz. CSS kullanm sayesinde fazla kod yazmndan da kurtulmu olursunuz. Etiket ile birlikte yaz tipi, renk ve boyut belirtmek zere kod kullanlr. Girilecek Kod face = "yaztipi" color = "renk" size = "boyut" Grevi Kullanlacak yaz tipi belirlenir. Yazacamz yaznn rengi belirlenir. Yazmzn boyu belirlenir. Tablo 9: Font etiketi kodlar <p><font face="tahoma" size="3" color="maroon"> <b>Burada bir yaz var.</b></font></p> <p><font face="tahoma" size="4" color="maroon"> <b>Burada bir yaz var.</b></font></p> <p><font face="tahoma" size="5" color="maroon"> <b>Burada bir yaz var.</b></font></p> <p style="color:maroon;font-family:tahoma;font-weight:bold;font-size:125%"> Burada bir yaz var.</p> <p class="author">Burada bir yaz var.</p> Yukardaki kod paras ile ilk 3 satrda boyut deeri 3, 4, 5, yaz tipi tahoma ve rengi koyu krmz olan bir yaz yazlr. lk 3 satrda <p>, <font> ve <b> etiketleri ile elde ettiimiz sonucu sonraki 2 kodda sadece <p> etiketi ile elde edebiliriz. Son satrdaki class="author" ile tanml css kodu iin belgeler.css

16 :.

dosyasnda gerekli tanmlar bulunmaktadr. Grdnz gibi CSS kullandnda elimizde daha fazla seenek bulunmakta ve kod basitlemektedir. Burada dikkat etmeniz gereken husus kullanlan yaz tipidir. Kendi bilgisayarnza zg yaz tipleri kullanmsanz ve o yaz tipi ziyaretinin bilgisayarnda mevcut deilse yazdnz yazlar ziyaretinin web istemcisinin ntanml ayarlar dorultusunda ekrana baslr.

<acronym> </acronym>
Ksaltmalar iin kullanlr. <acronym title="Linux Kullanclar Dernei">LKD</acronym> Fare, "LKD" zerine getirildiinde ksaltmann alm balon iinde grntlenecektir.

<meta> </meta>
HTML dosyasndaki head etiketinin yorum aralnda tanmlanan bu etiket web istemcisine ve arama motorlarna sayfamz hakknda bilgi verir. Bu etiketi ile birlikte kullanlan yardmc kodlarn aklamas ilk bakta size biraz karmak gelebilir. Her kodun kendisi ile birlikte tanmlanan yardmc kodlar da olduu iin bu etiket ile birlikte kullanlan kodlarn listesini ncekilerden daha farkl bir ekilde vermeyi uygun grdm. Girilecek Kod name = "veritr" http-equiv = "veritr" size = "boyut" Grevi Bu blmde author, zellikleri tanmlanr. description ve keywords

Bu blmde refresh, expires, content ve contentstyle-type zellikleri tanmlanr. Yazmzn boyu belirlenir. Tablo 10: Meta etiketi ana kodlar

Yukardaki tabloda verdiim kodlar ile birlikte tanmlanan yardmc kodlar tablo eklinde vermek yerine rnek eklinde vermenin daha faydal olacan dndm. <meta name=author content=Linux Belgelendirme alma Grubu> <meta name=description content=Linux Belgelendirme alma Grubu Web Sayfas> <meta name=keywords content=linux unix bsd openbsd freebsd programlama ozguryazlm zgryazlm sunucu internet> Yukardaki birinci satr (author), sayfay hazrlayanlarn kim olduu hakknda ksa bilgiler verir. kinci satr (description), sitenin ne hakknda olduuna dair ksa bir bilgi verir. Sonuncu satr ise (keywords), arama motorlarna bilgi salamak iin kullanlr. Yani siz bir arama motoruna girip arama ksmna linux, unix, bsd, openbsd, freebsd, programlama, zgryazlm, sunucu, internet szcklerinden birisini yazarsanz bu site adresi de grntlenecek adresler arasnda olacaktr. <meta http-equiv=refresh content=5; URL=http://www.belgeler.org/> <meta http-equiv=expires content=Wed, 25 Feb 2002 12:00:00 GMT> <meta http-equiv=content content-type=text/html; charset=iso-8859-9> <meta http-equiv=content-style-type content=text/css> Yukardaki birinci kod satr (refresh) sayfamz aldktan 5 saniye sonra belirtilen adresi otomatik olarak aacaktr.

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 17

kinci kod satr (expires) GMT saat sistemine gre belirtilen saat ve tarihte sayfann dosyas silinecektir. nc kod satr (content) taraycya html dosyamzda kullandmz karakter kodlamasnn ISO8859-9 olduunu belirtir. Drdnc ve son satr (content-type-style) belgemizde kullanlan CSS dosyamzn bir metin dosyas olduunu belirtir. Daha nce de belirtildii gibi meta etiketi ile tanmlanan bilgiler kullancya grntlenmez. Bu bilgiler genellikle taraycya ve arama motorlarna bilgi salamak iin kullanlr.

<!-- -->
Bu etiket yorum aral olarak kullanlr. Bu kodun kullanm amac HTML kodunun iine kullancya grnmeyen aklamalar yerletirmektir. (lk etapta iimize yaramasa bile tablo ve frame kullanarak hazrlanan kark HTML dosyalarnda ok yardmc olacaktr.) <!-- Buras bir yorum aral ve bu ksm sayfada grnmez!!!! -->

Basit Bir HTML Dosyas rnei


HTMLye giri iin bu kodlar yeterli olacaktr. Bu blmde buraya kadar verilen HTML kodlarn kullanarak basit bir sayfa rnek olarak hazrlanmtr. Kullanlan kodlarn nerelerde ve nasl kullanldna dikkat etmeniz nerilir. Sayfann yapmnda gze hitap etmesinden ok retici olmasna dikkat edilmitir. <html> <head> <!-- Meta etiketleri ile ek bilgiler veriliyor --> <meta name="author" content="Acemi tasarmc"> <meta name="description" content="Acemi tasarmc web okulu"> <meta name="keywords" content="web,html,css"> <meta http-equiv="content" content-type="text/html; charset=iso-8859-9"> <title>lk HTML Denemem</title> </head>

<!-- Body etiketi ile sayfamzdaki renkleri ayarlyoruz --> <body text="#000000" bgcolor="#ffffff" link="#808080" vlink="#eaeaea" alink="#000000"> <h1> Bu byk boyutlu ortalanmam bir balk</h1> <br><center> <h1> Bu da byk boyutlu bir balk fakat ortalanm.</h1> </center>

<!-Center etiketi ile ortalama bittii iin buradan sonra sola dayal yazlacaktr. --> <br><br> <font face="verdana" size="5" color="#800000"> 18 :.

Buradan itibaren paragrafma balayacam. </font>

<!-- p etiketi kendiliinden bir satr boluk verdii iin satr atlamadm --> <p> Bu sayfay yapmaktaki amacm etiketlerin ve bal kodlarn nasl kullanldn gstermektir. Yukardaki krmz bal &lt;font> etiketini kullanarak elde ettim. nternette gezerken ziyaret ettiiniz sayfalarn kaynan grntleyerek de deiik teknikler renebilirsiniz. </p>

<!-- baka sayfalara link verelim --> <a href="mailto:fni18444@gantep.edu.tr">Bana e-mail yollayn</a><br><br> <br><br>

<!-- HTML dosyanz yazdnz dizine abc.png adli bir resim yerletirin --> Aadaki resmin grntlenmesi iin HTML dosyanzn olduu dizine <b>abc.png</b> resmini oluturmalsnz.<br> <a href="http://www.belgeler.org"><img src="abc.png" border="0"></a> <br><center> <hr width=80%> <u>Bu alt izili bir yaz</u>, <i>bu yana yatk, italik, bir yaz</i><br> Bu sayfann amac <acronym title="Hyper Text Markup Language">HTML</acronym> kodlar hakknda bilgi vermektir. <hr width=80%>

<!-- Sayfann banda balatm olduumuz body etiketini bitiriyoruz. --> </body> </html>

Meta Etiketi ile Ynlendirme rnei


Burada <meta> etiketindeki refresh zelliini kullanarak ynlendirmeye bir rnek verilmitir. Sayfada yazl olan kodlar herhangi bir metin dzenleyici iine yaptrp, dosyalar belirtildii gibi kaydedin. Daha sonra ornek_html2.html dosyasn zerine ift tklayarak ap nasl altn grp ilgili kod satrlarn inceleyebilirsiniz. <!-- ornek_html2.html ad ile kaydedin --> <html> <head> <title>Geici Sayfa</title> <! -- meta etiketindeki refresh kodu ile baka bir sayfaya ynlendirme yaplyor -- > <meta http-equiv="refresh" content="10;URL=ornek_html2_ana.html"> </head> <body bgcolor=#334455 text=#eaeaea link=#eaeaea vlink=#eaeaea alink=#808080> <br><br> <center>

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 19

<h1> Bu sayfa aldktan 10 saniye sonra otomatik olarak ayn dizinde bulunan <a href="./ornek_html2_ana.html"> ornek_html2_ana.html</a> dosyasn aacaktr. </h1> </center> </body> </html> Yukardaki dosya bizim birinci HTML dosyamz. Bu dosya aldktan 10 saniye sonra otomatik olarak aadaki dosyay amas gereklidir. <!-- ornek_html2_ana.html ad ile kaydedin --> <html> <head> <title>Ana Sayfa</title> </head>

<body bgcolor="#334455" text="#eaeaea"> <center> <h1> ornek_html2_ana.html dosyasndasnz. <br>Ynlendirme baarl! </h1> </center> </body> </html>

20 :.

CSS (Cascading Style Sheets)


<font> etiketini anlatrken, bu etiket yerine CSS kullanmnn tasarmcya kolaylk salayacan sylemitim. CSS sayesinde HTML ile kullanabildiimiz etiketlerin zelliklerini deitirebiliriz. Mesela hazrladmz bir sayfada <h1> ve <h2> etiketi ile yazlacak yerlerin renginin #55558f kodu ile gsterilen renk olmasn istiyoruz. Normalde bunun iin her balk yazacamz yere <font color="#55558f"> yazmamz gerekecekti ama CSS bizi bu zahmetten kurtaryor. CSS kodlarmz HTML dosyamzda kullanabilmemiz iin deiik yollar vardr. Bunlardan ikisi kodlar direk HTMLnin <style> etiketi ierisine yazmak dieri ise CSS kodlarmz ayr bir dosyaya yazmamzdr. <html> <head><title>CSS Denemesi</title> <style> h1 { color: #55558f } h2 { color: #55558f } </style> </head> <body> <h1>Merhaba. Bu yaznn rengini CSS ile ayarladm.</h1> <h2>Ayrca bu yaznnki de.</h2> </body> </html> Yukardaki rnei bir HTML dosyasna yazp, dosyay aarsak, aada greceiniz gibi balklarn rengi siyah olmayacaktr. Bunun sebebi CSS ile <h1> ve <h2> etiketlerinn zelliklerini deitirmi olmamzdr. Ayn rnekteki <style> etiketini ..... <style> h1, h2 { color: #55558f } </style> .... ekilde yazmamzda sayfann grnmnde bir deiiklie yol amayacaktr. Ayn sonucu elde etmek iin kullanacamz bir baka yntem ise ayr bir CSS dosyas hazrlamaktr. Bu yntem nceki ynteme nazaran daha kullanldr, nk hazrladmz CSS dosyasn birden ok HTML dosyasnda kullanma olana buluruz. Aadaki kodlar bo bir metin dosyasna yazp ilk.css ad ile kaydedin. h1, h2 { color: #55558f } Daha sonra yeni HTML dosyas iine <html> <head> <title>CSS Denemesi</title> <link rel="stylesheet" href="ilk.css" type="text/css"> </head> <body>

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 21

<h1>Merhaba. Bu yaznn rengini CSS ile ayarladm.</h1> <h2>Ayrca bu yaznnki de.</h2> </body> </html> kodlarn yazp kaydedin. HTML dosyasn atnz zaman ilk CSS sayfamzn ayns ile karlarz. Burada CSS dosyamz ayr bir dosya olduu iin sadece bir dosyada deil, sitemizdeki tm HTML dosyalarnda kullanlabilir. Tm dosyalarmzda belli bir standard hedef almamz sitemizde uyumlu bir grnm olumasna yardmc olacaktr. CSS dosyalarnda tanmlanabilecek zellikler ok eitlidir. CSS1de yaklak 50 eit zellik (color, font-size... gibi) tanmlanabilmesine karn 1998den itibaren kullanlan CSS2de yaklak 120 zellik tanmlanabilmektedir. CSS hakknda daha ayrntl bilgi iin http://www.w3.org/TR/REC-CSS2 adresindeki belgeyi okumanz hatta bu belgeyi bir bavuru kayna olarak makinanzda bulundurmanz tavsiye ederim. Burada CSSnin 2.srm olan CSS2 anlatlmaktadr. Belgeler sitesinde kullanlan ve birok web istemcisi ile uyumluluu denenmi kodlar ieren belgeler.css dosyasn da incelemenizi neririm. Bu dosyada kullanlan pek ok zellikten burada bahsedilmeyecektir. Ancak bu dosyay kitapln sayfalarnn dosyalar ile birlikte inceleyerek neyin niin yapldn anlayabilirsiniz.

22 :.

Web Programclna Giri


ereveler, tablolar, formlar. PHP ve MySQL ile Web Programlama
Internet'te gezerken ye kayd yapan sitelere, ziyareti defterlerine ve sayalara dikkat

etmisinizdir. Buraya kadar rendiiniz HTML kodlar ile bir siteye saya, ziyareti defteri, forum veya ifreli giri yapabilmeniz olas deil. Saydklarmz yapabilmeniz iin web programlama dilleri dediimiz PHP,ASP, CGI... gibi diller hakknda bilginizin olmas gereklidir. Bu blm altnda HTML ile frame, tablo ve form kullanmnn yan sra PHP ile web programlama ve MySQL ile veritaban gibi konulara giri yaplacaktr. Tabii nceki blmde anlatlan HTML kodlar gibi burada verilen PHP ve MySQL bilgisi sadece size bir balang olacaktr. PHP ve MySQL in kendilerine ait, her biri iin yaklak bin sayfalk belgeleri bulunmaktadr.

<frameset> </frameset>
Sayfamza ereve destei katmak iin kullanlan etikettir. Etiketin kullanmna gemeden nce yabanc olan okuyucular iin ereve kavramn aklamak istiyorum. ereve destei ieren bir sayfa oluturmak iin en az tane normal HTML dosyasna ihtiyacmz vardr. Bu dosyadan biri hangi HTML dosyalarnn ereveleri oluturacan belirler. Dier ikisi de ereveleri oluturur. ereve kullanmna en gzel rnek yahoo ve hotmail gibi eposta sunucularnn kullanc arayzdr. Girilecek Kod cols = "deer" rows = "deer" frameborder = "deer" Grevi Bir erevenin ekrandaki geniliini verir. Bir erevenin ekrandaki yksekliini verir. ereveler arasnda izgi olup olmayaca belirlenir Tablo 11: Frameset yardmc kodlar <frameset cols=125,* frameborder=0> <frame name=menu target=ana src=menu.html scrolling=auto> <frame name=ana src=ana.html scrolling=auto> <noframes> <body> <h1>Oppps...Web istemcinizin frame destei yok!!!!</h1> </body> </noframes> </frameset> Yukardaki HTML kodlarn index.html adl bir HTML dosyas iine yazp dosyay altrmamz halinde hata ile karlarz. stemci HTML kodumuzda verilen bilgi dorultusunda bulunduumuz dizinde ana.html ve menu.html dosyalarn da arayacaktr. Bu dosyalar yazp dizine kaydetmemiz halinde istemci penceresinin sol tarafndan itibaren 125 piksellik alan <frame> etiketi ile belirtilen menu.html dosyasna ayrlacaktr. Frameset etiketi ile birlikte kullanlan frameborder = "0" kodu kullandmz ereveler arasnda ereve izgisi olumas engellenecektir. <frame> etiketi da frameset etiketi ierisinde yardmc etiket olarak kullanlr. Kullanacamz ereve sayfalarn ve zelliklerini belirlemek iin kullanrz.

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 23

name = "ad" kodu ile kullandmz ereveye bir isim veririz. Bu isim sayesinde target = "hedef" yardmc kodu ile belirtilen sayfada bir baa tkland zaman alacak yeni sayfann yeri belirlenir. scrolling = "auto" kodu kaydrma ubuu iin kullanlr. <noframes> etiketi, eer ziyaretinin istemcisinin frame destei yoksa ziyaretiye grntlenecek sayfay belirlemede kullanlr. Daha ok eski ve Linux altnda kullanlan metin tabanl istemcilerde frame destei yoktur. Son olarak da frame etiketi ile birlikte kullanlan src = "dosya ad" koduna gelmek istiyorum. Tahmin ettiiniz gibi frame iin kullanlacak sayfay belirlemede kullanlr. <frameset rows=125,* frameborder=0> <frame name=menu target=ana src=menu.html scrolling=auto> <frame name=ana src=ana.html scrolling=auto> <noframes> <body> <h1>Oppps...Web istemcinizin frame destei yok</h1> </body> </noframes> </frameset> Yukardaki kod kmesi de ilkinden farkl olarak sayfalar yahoo.com'daki gibi deil de biri yukarda dieri de onun aasnda olacak ekilde konumlandrlr. Sayfann ilk 125 pikseli ilk dosyaya geri kalanlar da dier dosyaya ayrlr.

<table> </table>
Web sayfamza tablo eklemek iin kullandmz etikettir. Tablolar profesyonel web sayfalarnn ayrlmaz elerindendir. Web zerinde kullanlan tm tablolar satrlar ve bu satrlarn ierisindeki stunlardan oluur. Bu etiket ile birlikte kullanlan kodlar aada tanmladm. Girilecek Kod border = "deer" width = "deer" height = "deer" bgcolor = "renk" cellpadding = "deer" cellspacing = "deer" Tablo 12: Table etiketi yardmc kodlar Bu kodlar verdikten sonra basit bir tablo rnei yapalm. rnekte table etiketi dnda baka etiketlerin de kullanldna dikkat edin. <table border="1" bgcolor="#aabbcc"> <tr> <td bgcolor="#f80000">Burada bir yaz var</td> <td>Buras da baka bir gze.</td> </tr> </table> Grevi Tablonun kenarlnn varln belirler. Tablonun genilii belirlenir. Tablonun ykseklii belirlenir. Tablonun zemin rengi belirlenir. Tablo gzeleri iindeki elerin tablo kenarlklarna uzakl belirlenir.

24 :.

Yukardaki kodlar dikkatli bir ekilde incelersek, <tr> ile satr balangc ve <td> ile stun balangc yapldn fark edebiliriz. Yani her <tr> etiketi bize bir satr aar ve biz <td> etiketi ile bu satra stunlar yerletiririz. Daha sonra </tr> etiketi ile satr bitirilir. Yukardaki tabloya bir satr daha eklemek iin aadaki gibi bir kod kmesi kullanrz. <table border="1" bgcolor="#aabbcc"> <tr> <td bgcolor="#f80000">Burada bir yaz var</td> <td>Buras da baka bir gze.</td> </tr> <!-- Aada ikinci satr balyor --> <tr> <td bgcolor="#00f800" width="50%">kinci satrn ilk stunu</td> <td>kinci satrn ikinci stunu</td> </tr> </table> Yukardaki kod kmesi bize iki satrl bir tablo verecektir. <td> etiketi ile birlikte width, bgcolor gibi zelliklerin kullanlabildiine dikkat edin. Peki ya iki stunluk bir satr ya da iki satrlk bir stun yapacaksak nasl yapacaz? Aadaki kodlar incelerseniz sorunuza cevap bulabilirsiniz. <table border="1" bgcolor="aabbcc" width="80%"> <tr> <td bgcolor="#f80000">Burada bir yaz var</td> <td>Buras da baka bir gze.</td> </tr> <!-- Aada ikinci satr balyor --> <tr> <td bgcolor="#00f800" width="50%">kinci satrn ilk stunu</td> <td>kinci satrn ikinci stunu</td> </tr > <!-Bu yeni satr iki stunluk. Bunu <td> etiketini iinde colspan="stun says" ile belirledim Ayn eklide iki satrlk bir stun oluturmak iin rowspan="satr says" kodu kullanlr --> <tr> <td colspan="2"> <center> Tablomuz iki stunluk olmasna ramen, burada iki stunluk bir satr var. </center> </td> </tr> <tr> <td rowspan="2">Buras iki satrlk bir stun.</td> <td>Buras ilk satr.</td> </tr>

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 25

<tr> <td>Buras da ikinci satr.</td> </tr> </table> Yukardaki rneklerde tabloda kenarlklarn grnp retici olmas iin border=1 kodu kulllmtr. Sayfalarnzda gerekmedike kenarlk kullanmamanz sayfanzn grnm asndan daha iyi olacaktr.

<form> </form>
Artk formlarla birlikte dinamik web tasarmna ilk adm atm oluyoruz. Formlar yoluyla ziyaretiden bilgi alabilir, aldmz bilgi dorultusunda birok ilemi gerekletirebiliriz. Ziyaretiye gnderilecek formu hazrlarken, gze ho grnmesi asndan, tablolar en ok kullanacamz bileenler olacaktr. Form etiketi ile birlikte en ok kullanlan iki kod: action ve methoddur. Girilecek Kod action = "dosya ismi" method = "yntem" Grevi Formdan girilecek dosyann tam yolu. bilgilerin deerlendirilecei

Formdan girilecek bilgilerin deerlendirici dosyaya gnderilme yntemi Tablo 13: Form etiketi yardmc elemanlar

Formlar hazrlanrken ok deiik elemanlar kullanlr. imdi formumuza dahil edilebilecek elemanlar ksaca tanyalm. Tanmladmz elemanlarn etkin kullanm iin form etiketinin yorum aral iinde kullanlmas gereklidir! Bu elemanlar form etiketinin dnda da kullanlabilirlerse de istenen fayda salanamayacaktr. Dmeler 3 tr dme vardr: 1. Gnderme dmeleri Tklandnda formu gnderir. Bir form zerinde birden fazla gnderme dmesi bulunabilir. 2. Sfrlama dmeleri Tklandnda formun ierii balang deerlerine dndrr. 3. Genel amal dmeler ntanml bir davrana sahip olmayan dmelerdir. Tklandnda event parametresinde belirtilen betii altrarak baz ek ilevlerin gerekletirilmesinde kullanlrlar. Dmeler ya dorudan <button> etiketi kullanlarak ya da <input> etiketinde bir parametre olarak belirtilerek kullanlr. Daha fazla seenek saladndan dorudan <button> etiketi kullanm tercih edilir. Belirtildikleri etiketin type parametresinde bu 3 tr dme srasyla submit, reset, button deerleri verilerek kullanlr.

26 :.

Onay kutular Kare, iaretlenebilen kutucuklar oluturmak iin kullanlr. <input> etiketinde bir parametre olarak belirtilerek kullanlr. Radyo dmeleri Sayfamza yuvarlak iaret kutucuu brakmak iin kullanlr. Kullanlan kutucuun onay kutusundan fark, sadece bir seenek iaretlenebilmesidir. <input> etiketinde bir parametre olarak type="radio" belirtilerek ve ek olarak value ve name parametreleriyle birlikte kullanlr. Menler Ziyareti bu menden mevcut seenekler arasndan herhangi birini seerek bilgi giriinde bulunur. Sayfamza bu eleman eklemek iin <select> etiketini kullanrz. Metin girileri Metin girdilerini almak iin iki tr eleman kullanlr. <input> etiketinde bir parametre olarak type="text" kullanlarak tek satrlk ve <textarea> etiketi ile oluturulan ok satrl metin girdi elemanlardr. Dosya seim elemanlar <input> etiketinde bir parametre olarak type="file" kullanlarak oluturulan elemanlardr. Gizli elemanlar <input> etiketinde bir parametre olarak type="hidden" kullanlarak oluturulan elemanlardr. Nesneler <object> etiketi kullanlarak oluturulan elemanlardr. imdi tanmlanan elemanlarda belirtilen etiketlerin kullanmna bakalm.

<input>
Genel amal bir form etiketidir. Sonlandrc etiketi yoktur. Girdi tr type esinde belirtilerek farkl girdilerin alnmasn salar. Girilecek Kod type = "eleman tr" Grevi Eleman tr belirtilir. text, password, checkbox, radio, submit, reset, file, hidden, image, button deerlerinden biri kullanlr. Etiketin bu deerlerle nasl kullanldn aada rnekleriyle aklamaya altm. Girilen verinin hangi deiken ismi altnda deerlendirileceini belirtmek iin kullanlr. Mutlaka belirtilmelidir. "radio" ve "checkbox" dnda bu parametrenin kullanm istee baldr. Belirtilecek "deer" eleman trne gre deiir.

name = "isim"

value = "deer"

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 27

size = "deer"

"text" ve "password" elemanlarnda karakter saysn, dierlerinde ise piksel cinsinden genilii belirtmek iin kullanlr. "text" ve "password" elemanlarnda girilebilecek en ok karakter saysn belirtmek iin kullanlr. ntanml deeri snrszdr. Sadece "radio" ve "checkbox" elemanlarnda seili eleman "on" olarak belirtmek iin kullanlr. Dierlerinde yoksaylr. image" elemannda resim dosyasn belirtmek iin kullanlr. Fare eleman zerindeyken balon iinde grnecek aklama metni iin kullanlr. Elemann form zerinde belirtmek iin kullanlr. Veri girme iindir. amacyla nasl konumlanacan elemanlar

maxlength = "deer"

checked = "deer"

src = "dosya ismi" " alt = "metin" align = "left|center|right" readonly disabled

kullanlmayacak

Veri girii engellenecek elemanlar iindir. Tablo 14: Input etiketi yardmc kodlar type parametresi ile belirtilebilecek eleman trleri:

text Formumuza tek satrlk yaz yazlabilecek alan eklemek iin kullanlr. Ad: <input type="text" name="firstname"><br> Soyad: <input type="text" name="lastname"> Ad: Soyad: password Formumuza parola yazlabilecek alan eklemek iin kullanlr. "text" elemanndan farkl olarak bu alana girilen her karakter * ile gsterilir. Kullanc: <input type="text" name="username"><br> Parola: <input type="password" name="password"> Kullanc: Parola: checkbox Formumuza onay kutular eklemek iin kullanlr. <input type="checkbox" name="kutu1" checked="on"> HTML<br> <input type="checkbox" name="kutu2"> PHP<br> <input type="checkbox" name="kutu3"> MySQL

28 :.

HTML PHP MySQL radio Formumuza radyo dmeleri eklemek iin kullanlr.

submit, reset, button, image Formumuzda belirtilen bilgileri ilgili dosyaya yollamak iin kullanlacak dmeler yerletirmek iin kullanlr. Submit formu kabul eder ve yollar, reset ise girilen bilgileri sfrlar. Button ve image herhangi bir amala kullanmak iindir. Dier ikisi gibi ntanml bir davran olmayan, gerekletirecei eylem bir betikle tanmlanabilen dmelerdir. Image ile oluturulan dme src parametresinde belirtilen dosyadaki dme resmi kullanlarak oluturulur. <form action="http://herhangibirsite.dom/prog/adduser" method="post"> <p> Adnz: <input type="text" name="firstname"><br> Soyadnz: <input type="text" name="lastname"><br> Eposta adresiniz: <input type="text" name="email"><br> <input type="radio" name="cinsiyet" value="erkek" checked="on"> Erkek<br> <input type="radio" name="cinsiyet" value="disi"> Dii<br> <input type="submit" value="Send"> <input type="reset" value="Sfrla"> </P> </form> Adnz: Soyadnz: Eposta adresiniz: Erkek Dii

OK

Sfrla

file Formumuza dosya ismi giri alan eklemek iin kullanlr. <input type="file">

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 29

<button> </button>
Dmelerin input etiketiyle kullanmna benzer ekilde kullanlr. Ancak sonlandrc etiket ierdiinden yorum alannda baka etiketlerin yeralabilmesi nedeniyle daha geni bir kullanm alan vardr. Yukardaki rnei button etiketi ile yazarsak farklar grebilirsiniz. <form action="http://herhangibirsite.dom/prog/adduser" method="post"> <p> Adnz: <input type="text" name="firstname"><br> Soyadnz: <input type="text" name="lastname"><br> Eposta adresiniz: <input type="text" name="email"><br> <input type="radio" name="cinsiyet" value="erkek" checked="on"> Erkek<br> <input type="radio" name="cinsiyet" value="disi"> Dii<br> <button name="submit" type="submit" value="submit"> <img width="20" height="21" src="../images/belgeler-logo.gif"/>Gnder </button> <button name="reset" type="reset" value="reset"> <img width="20" height="21" src="../images/belgeler-logo.gif"/>Sfrla </button> </P> </form>

<select> </select>, <optgroup> </optgroup>, <option> </option>


<select> etiketi seim listesi oluturmakta kullanlr. <option> etiketi ile liste eleri belirtilir. <optgroup> etiketi ise bu liste elemanlarn konularna gre gruplamakta kullanlr. Bir select etiketi en azndan bir option etiketi iermeli ve optgroup etiketleri i ie olmamaldr. Tek veya ok seimli (multiple parametresi ile), sabit (size parametresi ile) veya aaya alan listeler oluturulabilir. Tek seimli aaya alan liste rnei: <select name="os_type"> <option value="win">Windows 9x</option> <option value="winnt">Windows NT</option> <option value="linux">Linux</option> <option value="unix">UNIX</option> <option value="os2">OS/2</option> <option value="macos">MacOS</option> </select>

30 :.

ok seimli (ctrl+farenin sol tuu ile) liste rnei: <select name="menu" multiple> <option selected="" value="none">Hibiri</option> <optgroup label="orbalar"> <option value="c1">Tarhana</option> <option value="c2">Ezogelin</option> <option value="c3">kembe</option> </optgroup> <optgroup label="Yemekler"> <option value="y1">mambayld</option> <option value="y2">Sultanbeendi</option> <option value="y3">Kadnbudu</option> </optgroup> <optgroup label="Tatllar"> <option value="t1">Kazandibi</option> <option value="t2">Tavukgs</option> <option value="t3">Kekl</option> </optgroup> </select>

<textarea> </textarea>
ngilizce metin alan anlamna gelen bu kelime formumuza yaz yazlabilecek alan eklemek iin kullanlr. Yardmc eler olarak rows ve cols kullanlr. rnek aadaki blmde verilmitir.

<fieldset> </fieldset>, <legend> </legend>


Form elemanlarn konularna gre gruplamak iin kullanlan etiketlerdir. Formun alalrln arttrmas ve kullanmn kolaylatrmas bakmndan ok faydaldr. <legend> etiketi gruplanm elemanlara bir balk oluturur. Aada bir hasta kart rnek olarak verilmitir. <fieldset> <legend>Kiisel Bilgiler</legend><br/> Ad: <input name="personal_fname" type="text" size="20" tabindex="1"/> Soyad: <input name="personal_lname" type="text" size="25" tabindex="2"/><br/><br/> Adresi: <input name="personal_address" type="text" size="55" tabindex="3"/><br/><br/> <!-- ...dier kiisel bilgiler... --> </fieldset> <fieldset> <legend>Tbb Gemii</legend><br/> <input name="gecirilen_hastalik"

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 31

type="checkbox" value="bogmaca" tabindex="20"/> Bomaca <input name="gecirilen_hastalik" type="checkbox" value="kabakulak" tabindex="21"/> Kabakulak <input name="gecirilen_hastalik" type="checkbox" value="kizamik" tabindex="22"/> Kzamk <input name="gecirilen_hastalik" type="checkbox" value="sucicegi" tabindex="23"/> Suiei<br/><br/>

<!-- ...tbbi gemii ile ilgili dier... --> </fieldset> <fieldset> <legend>la Tedavisi</legend><br/> Halen kullanmakta olduunuz ilalar var m?<br/> <input name="medication_now" type="radio" value="Evet" tabindex="35"/> Evet <input name="medication_now" type="radio" value="Hayir" tabindex="35"/>Hayr<br/><br/>

Eer ila kullanyorsanz, aaya kullandnz ilalar ve gnlk dozlarn belirtiniz:<br/> <textarea name="kullandigi_ilaclar" rows="10" cols="60" tabindex="40"> </textarea> </fieldset>

32 :.

PHP ve MySQL ile Web Programlama


PHP dosyalar da HTML dosyalar gibi sade metin dosyalarndan olumaktadr. Tek fark dosyalar yerletireceiniz sunucu sisteminde bu dosyalarn alabilir dosya olarak saklanmalardr. Burada bulunan PHP denemelerini normal bir bilgisayar zerinde altrmanz olanakszdr. Yazdnz PHP dosyalarn altrabilmek iin bir web sunucusu ve php desteine ihtiyacnz vardr. Bu belgede bilgisayarnza PHP+MySQL+Apache kurulumu anlatlmamaktadr, fakat bu konu ile ilgili soru ve sorunlarnza Internet zerinde cevap bulabilirsiniz. Ayrca bu belgedeki PHP ve MySQL bilgileri sadece bir balang niteliindedir. Bu konular hakknda daha fazla bilgi iin http://www.php.net, www.php.org.tr ve http://www.mysql.com balca urayacanz adresler olmaldr.

PHP'ye Giri
PHP sunucu tarafl (server side), HTML ile uyumlu bir betik dilidir. Genelde kullandmz programlama dili ifadesi PHP iin yzde yz aklayc deildir. PHP, HTML de olduu gibi bir derleyici tarafndan derlenmez, sadece sunucudaki php program tarafndan yorumlanr. C bilen birisi iin PHP renmesi ok basit olan bir dildir, yle ki dosya ilemleri gibi kark konularda PHP, Cden ok daha basittir. Yazdnz PHP kodlar hibir zaman sitenizin ziyaretisine grntlenmez. Ziyareti sayfann kaynan grntlese bile grecei sizin PHP kodlarnzn sunucu sistemdeki php program tarafndan HTMLye evrilmi halidir. Aadaki kod kmesini incelerseniz daha iyi anlayacanz sanyorum. <?php printf(Bu bir PHP dosyasdr.<br>\n); print(Bu bir PHP dosyasdr.<br>\n); echo (Bu bir PHP dosyasdr.<br>\n); echo Bu bir PHP dosyasdr.<br>\n; ?> Yukardaki drt kod satr da ekrana Bu bir PHP dosyasdr. yazdracaktr. Web istemcinizden sayfann kaynana baktnz zaman sadece Bu Bu Bu Bu bir bir bir bir PHP PHP PHP PHP dosyasdr.<br> dosyasdr.<br> dosyasdr.<br> dosyasdr.<br>

gibi bir ierik grrsnz. Yazdnz kodlar sunucu sistemdeki php program tarafndan normal HTML kodlarna evrilmitir ve ziyareti bu kodlardan baka herhangi bir ierik gremez. Dikkat ettiyseniz sayfamzn kaynandaki kodlar drt satr halinde yazlm, eer PHP

programmzda her metinden sonra gelen \n karakterini kaldrsaydk sayfamzn kaynandaki komutlar tek satra yerleirdi. Fakat bu sayfann ziyaretiye grnen ksmn deitirmedii iin zerinde fazla durulmas gereken bir konu deil. Bir dier husus da kodlarmzda kullandmz <br> etiketi. Evet PHP iinde dorudan doruya HTML etiketleri kullanabilmemiz bize ok byk kolaylklar salayacaktr. PHP dosyalar sunucu sistemde .php ya da .php3 uzants ile saklanr (.php3, PHPnin 3. Srm iin kullanlmaktadr). Dosyamzda PHP kodlarn kullandmz yeri gstermek iin <?php ?> ya da <? ?> etiket

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 33

aralklarn kullanrz. Bu etiketlerin kullanld yerden itibaren sunucu etiket aralndaki komutlar php yorumlaycsna gnderir, php yorumlaycs da bu kodlar dz HTML kodlarna evirir. Denemelerinizi bir UNIX ya da trevi iletim sistemi zerinde yapmanz tavsiye ederim, nk PHP ile birlikte kullanlan bir ok ilev Windows altnda almamakta ya da sorun yaratmaktadr. Elinizin altnda PHP+MySQL destei bulunan bir sistem olduunu varsayarak blme balyorum. ncelikle PHPnin yazm kurallarndan sz etmek istiyorum. Daha ncede belirttiim gibi PHP kodlar <?php ?> ya da <? ?> etiketleri arasnda kullanlr. Yazdmz her komuttan sonra ; iareti kullanrz. Bir web sayfasnda veya formdan gelen deikenleri adlarnn bana $ iaret koyarak sembolize ederiz ve deiken adlarnda Trke karakter kullanamayz.

PHP ile Ekrana Yaz Yazma


PHP konu balnda verdiim rnekte olduu gibi ekrana yaz yazmak iin drt deiik yol kullanlabilir: printf(Bu bir PHP dosyasdr.<br>); print(Bu bir PHP dosyasdr.<br>); echo (Bu bir PHP dosyasdr.<br>); echo Bu bir PHP dosyasdr.<br>; Yukardaki drt satrda ekrana Bu bir PHP dosyasdr. yazacaktr. Dikkat ederseniz her komuttan sonra bir ; iareti kullanlyor. Bu iareti kullanmamamz halinde php program hata verecektir. imdi iinizde Bu yazy HTML ile daha ksa bir kod kmesi ile yazmak mmkn! diye dnenler olacaktr, fakat ileride ekrana deiken ile gelen bilginin yazdrlmasn grdkten sonra sizde bu yazm eklinin gereksiz olmadn anlayacaksnz. Aadaki rnekte $deger adl deikene deer atayp ekrana yazdryorum. <?php /* Buralar yorum satr*/ # Buras da tek satrlk yorum aral $deer = "Bu deikenin deeri"; echo $deer; ?> Bu dosyay yazp ilk.php diye kaydettikten sonra web istemcinizin adres satrna

http://localhost/ilk.php yazarsanz ekranda Bu deikenin deeri yazsn greceksiniz (Kullandnz sunucunun ismi localhost ve ilk.php dosyasnn da sunucunuzun ana web dizininde olduunu varsayalm). PHP ile sadece metinsel ilemler deil, matematiksel ilemler de gerekletirebilirsiniz. Bunun iin C programlama dilinde olduu gibi toplama iin +, karma iin -, arpma iin *, blme iin / ve kalan bulma iin % sembolleri kullanlr. sterseniz birka rnek ile matematiksel ilemlere giri yapalm. <?php ########################### # # Matematiksel lemler # mat.php #

34 :.

###########################

# Deikenler tanmlanyor $a = 10; $b = 2; $c = 3;

# Kullanlacak matematiksel ilevler tanmlanyor $toplam = ($a + $b + $c); $carpim = ($a * $b * $c); $bolum = ($a / $b); $kalan = ($a % $c);

# ktlar ekrana yazdrlyor echo "Tanml deikenlerin toplam: <b>$toplam</b><br>\n"; echo "Tanml deikenlerin arpm: <b>$carpim</b><br>\n"; echo "Birinci ve ikinci deikenin blmesi sonucu blm: <b>$bolum</b><br>\n"; echo "Birinci ve nc deikenin blmesi sonucu kalan: <b>$kalan</b>"; ?> Yukardaki rnek, programlama ile daha nce uramam birisi iin biraz kark olabilir. nce deikenlere deer atanr ve belirli ilevler kullanlarak bu deerler istenilen ilemlerden geirilerek farkl bir sonu elde edilir. Tpk matematikte kullanlan ilevler gibi, belirli ilemler istenilen deiken deerine uygulanr. Yani, y = f(x, w, z) = x + w + z gibi, bizde y yerine $toplam diye bir deiken ve x, w ve z yerine $a, $b ve $c gibi deikenler kullandk. Matematikte kullanlan ilevlerden tek fark kullanlan deiken tiplerinin farkl olmas ve matematiksel ilemler dnda da ilemlerin yaplabiliyor olmasdr. Bizim rneimizde baz matematiksel deerlerin toplam, arpm ve blm alnd. Bu matematiksel ilemleri istenilen ama dorultusunda uzatp karmaklatrmak mmkn. Yazdmz PHP dosyasnn HTML kaynak kodu Tanml deikenlerin toplam: <b>15</b><br> Tanml deikenlerin arpm: <b>60</b><br> Birinci ve ikinci deikenin blmesi sonucu blm: <b>5</b><br> Birinci ve nc deikenin blmesi sonucu kalan: <b>1</b> gibi dz HTML kodlarndan ibaret olacaktr. Ziyaretinin hibir ekilde bizim PHP kodlarmz grme ans yoktur. Kaynak kodundan kullandmz \n karakteri HTML ktmzda satrlarn tek bir satr gibi deil de alt alta yazlm satrlar olarak olumasn salad. Bu gibi durumlarda kullanm gerekli deilse de kullanmnn gerekli olduu durumlar kesinlikle vardr. Birde bir nceki rnei dikkatli bir ekilde incelediyseniz orada deikenin deerini verirken (trnak iareti) kullanmama karn son rnekte kullanmadm. Trnak iareti kullanlmad zaman PHP deikenimizin saysal deer tayan bir deiken olduunu anlayacaktr. Diyelim ki elimizde iki tane metin bilgisi tayan deiken var. Bunlar $ad = "Fehmi Noyan" ve $soyad = "S" olsun. Bu deikenlerin deerlerini birletirip tek bir deikende saklamak mmkndr. Saklamak istediimiz tek deiken $ad_soyad ise kullanmamz gereken komut kmesi

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 35

$ad_soyad = $ad . " " . $soyad; gibi bir satrdr. Bu ilem iin ok farkl birletirme yollar olsa da bu kullanm birok yerde iinizi grecektir.

Web Formundan Bilgi Almak


Buraya kadar anlattklarm sadece bir giri iindi (imdiki aama da daha iin ba, yani giri bitmedi). Fakat sizinde bildiiniz gibi dinamik bir sitede deikenlerin deerleri kullanc tarafndan sunucu sisteme yollanr. Bu i iin ya form yntemi ya da adres satrndan bilgi girii yolu kullanlr. En yaygn ve kullanl olan form yntemidir. <! --- ad_soyad.html --- > <html> <head><title>Ad ve Soyad Bilgisi</title></head> <body bgcolor="#ffffff" text="#000000"> <form action="ad_soyad.php" method="get"> Adnz: <input type="text" name="ad"><br> Soyadnz: <input type="text" name="soyad"><br> <input type="submit" value="Gnder"> </form></body></html> <? ################ # ad_soyad.php # ################ echo "Adnz $ad ve soyadnz $soyad."; ?> Yukardaki rnek dosyalar yorum satrlarnda belirtilen adlar ile yazp kaydettikten sonra, istemcinizin adres satrna http://localhost/ad_soyad.html yazp karnza kacak formu doldurun. "Gnder" dmesine bastktan sonra PHP dosyamz alacak ve bize istenilen kty verecektir. Burada dikkat etmeniz gereken nokta istemcinizin adres satrndaki bilgidir. Eer ben formda adm iin Fehmi Noyan soyadm iinse ISI (Trke karakter kullanmamak iin byk i kullanmadm) bilgilerini girersem adres satrnda http://localhost/ad_soyad.php?ad=Fehmi+Noyan&soyad=ISI gibi bir satr grnecektir. Dikkat ederseniz form ile gnderilen bilgilerin name="..." ksmnn PHP dosyamzdaki deiken adlarn ve adres satrndaki PHP dosyas ve ? karakterinden sonraki ksmlarn PHP dosyamza gidecek deikenlerin deerini verdiini fark edeceksiniz. HTML dosyamzda oluturduumuz web formunda kullandmz <input> etiketi iindeki name="..." kodu bize o etiket ile gelen bilginin action=... kodu ile belirtilen dosyada ayn isimli deiken olarak kullanlacan belirtir. Web formunu doldurmadan da, sadece adres satrna yukardaki satr girerek de formumuza bilgi yollayabiliriz. Satrda PHP dosyamzn isminden sonra bir ? karakteri kullanlr, daha sonra her deikenin ad ve deeri birbirinden & karakteri ile ayrlr. Bu yol ile web formlarndan bilgi gndermek mmkndr ama pek kullanl deildir. Formumuzda get yntemini kullandmz iin adres satrnda girdiimiz bilgiler grntlendi. Ayn HTML dosyasn formun bilgileri gnderme metodunu post olacak ekilde ayarlayp tekrar deneyin. Bu sefer adres satrnda girilen hibir bilgi olmayacaktr. Yani sadece http://localhost/ad_soyad.php

36 :.

gibi bir satr olacaktr. Ben rneklerimde bundan sonra post yntemini kullanacam.

Diziler
Diziler bazen kullanlmas kanlmaz olan ve her PHP programcsnn kullanmn bilmesi gereken elemanlardr. Adndan da anlalaca zere, diziler bir tek deikenin deeri ierisinde birden ok deer saklar. Mesela ierisinde haftann gnlerini barndran bir dizi deiken $hafta = array(Pazartesi, Sal, aramba, Perembe, Cuma, Cumartesi); eklinde tanmlanabilir. Dikkat ederseniz haftann son gn olan Pazar dizi ierisinde yer almyor. Pazar dizi ierisine dahil etmek iin $hafta[] = Pazar; eklinde bir ifade kullanabiliriz. Bylece son belirtilen Pazar eleman dizinin son eleman olmu olur. Dizi ierisindeki bir eleman ekrana yazmak iin, mesela dizinin 3. eleman, echo $hafta[2]; komutu kullanlr. Dizinin 3. eleman iin neden 2 rakamn kullandk? Bunun sebebi dizilerin ilk elemannn 1. deil 0. eleman olmasdr. Bir dizi deikeninin eleman says count() ilevi ile renilebilir. echo count($hafta); ifadesi ekrana 7 rakamn basacaktr. Dizi deikenleri ve bunlar zerinde ilem yapan ilevler ile ilgili bilgiyi PHP Manuelin Array Functions ksmnda bulabilirsiniz.

Mantksal leler
Bir PHP dosyasnda en ok kullanacanz ifadeleri oluturan mantksal ileleri nceden

programlama mant almam bir kii iin ilk etapta anlalmas biraz zor gelebilir fakat bu blm anlatrken bu durumu da gz nnde bulundurdum ve olabildiimce sade ve anlalr bir dil kullanmaya gayret gsterdim. Bu etapta tekrar hatrlatmak istiyorum, PHP ile kullanlan mantksal ileleri C dili ile kullanlanlarn tamamen aynsdr ve kullanm ekilleri arasnda hibir fark yoktur. lk nce kullanlan ilelerinin hangileri olduunu ve daha sonra bunlarn kullanm ekillerini anlatmay daha uygun grdm. le && || == ! != > < >= <= smi Ve Veya Eittir Deil Eit deil Byktr Kktr Byk eittir. Kk eittir. ya ya da da

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 37

Yukardaki ilelerini mantksal ifadelerde karlatrma ve verilen koulun doruluunu snama iin kullanacaz. lk iki ile dnda, az ok matematik bilgisi olan birisi dier ilelerinin kullanm eklini kestirmitir. Aslnda ilk ikisi de matematikte ilenmi olan mantk konusunun bir parasdr. Kullanacamz ifadelere gelen bilgiler bilgisayar dilinde iki ekilde deerlendirilir. 0 ve 1, yani yanl ve doru. Kuracamz tm ifadeler bu iki deer evresinde snrldr. && lei (Ve) 0 && 0 = 0 1 && 0 = 0 0 && 1 = 0 1 && 1 = 1 || lei (Veya) 0 || 0 = 0 1 || 0 = 1 0 || 1 = 1 1 || 1 = 1

Yukarda && ve || ilelerinin aldklar deerler dorultusunda oluturduklar deerleri yazdm. Bu karlatrma ilelerini birazdan anlatacam mantksal ifadeler ierisinde kullanacaz.

PHP Komutlar
if if komutu bir ifadenin doru olmas halinde izleyen komut kmesini iletir. ngilizce anlam eer olan kelime stlendii grev bakmndan da anlam ile bir btnlk iindedir. <? ################ # if.php #

################

$a = 5; $b = 3; if ( $a > $b ) { ?> Yukardaki kod paras $a deikenindeki deerin saysal olarak $b dekinden byk olmas halinde komut kmesinde belirtilen kodu yerine getirip ekrana a says b saysndan byktr. metnini basacaktr. Aksi taktirde (yani $ann saysal deeri $bninkinden kk ise) hibir ilem yaplmadan komut kmesindeki kod atlanr. echo a says b saysndan byktr.; }

if... else ... Bu komutta if komutunda olduu gibi belirtilen ifadenin doru olmas halinde if ile belirtilen komut kmesini iletir, ifadenin yanl olmas halinde ise else ile belirtilen komut kmesi iletilecektir. <? ################### # if_else.php #

###################

$a = 2; $b = 3;

38 :.

if ($a > $b) { echo a says b saysndan byktr.; } else { echo b says a saysndan byktr.; } ?> Parantez iindeki mantksal ifadenin doruluu halinde if komutunu izleyen komut kmesini ({ ve } iaretleri ile snrl blge) iletilir. Yukarda $a ile belirtilen deikenin saysal olarak deeri $b ile belirtilenden byk olmas halinde ekrana a says b saysndan byktr. metni aksi taktirde, yani $a deikeni saysal olarak $b'den kkse, ekrana b says a saysndan byktr. metni baslacaktr. Komut kmesinde belirtilen kod sadece ekrana yaz yazma deil, her trl ilem iin dzenlenebilir.

while Yine ngilizce anlam esnasnda olan kelime yapt grev itibari ile anlamna yakndr. Parantez iinde belirtilen koul doru olduu srece istenilen komut kmesini iletir. Aadaki rnek ilk bakta biraz kark gelebilir fakat dikkatli ve adm adm takip ederseniz pek de kark olmadn anlayacaksnz. <html> <head><title>HTML iinde kullanlan PHP</title> </head> <body bgcolor="#ffffff" text="#000000">

<? ################ # while.php #

################

$a = 1; while($a < 7): echo <h$a>Bu h$a ile yazlm bir balk.</h$a><br>\n; $a = $a + 1; endwhile; ?>

</body> </html> Yukardaki rnek hem while dngsnn kullanmna hem de HTML iinde PHP kullanmna gzel bir rnek oluturuyor. Kullandm while dngsn aadaki gibi de yazabilirdim. <html> <head><title>HTML iinde kullanlan PHP</title> </head> <body bgcolor="#ffffff" text="#000000">

<? ################ # while.php #

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 39

################

$a = 1; while($a < 7) { echo <h$a>Bu h$a ile yazlm bir balk.</h$a><br>\n; $a++; } ?>

</body> </html> Sonu yine ayn olacaktr. Kullanm asndan bir fark yoktur hangisinin kullanlaca programcya kalmtr. Yukardaki rnekte yabanc olduunuz bir kullanm $a++ ifadesidir (Bu kullanmn ayns Cde de vardr) Bu ifade $a = $a + 1 ifadesi ile ayndr (Programclkta ok kullanlan bir ifadedir fakat deneyimi olmayanlar biraz zorlanacaktr). Bunun anlam, $adaki deeri bir arttr ve sonra bu deeri $ann yeni deeri olarak ata dr. Yani $a = 1 ise $a++dan sonra $a = 2 olacaktr. Ayn ekilde $a--'de, $ann deerini bir azalt ve bu deeri $ann yeni deeri olarak ata dr. Yukardaki rnekte ilk olarak $a deikenine 1 deeri atanyor ve bu <h$a> ifadesi ile bir HTML etiketine evriliyor. $a = 1 deeri iin bu ifade <h1>, $a = 2 iin bu ifade <h2> ... diye deerler alr. while dngs ile $ann alabilecei en son deerin 6 olduu belirtilmitir ($a < 7, yedi olduu an dng son bulur!). $ann 7 deerini almas ile belirtilen koul yanl olur (yani 0) ve dng iletilmez. Eer $a++ ifadesi kullanlmam olsayd, program sonsuz dngye girecekti bu da ekrana sonsuz kere <h1> etiketi ile belirtilen metnin baslmas demektir. (Aslnda sunucu sistemdeki PHP ayar dosyasnda ntanml olarak PHP dosyalarnn maksimum alma sreleri 30 saniye olarak belirlendii iin sonsuz dng szckleri tam olarak doru deildir). while dngsnde koul nce gzden geirilir, daha sonra ilemler gerekletirilir.

do ... while do...while dngs, while dngs ile ayn ileve sahiptir. Yalnz arada bir fark vardr. While dngsnde koul dngye girilmeden kontrol edilir buna karn do....while dngsnde koul dngnn sonunda kontrol edilir. <? $a = 0; do { print $a; } while($a > 0); ?> Yukardaki kod normal while dngs ile yazlm olsayd, yani aadaki gibi <? $a = 0; while($a > 0) {

40 :.

print $a; } ?> ekrana hibir kt vermeyecekti. Halbuki ilk rnekte ekrana 0 baslacaktr. Do....while ile oluturulan bir dng while ile de oluturulabilir ve, benim ahsi grm, while dngsnn kullanm daha kolaydr. Tabi ki bu dngnn de kendine has kullanm alanlar vardr ama ben u ana kadar kendi yazdm betiklerde bu tr dngler iin hep while dngsn kullandm.

for for dngs de hemen hemen ayn ilevi grr. Kullanm eklini, while dngsndeki rnek ile ayn kty verecek bir rnek ile aklamak istiyorum. <html> <head><title>HTML iinde kullanlan PHP</title> </head> <body bgcolor="#ffffff" text="#000000">

<? ################ # for.php #

################

for ($a = 1; $a < 7; $a++) { echo "<h$a>Bu h$a ile yazlm bir balktr.</h$a><br>\n"; } ?> </body> </html> Yukardaki kod da while dngsndeki ile ayn kty verir. for dngsnde deikenin balang deeri ilk olarak yazlr, daha sonra koul ve en sonunda ise deiken iin iletilmesi gereken blm gelir. Yani kullanmn kalb

for (ilk_deer;koul;ilem) eklindedir. Tabii benim kullandm rnek tm dngler iin geerli, yle durumlar ile karlarsnz ki alternatifiniz olmaz yani sadece for ya da while dngsn kullanabilirsiniz. Nasl olsa hepsi ayn ii yapyor diye stten bakp gemeyin, iyice kavrayn.

switch switch dngs aslnda i ie gemi if dngleridir. Fakat, kiisel deneyimlerime dayanarak sylyorum, birok if kullandnz bir dngde i bazen gerekten iinden klmaz bir hal alyor. Mesela bir web formu ile (drop-down menu ile) size bir deer gelecek. Siz bu deerin ne olduunu anlamak istiyorsunuz. Bunun iin mende nceden tanml deerler arasnda bir secim yaplr. te bu seim iin

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 41

switch dngs kullanlr. Aadaki dosyalar yorum ksmlarnda belirtilen isimler ile kaydedin ve daha sonra istemcinizden menu.html dosyasn an. <!-- menu.html ad ile kaydedin --> <html> <head> <title>Menu</title> </head> <body bgcolor="#ffffff" text="#000000"> <form action="menu.php" method="post"> <b>letim sisteminizi sein</b><br> <select name=os_type size=1> <option value=win>Windows 9x</option> <option value=winnt>Windows NT</option> <option value=linux>Linux</option> <option value=unix>UNIX</option> <option value=os2>OS/2</option> <option value=macos>MacOS</option> </select> <input type="submit" value= </form> </body> </html> Sorgula >

<? // menu.php ad ile kaydedin switch($os_type) { case win : echo Kullandnz iletim sistemi Windows 9x; break; case winnt : echo Kullandnz iletim sistemi Windows NT; break; case linux : echo Kullandnz iletim sistemi Linux; break; case unix : echo Kullandnz iletim sistemi UNIX; break; case os2 : echo Kullandnz iletim sistemi OS/2; break; case macos : echo Kullandnz iletim sistemi MacOS; break; } ?> 42 :.

Yukardaki rnek kullancya kulland iletim sistemini soruyor ve gelen cevap dorultusunda dngde belirtilen ksm iletiyor. Kullandm break komutu programn o ksmnn iletilmesi halinde dngden klmasn salar, yani kullanc iletim sistemin Linux olarak iaretlemise Windows, WindowsNT ve en son Linux blm iletilir. Linux blmndeki Kullandnz iletim sistemi Linux metni ekrana baslr ve bir sonraki komut olan break iletilir, break komutunun ilemesi ile dngden klr ve bylece dier deerler kontrol edilerek vakit kaybedilmez. switch dngsnde kullanlan ve benim u rnekte kullanmadm bir zellii daha var: default seenei. Bu seenek dier hibir seim doru olmad taktirde altrlacak ksmdr. Bir rnek vermek gerekirse. <? // menu.php ad ile kaydedin

$i = 5; switch($i) { case 2: echo Deeri 2; break; case 3: echo Deeri 3; break; default: echo Deeri bilinmiyor; } ?> Bu kod ekrana Deeri bilinmiyor yazacaktr. nk siz $i deikenine tanml olan 2 ve 3 deerleri dnda ne deer verirseniz verin bu iki koul dnda kalan blm yani default ile tanml blm iletilecektir.

Baz PHP levleri


Include() ve Require() ilevleri include ve require ilevleri bir PHP programcsnn hayatn kolaylatran balca ilevlerdendir. Bu iki ilevin grevleri birbirinin ayn olsa da ileyilerinde ufak ama nemli bir fark vardr. Bu iki ilev parametre olarak aldklar dosyay sanki o dosyann tm ieriini yazlmasna iler. Mesela <? ################# # inc_req.php #

################# include (./dosya.html); require (./dosya.html); ?>

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 43

Bu PHP kodu bulunduu dizindeki dosya.html dosyasn iki kere ekrana basar. Yani sanki siz o dosyann ieriini elle yazmsnz gibi alr. Bu iki ilev arasndaki fark, require() ilevi sadece gerektii durumlarda dosyay iler fakat include() ilevi dosya ekrana baslmayacak olsa bile (bir dng iinde olabilir) dosyay ap hafza kaybna sebep olur. Bunun iin include() ilevini kullanmanzn zorunlu olmad durumlarda require() ilevini kullanmanz performans arttracaktr.

mail() ilevi Adndan da anlayacanz zere PHPde e-posta gndermek iin kullanlan ilevdir. Kullanm ok basit ve zahmetsiz olmasna karn eer denemelerinizi evde bir Windows sistemi zerinde gerekletiriyorsanz bu ilevi kullanmak iin bilgisayarnza bir de eposta sunucusu kurmanz gerekli (ne yazk ki PHP ile kullanlan birok ilev Windows altnda sorun karyor). Kurulu bir Linux sistemde byle bir sorununuz yok, nk Linux ile birlikte kurulan sendmail program e-posta gnderme iinizi hallediyor. <? ###################### # mail_gonder.php #

######################

mail ($kime, $konu, $mesaj, From: $kimden\n);

?> Yukardaki tek satr $kimden deikeni ile gelen kiinin adresi ile $kime adl adrese $konu adl ve ierii $mesaj olan e-postay gnderir. From: blm e-postann kimden geldiini belirtir. Tabi yukardaki PHP dosyasnn alabilmesi iin bu dosyaya gerekli bilgileri yollayacak HTML dosyasnn da yazlmas gerekli. system() ilevi Bu ilev PHP bir sistem modl olarak kurulduunda iletilebilir bir ilevdir. C programlama dilindeki system() ilevi ile ayn grevi yapar. Yani ileve parametre olarak girilen komutu iletim sistemi zerinde iletir. <? ################## # system.php #

################## $dizin_icerigi = system(ls); echo $dizin_icerigi; ?> Yukardaki rnek PHP dosyamzn bulunduu dizinin ieriini ekrana basar. isset() ve unset() ilevleri isset() ilevi bir deikenin iersinde bir deer bulunup bulunmadn kontrol eder. Bazen bir PHP programnda deer atanmam deikenler de bulunabilir. Bu deikenler bo yere bilgisayarn hafzasnda yer igal eder. Ayrca bu ilevi bir formdan bilgi alrken bilginin gnderilip gnderilmediini kontrol etmek iin de kullanabiliriz. unset() ilevi ise kendisine parametre olarak verilen deikeni yok eder. Kullanmlar

isset($degisken) ve unset($degisken) eklindedir.

44 :.

PHP ile Dosya lemleri


Daha ncede belirttiim gibi PHP, C programlama dili ile birok benzerlik gstermesine ramen dosya ilemleri gibi uratrc ilemlerde programcya byk kolaylklar salar. PHPde dosyalar ile kullanlabilecek birok ilev olmasna ramen (altmtan fazla!) burada sadece dosya ve dizin ama, dosyadan ve dizinden okuma ve dosyaya bilgi yazma gibi konulara deineceim.

fopen() ilevi fopen() ilevi PHPde dosyalar amak iin kullanlr. leve parametre olarak iki deer girilir. Birincisi, dosya ad ve ikinci de zerinde ilem yaplacak dosyann hangi ilem iin kullanlacadr. <? fopen(dosya_ad, ama); ?> levin kullanm yukardaki kalba gredir. dosya_ad ile belirtilen yere zerinde ilem yaplacak dosya tam yolu ile yazlmaldr, ama ksmna ise dosyann alaca kip yazlr. Kip r r+ w w+ a a+ Kullanm Amac Dosya sadece okuma iin alr. mle dosyann banda konumlanr. Dosya hem yazma hem okuma iin alr. mle dosyann banda konumlanr. Dosya yazma iin alr. Eer ayn isimli dosya varsa silinir ve yeniden oluturulur. Dosya hem yazma hem okuma iin alr. Eer ayn isimli dosya varsa silinir ve yeniden oluturulur. Dosya sadece yazma iin alr. mle dosyann sonuna konumlandrlr. Dosya yoksa oluturulur. Dosya hem yazma hem okuma iin alr. mle dosyann sonuna konumlanr. Dosya yoksa oluturulur. Yukardaki tablo fopen() ilevi ile birlikte kullanabileceimiz dosya ama kipi parametreleridir. <? ################# # dosya_ac.php #

################# $dosya_ac = (fopen(./dosya.txt, r)); if ($dosya_ac) { echo Dosya baar ile ald ; if (fclose($dosya_ac)) { echo ve kapatld.; } else {

echo fakat kapatrken hata olutu!; } } else { echo Dosyay amaya alrken bir hata olutu!;

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 45

} ?> Yukardaki PHP dosyas dosyann alp alamamasna gre ekrana bir mesaj verecektir. Alan bir dosyay kapatmak iin fclose() ilevi kullanlr. Yukardaki rnekte ilk if deyiminin ierisinde baka bir if deyimi kullandm. Bir dosyay ap tekrar kapatrken karlaabileceimiz tm ihtimalleri gz nnde bulundurmamz gerekmektedir. Mesela dosya ama ilemi baarl bir ekilde gereklemediyse PHP ekrana Dosyay amaya alrken bir hata olutu! yazsn yazacaktr. ayet dosya ama ilemi baarl ise Dosya baar ile ald yazsn yazacak ve dosyann doru bir ekilde kapatlp kapatlamamas durumuna gre ve kapatld. veya fakat kapatrken hata olutu! ifadelerinde birisini ekrana basacaktr.

fgets() ve fread() ilevleri Bu iki ilev yazma modunda alm bir dosyadan bilgi almak iin kullanlr. Aralarnda ufak bir fark vardr. fgets() ilevi metin dosyalarnda kullanlr ve dosyay satr satr okur. fread() ilevi ise dosyay ikili kipte (bayt bayt) okur. <? #################### # dosya_oku.php #

####################

$dosya = fopen(./dosya.txt, r); while (!feof($dosya)) { $satir = fgets($dosya,1024); echo $satir<br>; } fclose($dosya); ?> Yukardaki PHP program bulunduumuz dizindeki dosya.txt adl dosyay okuma kipinde ap dosyann sonuna kadar (!feof kalbn birazdan anlatacam) satr satr okuma gerekletirir ve ekrana yazar. Dosyay okuma ilemi bitince de dosyay kapatp program sonlandrr. fgets ile kullandm 1024 rakam okunacak bir satrdan ka bayt alnacan belirtir. Aslnda yukardaki program require() ilevi ile hemen hemen ayn ii yapar.

fputs() ve fwrite() ilevleri Tahmin edeceiniz gibi bu iki ilevde dosyaya bilgi yazmak iin kullanlr. kisi arasnda bir fark yoktur. Yazma kipinde alm bir dosyaya bilgi girii iin kullanlrlar. <? ################### # dosya_yaz.php #

################### $metin = Burada herhangi bir metin olabilir.; $dosya = fopen(./defter.txt,w); fwrite($dosya,$metin); 46 :.

fclose($dosya); ?> Yukardaki PHP dosyas $metin adl deikendeki bilgiyi $dosya ile belirtilen dosyaya yazacaktr. Bu ilem srasnda bulunduumuz dizinde defter.txt adl bir dosya varsa silinecek ve yeniden oluturulacaktr. Eer varolan dosyamza ekleme yapmak istiyorsak kullanmamz gereken dosya ama komutu fopen(./defter.txt,a) eklinde olmaldr. Ekleme dosya sonunu yaplr.

feof Bir dosyann sonunun gelip gelmediini kontrol eder. Daha nceki rneklerimden birinde kullanmtm. while (!feof($dosya)) ...... Oradaki kullanm DEL mantksal ilei ile olduu iin kullandm while dngsnde dosya sonu olmayana kadar koul doru kabul edilip dng srdrlecektir.

PHP ile Dizin lemleri


opendir() ilevi Adnda da anlalaca gibi bu ilev kendine parametre olarak verilen dizini amak iin kullanlr. Bulunduumuz dizindeki resimler alt dizinini amak iin opendir(./resimler); gibi bir ifade kullanrz.

readdir() ilevi Bu ilev ise ak olan bir dizinde okuma yapmamza olanak salar. Yine bulunduumuz dizindeki resimler altdizinini okumak iin $dizi=opendir(./resimler); readdir($dizin); gibi bir komut kullanrz. sterseniz dizinler ile ilgili iki ilevi bir rnek ile aklayalm. Bu ilevin alabilmesi iin bulunduumuz dizinin iinde bir abc dizini olmal ve kullanc yetkileri 705 yada 755 eklinde (yani herkese okuma yetkisi) olmaldr. <? ################## # dizin.php #

##################

$i = 1; $dizin_ac = opendir(./abc); while ($dosya = readdir($dizin_ac)) { echo Bu abc dizinindeki $i. eleman : $dosya<br>; $i++ }

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 47

?> Yukardaki PHP program bulunduumuz dizindeki abc dizinini ap, ieriini sra ile ekrana basmaktadr.

ereg() ve eregi() ilevleri ereg() ve eregi() ilevleri bir metin ierisinde verilen bir kelimeyi arar. eregi() ilevi ereg() ilevinden farkl olarak arama srasnda byk-kk harf ayrm yapmaz. Hazrladnz bir web formunda kullancnn doru bir e-posta adresi girip girmediini kontrol etmek iin aadaki gibi bir kod kullanabilirsiniz. <? ################ # ereg.php #

################ if(ereg(@,$eposta) && ereg(.,$eposta)) { echo Kaydolduunuz iin teekkrler!; } else { echo <font color="#f80000">Ltfen e-posta adresinizi doru girin!</font>; require(uye_kayit.html); }

?> ereg_replace() ve eregi_replace ilevleri Bu ilevler de belirtilen metin iinde istenilen bir kelimeyi bulup deitirmek iin kullanlr. Yine eregi_replace() ilevinin ereg_replace() ilevinden fark byk-kk harf ayrm yapmamasdr. <? ###################### # ereg_replace.php #

###################### ereg_replace(fni18444@gantep.edu.tr, yeni_adresim@sunucu.com, $metin); ?> Diyelim ki 10-15 sayfalk bir yaz yazdm ve bu yaz ierisinde e-posta adresimi ska kullandm. Yazm yazdktan bir sre sonra e-posta adresim deiti. te yukardaki kod ile nceden yazdm yaz ierisindeki eski adresimi yenisi ile deitirebilirim.

md5() ilevi md5() ifreleme iin kullanlan bir ilevdir. leve parametre olarak verilen metnin uzunluu ne kadar olursa olsun ilev bu metni 32bit ile ifreler ve geri dnm yoktur. Yani md5 ile ifrelenmi bir metni tekrar eski haline getirmek olanakszdr (en azndan imdilik ;)). Peki bu ne iimize yarayacak?

48 :.

Karlatrma yaparken, mesela md5 ile ifrelenip veritabanna kaydedilmi bir ifreyi kontrol etmek iin, kullancdan gelen ifreyi de md5 ile ifreleyip karlatrma yapmanz yeterli olacaktr. Md5 hakknda daha ayrntl bilgi iin internette herhangi bir arama motorundan RFC1321 aratmanz yeterli olacaktr.

unlink() ilevi Bu ilev kendisine parametre olarak girilen dosyay silmek iin kullanlr. Kullanm

unlink(dosya_ad) eklindedir.

mkdir() ve rmdir() ilevleri Bu iki ilev de dizin oluturma ve silme iin kullanlr. mkdir() kendisine parametre olarak verilen bir dizini oluturur ve rmdir() ise kendisine parametre olarak verilen dizini siler. Tabii buraya kadar anlattm dizin ve dosya ilemlerini gerekletirebilmeniz iin o dosya ve dizin zerinde kullanm hakkna sahip olmanz gerekmektedir. Aksi taktirde dosyaya ulamda sorun olduuna dair bir hata mesaj ile karlarsnz. nternet'teki bir sunucudan istekte bulunan bir kullanc sunucu sistem tarafnda dier kullanc grubuna dahil edilir. Dosya eriim yetkileri bu zellik gz nnde bulundurularak ayarlanmaldr.

PHP ile levleri Yazmak


PHP ile hazr olan ilevlerin yan sra, hazr olarak gelen ilevlerden yararlanarak kendi ilevlerimizi de kullanabiliriz. Bu i normal bir programlama dilindeki ilev tanmlama ileminden pek farkl deildir. lev tanmlama iini bir rnek zerinde anlatrsam daha iyi anlalacan dnyorum. Ben hazrladm sitelerde konu balklarn ve kategorileri vermek iin ounlukla ana sayfamda oluturduum kk tablolar kullanrm. Bu tablolar benim balklarm iin bir ereve grevi grr. <!-- Bu dosyay fonk.php ad ile kaydedin --> <html> <head> <title>PHP ile ilev tanmlama</title> </head> <body bgcolor="#ffffff" text="#000000" link="#000000" alink="#000000" vlink="#000000"> <center> <? function tablo($baslik, $metin, $url) { echo "<table border='0' cellpadding='1' bgcolor='#000000' width='600'><tr><td> <table border='0' cellpadding='0' cellspacing='0' bgcolor='#334455' width='600'> <tr><td><font color='#ffffff'><b><li>$baslik</b></font></td></tr> <tr><td bgcolor='#eaeaea'> $metin<br><a href='$url'>$url</a></td> </tr></table></td></tr></table><br>\n"; }

tablo("Linux letim Sistemi","Linux, Linus Torvalds adnda Finlandiyal bir renci tarafndan gelitirildi. Daha ayrntl bilgi iin...","http://www.belgeler.org/KiTAPLIK/archive-tlkg-lis.html");

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 49

tablo("PHP","Ak kaynak kodlu olarak datlan PHP dinamik web sayfas tasarm konusunda bir r at! PHP konusunda her trl yardm bulabileceiniz PHP Manual gnlller tarafndan birok dile evrildi.","http://www.php.org.tr");

?>

</body> </html> Yukardaki PHP dosyas ile tablo adl bir ilev tanmladm. Tanmladm bu ileve her seferinde $baslik, $metin ve $url deikenlerini gireceimi belirttim. PHP yorumlaycm tablo() ilevini yorumlarken daha nceden yazlm function tablo () { .... } blmnden yaralanr. Bu blmde deikenlerin adlar yerine ilev ad ile daha sonradan verilen deerleri kullanr. Bu kullanm ii tanmlama srasna gredir. Bu gibi ilevler sayesinde sayfanzda ok kullandnz kalplar srekli yazmak zorunda kalmazsnz. rnei kaydedip altrrsanz daha iyi anlayacanz sanyorum.

50 :.

MySQLe Giri
PHP, MySQL dnda birok veritaban yazlm (PostgreSQL, MsSQL, Oracle, dBase...) ile birlikte sorunsuz alabilmesine ramen en yksek performans PHP+MySQL+Apache lsnden elde edilmitir. Zaten Internet zerinde bulabileceiniz hazr PHP betikleri ya da yardm belgelerinin ou PHPyi MySQL ile birlikte ele almaktadr.

Veritaban Nedir?
Bir veritaban adndan da anlalaca gibi bilgilerin depoland hiyerarik bir yapdr. Biz web zerinde kullanc ad, ifresi, e-posta adresi gibi bilgileri bu veritabanlarnda saklarz. Ayn bilgileri bir dosyaya yazp gerektiinde dosyay ap bilgileri okutmak da bir zm gibi grnse de bu ilem hem daha karmak ve zahmetli hem de daha yavatr. Aslnda az ok ngilizce bilen birisi iin MySQL kullanmak pek zor olmayacaktr. Ben denemelerimi Linux altnda yaptm iin bu belgede de anlatm o dorultuda olacaktr. Fakat veritabanna balandktan sonra SQL komutlar (evet MySQL deil SQL. MySQL ile kullanlan komutlar birok veritaban sorgulama dilindekilerle ayndr) arasnda bir fark yoktur. Sadece Linux iletim sistemi altnda byk-kk harf ayrm vardr. Denemelerinizi yaptnz sunucu zerinde kullanc adnzn kullanici ve parolanzn parola olduunu varsayarak blme balyorum. Veritanna bir Linux terminalinden balanmak iin $ mysql h localhost u kullanici p komut satrn kullanmanz gerekli. En sondaki -p parametresi bizim kullancmz iin bir parola tanml olduunu ve yukardaki komutu verdikten sonra bu parolay girmemiz gerektiini anlatr. Eer bir sorun ile karlamadan veritabanna balanabildiyseniz karnza aadaki gibi bir ekran gelecektir. mysql> Bu ekran bizim SQLe doru bir ekilde balandmz gsterir. Bir veritaban hiyerarisi iinde barndrd veritabanlarndan ve bu veritabalarnn ilerindeki tablolardan oluur. Linux altndaki MySQL kurulumlarnda test ve mysql isimli veritabanlar hazr olarak gelir. Bir veritaban hiyerarisinde her kullancnn kendine ait bir veritaban vardr ve ilemlerini bu veritaban altnda gerekletirir. Yani kendi veritaban altnda tablo oluturabilir, silebilir, tabloya bilgi ekleyip bilgi karabilir. Bunun dnda her kurulum ile gelen test veritaban tm kullanclarn kullanmna aktr, mysql veritabannda ise kullanclara ait bilgiler tutulur ve bu veritabann sadece veritaban yneticisi kullanabilir. Benim ilemlerimi yapacam hayali veritabnmn ismi base olacak. $ mysql -h localhost -u kullanici -p Enter Password: mysql> show databases; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.00 sec) mysql>

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 51

Yukarda sistemimizde mevcut veritabanlarn listesini show databases; komutu ile alyoruz. MySQLde her komuttan sonra mutlaka ; karakteri kullanlmaldr. Aada yeni bir veritaban oluturuyor ve onu kullanmaya balyorum. mysql> create database base; mysql> show databases; +----------+ | Database | +----------+ | mysql | | test | | base | +----------+ 3 rows in set (0.00 sec) mysql> use base; Database changed mysql> Yukarda base adl bir veritaban oluturdum (create database base;) ve use base; komutu ile ilem yapacam veritabann belirledim. Burada dikkat edilmesi gereken husus bizim istediimiz zaman bir veritaban oluturamayacamzdr. Veritaban hiyeraisine kaydmz yaplrken bize kullanm hakk verilen veritabann oluturabilir ve kullanabiliriz. Yani ben kullanici kullancsyla herhangi adl bir veritaban oluturamam.

MySQLde Tablolar
Bilgilerimizi saklamak iin veritabanlarn kullandmz daha nce belirtmitim. Sakladmz bilgileri daha kolay bir ekilde ileyebilmek iin snflandrmamz gerekir. Bu snflandrma ilemi iin tablolar kullanrz. Tablolar stunlar ve satrlardan oluur. Aada veritabannda kaytl kullanicilar isimli bir tablo grnyor (Tablolarn nasl oluturulacan ilerideki blmlerde aklayacam). mysql> select * from kullanicilar; +----+--------------+---------+------------------------+-------+ | no | Ad | Soyad | eposta | bolum | +----+--------------+---------+------------------------+-------+ | 1 | Fehmi Noyan | ISI | fni18444@gantep.edu.tr | eee | | 2 | Mehmet | Korkmaz | kormkaz@linux.org.tr | pe | | 3 | Adem | Sarnici | a_sarnici@yahoo.com | pe | | 4 | Seckin Fatih | Solgun | sf_solgun@freebsd.org | me | +----+--------------+---------+------------------------+-------+ 4 rows in set (0.05 sec) mysql> Yukardaki tabloda drt stun ve drt satr var. Tablodaki verileri ekrana basmak iin select * from kullanicilar; komutunu kullandm. Ayn komutu select Ad from kullanicilar; eklinde verince mysql> select Ad from kullanicilar; +--------------+ | Ad | +--------------+ | Fehmi Noyan | | Mehmet | | Adem | | Seckin Fatih | +--------------+ 4 rows in set (0.03 sec) mysql>

52 :.

Yukardaki gibi bir tablo elde ederiz. MySQL ile MS-DOS ve UNIX iletim sistemlerinde olduu gibi joker karakterler kullanlabilir. lk komut satrnda kullandm * karakteri de bu joker karakterlere bir rnek. lk tablodaki no, Ad, Soyad ve eposta adl blmler tablonun stunlarnn isimlerini gsterir. Komut satrnda kullandm * karakteri bu stunlarn hepsinin grntlenmesini istediimi belirtir. Aslnda daha nceden komut satrndan ilem ynetenler iin fazla yabanc bir ifade olmasa da ilk kez karlaacaklar iin biraz karktr fakat zamanla kavranacaktr. Ksacas veritabanndan bilgi almak iin select istenen_bilgi from tablo_ad; gibi bir kalp kullanlr. Veritabanndan alnan sorgu belli koullar gerektirebilir. Mesela yukardaki kullanicilar adl tabloda ismi Mehmet olan kullanclar ekrana grntlemek istersem mysql> select Ad from kullanicilar where Ad=Mehmet; gibi bir komut kullanmam gerekirdi. rnekleri oaltmak mmkn. Yaplan sorgu istee ve gereksinime gre deiik koullar dahilinde gerekletirilebilir. where kalb ile olmasn istediimiz bir zellii belirtiyoruz. Peki elimizdeki verilerde olmasn istemediimiz bir bilgiyi nasl belirteceiz? Bu i iin not kalb kullanlr. mysql> select eposta from kullanicilar where not bolum=pe; Yukardaki sorgu kalb kullanicilar adl tablodan bolum bilgisi pe olmayan tm kullanclarn e-posta adreslerini ekrana basacaktr. not kalb ile or kalb da kullanlr. or kalb ift istekli durumlarda not ileinin tam tersi ilev grr. Yani kullanicilar adl tablodan Ad bilgisi Mehmet olan ve blm eee olmayan kullanclarn listesi iin kullanlmas gereken SQL komutu aadaki gibidir. mysql> select Ad from kullanicilar where not bolum=pe or Ad=Mehmet; Buraya kadar hep tablolar zerinde ilemlerden bahsettim. Sra zerinde ilem yaptmz bu tablolar nasl oluturduumuza geldi. SQLde tablo oluturma ii aynen veritaban oluturma gibidir. Sadece tablo olutururken tabloda tanml alanlarn zelliklerinin belirtilmesi gerekir. Yukarda tm rneklerimde kullandm kullanicilar adl tabloyu oluturmak iin kullanlacak SQL satr aadaki gibidir. mysql> create table kullanicilar ->(no int auto_increment, Ad varchar(13), Soyad varchar(12), -> eposta varchar(25), bolum varchar(5), primary key(no)); mysql> Tabloda kullanlan stunlarn veri tiplerini ve en fazla ka baytlk veri saklayabileceklerini belirttim. int terimi kullanlacak verinin saysal bir deer olacan simgeler, dier stunlar iin kullandm varchar terimi ise girilecek dizinin karakter kmesi olduunu ve parantez iindeki saysal deer ise bu kmenin maksimum alabilecei karakter saysn belirler. Eer girilen veri belirtilen maksimum deerden fazla ise belirtilen deer kadar karakter ileme alnr. Bunun iin tablo olutururken girilecek verilerin uzunluunu gz nnde bulundurmanzda fayda vardr. Bunlarn dnda -> karakteri de dikkatinizi ekmitir. SQLde bir komutu ; ile sonlandrmadnz srece o komut ENTER tuun bassanz bile bitmi saylmaz ve sizden bitirici karakteri (; ya da \g) girmeniz beklenir. Komutu satr halinde yazmamn sebebi sadece uzun ve karmak bir satr yazmaktan kanmak iindi. Ayn komutu tek satr yazmanz halinde de sonuta herhangi bir deiiklik olmayacaktr. no stunu iin kullandm auto_increment ve en sonda kullandm primary key(no) kalplar tabloda no ile belirtilen ksmn otomatik olarak her veri girdiinde bir arttrlmasn salar. Bu zelliin kullanlabilmesi iin kullanlacak stuna primary key zelliinin atanmas gerekir.

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 53

Diyelim ki tablomuzu oluturduk ve web zerinden bilgilerimizi kaydediyoruz. Bir gn, tablomuzu olutururken kullandmz stun zelliklerini grmek istersek ne yapacaz? Bunun iin describe komutu kullanlr. Komutun kullanm describe tablo_adi; eklindedir. imdi sra bo olarak oluturduumuz kullanicilar adl tabloya bilgi giriinde. Bilgi girii iin insert komutu kullanlr. mysql> insert into kullanicilar -> values (,Fehmi Noyan,ISI, -> fni18444@gantep.edu.tr,eee); Yukardaki komut kmesi kullanicilar adl tabloya belirtilen bilgileri sras ile girer. Bilgi girii iin insert into tablo_adi values ("alan1_deeri", "alan2_deeri", ..., "alanN_deeri"); kalb kullanlr. lk stuna gelecek bolume sadece karakterlerini brakmam bu blmn auto_increment zelliinden dolay SQL tarafndan otomatik olarak doldurulacak olmasndandr. Girilen her deer trnak iinde yazlr ve birbirlerinden virgl ile ayrlr. Bazen bir tablodaki verileri herhangi bir sebepten dolay yenilememiz gerekebilir. Mesela yukardaki tabloda Fehmi Noyan adl kullancnn e-posta adresi deimise ve biz yeni adresi tablomuzda eski adresle deitirmek istiyorsak kullanacamz komut update komutudur. mysql> update kullanicilar set eposta=yeni_adresim@adres.com -> where no=1; Yukardaki SQL satr kullanicilar adl tablodan no bilgisi 1 olan kullancnn eposta bilgisini yeni_adresim@adres.com olarak deitirilmesi iin kullanlr. Komutun kullanmnda update tablo_ad set stun_ad=yeni deer where koul; kalb uygulanr. where koulundan sonra herhangi bir koul satr kullanlabilir (ben no bilgisini kullandm). Girilen bilgileri silmek iin delete komutu kullanlr. mysql> delete from kullanicilar where bolum=eee; Yukardaki SQL komutu kullanicilar tablosundaki bolum bilgisi eee olan tm kullanclar ile ilgili satrlar silecektir. Komutun kullanm delete from tablo_ad where koul; eklindedir. Son olarak da, MySQLden k iin quit komutu kullanlr. Bir sonraki blmde PHP ile tablo ilemlerinde genelde bu komutlar (bilgi ekleme, bilgi silme, bilgi alma ve bilgi yenileme) kullanlaca iin sadece gerekli komutlar verilmitir. Yapacanz almann amacna gre kullanacanz veritabanlarnn nitelii farkl olacaktr.

54 :.

PHP ile MySQL kullanmak


Buraya kadar PHP ve MySQLe giri yaptk. Aslnda veritabanlarnn ok eitli kullanmlar olsa da genelde erez yollama, saya, ziyareti defteri, parolal giri ve kullanc kayd gibi konular sk olarak karmza kmaktadr. Buradan sonra yeni ilev kullanlsa bile ok nadir olarak kullanlan yeni ilevin kullanm ekli aklanacaktr. Bu blm genelde rnekler ve bu rneklerin aklamalar halinde olacaktr. lk nce MySQL blmnde kullandm kullanicilar adl tablodan PHP ile veri alma, veri silme ve veri ykleme ilemlerini gerekletirelim. Aada kullanicilar tablosunu bir hatrlatma olsun diye tekrar verdim. +----+--------------+---------+------------------------+-------+ | no | Ad | Soyad | eposta | bolum | +----+--------------+---------+------------------------+-------+ | 1 | Fehmi Noyan | ISI | fni18444@gantep.edu.tr | eee | | 2 | Mehmet | Korkmaz | kormkaz@linux.org.tr | pe | | 3 | Adem | Sarnici | a_sarnici@yahoo.com | pe | | 4 | Seckin Fatih | Solgun | sf_solgun@freebsd.org | me | +----+--------------+---------+------------------------+-------+ nce PHP ile veritabanna balanma ve veri alma ilemlerini ele alalm. PHP ile MySQLe balanmak iin mysql_connect() ilevi kullanlr. <? ################# # mysql.php #

#################

/* mysqle balanma islemi */ @mysql_connect(localhost, kullanici, parola) or die (Veritabanna balanrken bir hata olutu!);

/* mysqlde kendi veritabanimizi secim islemi */ @mysql_select_db(base) or die(Veritannda bir hata olutu!);

$sira = 0; while ($sira < 4) { /* mysqle sorgu gnderiliyor ve bu sorgudan gelen degerler bir degiskene atanyor. $sorgu = mysql_query(select * from kullanicilar); $ad = mysql_result($sorgu, $sira, Ad); echo $ad <br>; $sira++; } ?> Yukardaki PHP dosyas bizim kendi sunucumuz zerindeki MySQL sunucusuna kullanici kullanc ad ve parola parolas ile balanyor. Komutlarn bandaki @ iareti komutun iletilmesinde bir hata oluursa ekrana hata mesajnn baslmamas iindir. Onun yerine kendi belirlediimiz hata mesajn or die kalb ile

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 55

verebiliyoruz. Balanma ileminden sonra mysql_select_db (mysqldeki use base gibi) ilevi ile kendi veritabanmza geiyoruz. Buradan sonra sira bir adl bir deikene 0(sfr) deerini atadm. Bunun amac MySQLde ilem yaplan satrlarn sfrdan itibaren bir satr says almalardr. (Ben rneimde while dngsnde koulu $sira < 4 eklinde tanmladm ama normalde bir tabloda ka satr olduunu bilmeniz mmkn olmayabilir. Ben satr saysn bildiim iin byle bir yol setim.) Dng ierisinde $sorgu adl deikene mysql_query() ilevi ile SQLden alnan bilgiler atanyor. Daha sonra mysql_result() ilevi ile bu bilgilerden istek dorultusundan ayklama yaplyor. mysql_result() ilevinin ileyi tarzn bir dzleme benzetirsek: 1. 2. 3. $sorgu adndaki bilgilerin olduu dzleme git. $sira ile belirtilen satrdan Ad stunundaki bilgiyi al.

eklinde bir yorum yaplabilir. mysql_query() sorgusu ile alnan sonular mysql_result() ile ayklanr. $ad deikenine atanan deerler alt alta ekrana baslyor. Daha sonra $sira deikeni bir arttrlyor (aksi taktirde sonsuz bir dng iine girilir!) ve dngden klyor. imdi de kafamzda hayali bir senaryo oluturup bu senaryoya gre bir HTML dosyas ve bu dosyadan veri alan bir PHP dosyas yapalm. Kullanc kayd tutan bir web formu ve bu formdan bilgi alacak PHP dosyasn oluturalm. Ama daha nce bu bilgilerin kaydedilecei SQL tablosunu oluturalm. $ mysql h localhost u kullanici p Enter Password: mysql> use base; Database changed mysql> create table kayit -> (no int auto_increment, kullaniciadi varchar(15), -> sifre(25), eposta(25), primary key(no)); mysql> quit Yukarda komut satrndan mysqle balanp kayit isimli bir tablo oluturdum. imdi sra HTML form dosyamzda. <!-- kayit.html --> <html> <body bgcolor="#FFFFFF" text="#000000"> <form action="kayit.php" method="post"> <b>Kullanc Adnz:</b><input type="text" name="u_name" size="20"><br> <b>Parolanz:</b><input type="password" name="pass" size="20"><br> <b>e-posta adresiniz:</b><input type="text" name="mail" size="20"><br> <input type="submit" value=" </form> </body> </html> Kayt ">

56 :.

<? /* kayit.php */

@mysql_connect("localhost", "kullanici", "parola") or die("Veritabani ile baglanti kurulamadi!"); @mysql_select_db("base") or die("Veritabaninda bir hata olustu!");

@mysql_query("insert into kayit values(,$u_name,$pass,$mail)"); echo "<center><b>Bilgileriniz varitabanina kaydedildi.</b></center>"; require("./kayit.html"); ?> Yukardaki PHP dosyas form ile gelen bilgileri veritabanndaki kayit adl tabloya kaydediyor. Kayt ileminden sonra ekrana ilemin baar ile gerekletirildiine dair bir mesaj geliyor ve formu ieren HTML dosyas tekrar ekrana baslyor. MySQLde tablo yenileme (update) ve veri silme (delete) komutlar da mysql_query() ilevi ile kullanlr. Yani normal olarak SQL sorgusu gnderiliyor. Burada sonra artk rnek uygulamalara geiyorum. Yeni blme balamadan nce size phpinfo() ilevinden biraz sz etmek istiyorum. Yapmanz gereken tek ey bir PHP dosyas iin <? phpinfo(); ?> yazp kaydetmek. zerinde altnz sunucunun birok zelliini ve PHP ile birlikte kullanabileceiniz birok faydal deikeni bu ilev altnda bulabilirsiniz.

Ziyareti Defteri rnei


ou web sitesinde grdmz ziyareti defterlerini PHP yardm ile kendi sitenizde de kullanabilirsiniz. Geri internet zerinde bu ii yapan hazr betikler bulmak pek zor deil fakat bu basit uygulamalar daha ileri teknikler iin bir n adm olarak kullanmanz asndan faydal olacaktr. Bu i iin nce bir HTML dosyas ile kullancdan bilgi alnmal. Daha sonra bu bilgi bir PHP dosyas ile bir metin dosyasna yazlarak isteyen kullanclara grntlenmeli. <!-- Bu dosya defter.html ad ile kaydedilecek --> <html> <head> <title>Ziyareti Defteri</title> </head> <body bgcolor="#ffffff" text="#000000"> <center> <br> <table bgcolor="#000000" border="0" cellpadding="1" cellspacing="0" width="450"> <tr><td> <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" width="450"> <tr><td bgcolor="#006486"> <b><center>Defteri Doldurun</b>

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 57

</td></tr> <td> <form action="defter.php" method="pos"t><br> <b>Kimden :</b><input type="text" name="kimden" size=30><br><br> <center><textarea rows="15" cols="50" name="metin"></textarea> </td></tr> <tr><td> <center><br> <input type="submit" value=" <input type="reset" value=" </td></tr> </table> </td></tr> </table> </body> </html> Deftere ekle "> "><br><br>

Yazdklarm sil

<? /* Bu dosya defter.php adi ile kaydedilecek */

if ($dosya_ac = (fopen(./defter.txt,a))) { $tarih = date("d.m.Y"); $yeni_metin = "<br><table border='0' cellpadding='0' cellspacing='0' bgcolor='#eaeaea' width='600'> <tr><td><b>$kimden</b> tarafndan <b>$tarih</b> tarihinde yazlm.<br><br></td></tr>\n <tr><td>$metin</td></tr></table><br>; fwrite($dosya_ac, $yeni_metin); fclose($dosya_ac); echo Sayn $kimden defterimizi doldurduunuz iin teekkrler.<br>; require(./defter.txt); } else { echo <center><br><b>Dosya amada bir hata olutu!</b></center>; } ?> Yukardaki iki dosyay yazdktan sonra belirtilen isimler ile kaydedin. Tabii bu dosyalar basitten hazrlanm haldeler. Grnm gzelletirmek ve gelitirmek size kalm. Sanrm ilk HTML dosyasnda ne yaptm anlatmaya gerek yok. Bir form ile kimden ve metin adl iki tane deikeni belirtilen PHP dosyasna post yntemi ile yolluyorum. Belki PHP dosyasnda biraz karklk yaamsnzdr. Burada yabanc olduunuz sadece date() ilevi var. PHPde tarih almak iin kullanlan date() ilevi, istenen bilgi tr kk harf olursa (benim dosyamdaki d ve m gibi ) bilgi rakamla, byk harf olursa (benim dosyamdaki Y gibi) bilgi tam olarak yazlr (tabi ki ngilizce).

58 :.

Ziyaretiden gelen bilgiler defter.txt adl bir dosyada tutuluyor (dosyaya herkes iin yazma yetkisi verilmelidir!) ve benim PHP koulumun sonunda bu dosya ekrana yazdrlyor (require ile). $metin deikenini bir tablo iinde yazmamn tek sebebi ziyaretiye grnecek dosyann daha ho olmas iindir. require() ilevi ile ekrana yazdrdmz dosya bir txt dosyas olsa bile iindeki HTML kodlar istemci tarafndan yorumlanacaktr. Eer sayfanzdan ayr bir ba verip nceden yazlanlarn grntlenmesini istiyorsanz, o zaman bir metin deil de HTML dosyas kullanmanz gerekecektir. Saya rnei Saya yapmann birok yolu vardr. Ben en basitinden bir uyguluma olarak, dosyalara deer yazp bu deerler zerinde ilem yapan bir saya uygulamas rnei verdim. <? /* Bu dosya sayac.php adi ile kaydedilecek */

# $REMOTE_ADDR degiskeni sunucu hafizasinda tutulan gecici degiskenlerdendir. $r_ip = $REMOTE_ADDR;

$ip_dosya_ac = fopen(./ip.txt, r); $dosyadaki_ip = fgets($ip_dosya_ac,1024); if ($r_ip != $dosyadaki_ip) { $sayac_dosyasi_ac = fopen(./sayac.txt, r); $eski_deger = fgets($sayac_dosyasi_ac,1024); fclose($sayac_dosyasi_ac);

$sayac_dosyasi_yaz = fopen(./sayac.txt,w); $yeni_deger = ++$eski_deger; fwrite($sayac_dosyasi_yaz, $yeni_deger); fclose($sayac_dosyasi_yaz);

$ip_dosyasi_ac = fopen(./ip.txt,w); fwrite($ip_dosyasi_ac, $r_ip); fclose($ip_dosyasi_ac);

echo Sitemiz bugne kadar <b>$yeni_deger</b> kere ziyaret edilmitir.; } else { $sayac_dosyasi_ac = fopen(./sayac.txt, r); $eski_deger = fgets($sayac_dosyasi_ac,1024); fclose($sayac_dosyasi_ac); echo Sitemiz bugne kadar <b>$eski_deger</b> kere ziyaret edilmitir.; } ?> Yukardaki dosyay oluturduktan sonra ayn dizine sayac.txt ve ip.txt diye iki dosya oluturun. Yalnz sayac.txt dosyasnn iine balang deeri olarak 0(sfr) yazmalsnz.

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 59

Yukardaki PHP program nce ip.txt dosyasn ap iindeki IP numaras ile ziyaretinin IP numarasn karlatryor. Eer iki numara ayn deilse saya dosyas alyor ve dosyada eski ziyareti says ($eski_deger) okunuyor. Daha sonra bu okunan eski deer bir arttrlp yani bir deikene ($yeni_deer) atanyor. Daha sonra IP deerinin tutulduu dosya alp ziyaretinin IP numaras bu dosyaya yazlyor. En son olarak da ziyaretiye sitenin bugne kadar ka defa ziyaret edildiini gsteren bir mesaj ekrana yazlyor.

erez rnei
erezler HTTP ile kullancnn bilgisayarna gnderdiimiz bilgi paketleridir. Bu bilgiler dz yaz dosyas halinde kullancya ular ve kullanlan istemcinin tipine gre herhangi bir dizinde belirlenen sre kadar sakl tutulur. erezlere gnderen bilgisayar dnda baka bir bilgisayar tarafndan ulalamaz. Windows sistemlerde MS-Internet Explorer, sunucu tarafnda yollanan erezleri C:\WINDOWS\Cookies dizini altnda saklar. Linux altnda, kullanlan istemci tarafndan kullancnn kendi ev dizininde oluturulun gizli bir dizinde saklanr. rneimde bir web sitesine parola ile giri yapm bir kullancnn bilgisayarna yollanan erezin kullanm var. Tabii bu rnek iin kullandm veritaban bilgilerinin varolduunu varsayyorum. <!-- Bu dosya index.html ad ile kaydedilecek --> <html> <head> <title>ifrenizi girin</title> </head> <body bgcolor="#ffffff" text="#000000"> <br><br> <center> <form action="login.php" method="post"> <b>Kullanc adnz</b><input type="text" name="uid" size="20"><br> <b>Parolanz</b><input type="password" name="passwd" size="20"><br><br> <input type="submit" value=" </form> </body> </html> Giri ">

<? /* bu dosya login.php adi ile kaydedilecek */

if (isset($uid) && isset($passwd)) { # Veritabanina baglaniliyor @mysql_connect(localhost, kullanici, parola) or die(Veritabani ile baglanti kurulamadi!); @mysql_select_db(base) or die(Veritabaninda bir hata olustu!);

$sorgu = mysql_query(select

* from kayit);

$db_passwd = mysql_result($sorgu, $uid, parola); if ($db_passwd == $passwd) {

60 :.

setcookie(identify,OK, time() + 3600); echo Cerez yollandi.; } else { echo <center><b>Kullanici adi ve sifrenizi kontrol edin!</b></center>; require(./index.html); } } else { echo <center><b>Bir kullanici adi ve sifre girmelisiniz!</b></center>; require(./index.html); } ?> Bu PHP dosyas eer formdan $passwd ve $uid deikenleri gelirse if dngsne giriyor. Dng ierisinde MySQLe balanlp kayit adl tablodan kullanc ad $uid olan satrdaki parola alnp bir deikene ($db_passwd) atanyor. Eer iki ifre ayn ise setcookie() ilevi ile kullancya erez yollanyor. Yollanan erezin ad identify ve bu erezin deeri OK. Kar tarafn bilgisayarnda kalma sresi ise 1 saat (3600 saniye). erez yollandktan sonra ekrana Cerez yollandi. diye bir mesaj yazlyor. erez ile yollanan bir deikenin deerini $deger adl bir deikene atmak iin $deger = $HTTP_COOKIE_VARS["cerez_adi"]; satr kullanlr. Ancak erezleri kullanrken dikkat etmeniz gereken nemli bir nokta var! erezi yolladnz PHP dosyas ile ayn erezin deerini aramyorsunuz. Bu ilemi baka bir dosya zerinde yapmak zorundasnz.

Renk Tablosu rnei


Bu rneimde HTML ile kullanabileceiniz renklerin onaltlk tabandaki karlklarn veren bir PHP betii var. Betik 512 tane rengin onaltlk kod karln vermektedir. Ayn betik zerinde sadece bir kk deiiklik yaparak tam olarak 4096 tane rengin onaltlk karln almak mmkndr. Bunu iin, kodun banda yorum iareti ile verilen $d dizisini (16 elemanl) yorum olmaktan karp normal (8 elemanl) olan diziyi yorum satr haline getirmek yeterlidir. Fakat 4096 renk arasndan kullanacanz rengi semek gerekten ok gtr ve renk

tonlamalarndaki geiler ok yumuak olduu iin ou renk birbirinin ayn gibi grnecektir. <!-- Bu dosyay renk.php ad ile kaydedin --> <html><head><title>HTML Renk Kodlar</title></head> <body bgcolor="#e8e8e8" text="#000000"> <center> <h1>HTML Renk Kodlar</h1> <table border="0" width="540" cellpadding="0" cellspacing="2">

<? //$d = array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); $d = array("0","2","4","6","8","a","c","e"); $d_c = count($d); // Krmz $r_i = 0; while($r_i < $d_c) {

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 61

$r = $d[$r_i] . $d[$r_i]; // Yeil $g_i = 0; while($g_i < $d_c) { $g = $d[$g_i] . $d[$g_i]; // Mavi $b_i = 0; echo "<tr>"; while($b_i < $d_c) { $b = $d[$b_i] . $d[$b_i];

// HTML Kodu ile tablonun satirlari olusturuluyor $renk = "#" . $r . $g . $b; echo "\n<td style='background:$renk; color:white'><b>$renk</b></td>"; $b_i++; } echo "\n</tr>"; $g_i++; } $r_i++; } ?> </table></center></body></html>

62 :.

HTMLde kullanlan karakterlerin kodlar


HTML'de klavyeden yazamadnz karakterleri baz kurallara uyarak kodlayabilirsiniz. rnein karakterini &Uuml;, &#220;, &#xdc; gibi farkl gsterimle kodlayabilirsiniz. lk gsterim sadece ISO8859-1 karakter kmesindeki karakterler iindir ve bunlar aada tablo halinde verilmitir. Dier iki tr kullanmda karakterin UTF-8 karakter kmesindeki karakter kodu kullanlmtr. &#220; onluk tabanda, &#xdc; ise onaltlk tabanda kodlanmtr. UTF-8 karakter kmesini oluturan karakterlerin tamamn ieren bir dosyay makinanzda rnein Red Hat datmn kullanyorsanz, /usr/share/i18n/charmaps/UTF-8.gz olarak bulabilirsiniz. Bu dosyada harfi ile ilgili satr, <00DC> /xc3/x9c LATIN CAPITAL LETTER U WITH DIAERESIS

eklindedir. Burada kullanacamz ksm <00DC>'dir. &#x00DC; ya da &#xdc; olarak bu karakteri HTML dosyamzda kullanabiliriz. Karakterleri bu ekilde kodlayarak yazmann bir faydas da HTML dosyasnn balnda <meta> etiketiyle karakter kodlamasnn belirtilmesi ihtiyacn ortadan kaldrmasdr. Renk Tablosu rneinde greceiniz gibi rnek olmas iin "" harfi yerine &#x131; kullanlmtr.

ISO-8859-1 Karakter Kodlar


&nbsp; &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml; &copy; &ordf; &laquo; &not; &shy; &reg; &macr; &deg; &#160; &#161; &#162; &#163; &#164; &#165; &#166; &#167; &#168; &#169; &#170; &#171; &#172; &#173; &#174; &#175; &#176; &#177; &#178; &ETH; &Ntilde; &Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; &Oslash; &Ugrave; &Uacute; &Ucirc; &Uuml; &Yacute; &THORN; &szlig; &agrave; &aacute; &acirc; &#208; &#209; &#210; &#211; &#212; &#213; &#214; &#215; &#216; &#217; &#218; &#219; &#220; &#221; &#222; &#223; &#224; &#225; &#226;

&plusmn; &sup2;

Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO

.: 63

&sup3; &acute; &micro; &para; &middot; &cedil; &sup1; &ordm; &raquo; &frac14; &frac12; &frac34; &iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; &AElig; &Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; &Iuml;

&#179; &#180; &#181; &#182; &#183; &#184; &#185; &#186; &#187; &#188; &#189; &#190; &#191; &#192; &#193; &#194; &#195; &#196; &#197; &#198; &#199; &#200; &#201; &#202; &#203; &#204; &#205; &#206; &#207;

&atilde; &auml; &aring; &aelig; &ccedil;

&#227; &#228; &#229; &#230; &#231; &#232; &#233; &#234; &#235; &#236; &#237; &#238; &#239; &#240; &#241; &#242; &#243; &#244; &#245; &#246; &#247; &#248; &#249; &#250; &#251; &#252; &#253; &#254; &#255;

&egrave; &eacute; &ecirc; &euml; &igrave; &iacute; &icirc; &iuml; &eth; &ntilde; &ograve; &oacute; &ocirc; &otilde; &ouml; &divide; &oslash; &ugrave; &uacute; &ucirc; &uuml; &yacute; &thorn; &yuml;

Trke'ye zg Karakterlerin Kodlar


&#287; &#305; &#351; &#286; &#304; &#350;

64 :.

Faydal Kaynaklar
Bu blm altnda HTML, MySQL ve PHP konusunda elinizin altnda bulunmasnn faydal olacan dndm adresler var. http://www.w3.org/ Web tasarm konusunda bilgi edinebileceiniz gzel bir site. HTML-4.01 Belirtim paketini aln ve makinanza kurun. Ayrca CSS2 Belirtim dosyasn da aln. Bunlar web tasarm yapanlar iin olmazsa olmaz iki temel kaynaktr. http://www.belgeler.org/hpm/web-organizasyonu.html Web Sitesi Dzenlemesi ve Tasarm, Profesyonel anlamda web sitesi organizasyonu ve tasarm konusunda bilgi edinebileceiniz gzel bir belge. http://www.php.net/ PHPnin resmi sitesi. Bu adresten PHP Manuali indirmenizi iddetle tavsiye ediyorum. PHP altnda kullanabileceiniz btn ilevlerin listesini, PHP kurulumunu ve PHP hakknda aklnzda ne kadar soru varsa hepsine cevap bulabileceiniz bir belge. http://www.mysql.com/ MySQLin resmi sitesi. Yine bu adresten MySQL ile ilgili her trl sorunuza yant bulabileceiniz MySQL Manuali ne yapp edip edinin. Fakat PHP altnda MySQL kullanm ile ilgili bilgileri PHP Manual iinde bulacaksnz. http://www.php.org.tr/ Trkiye PHP gurubu tarafndan gelitirilen sitede PHP hakknda birok Trke kaynak bulabilirsiniz. Ayrca sitenin forum ksmna PHP ile ilgili sorularnz yazp ksa zamanda deiik zm yollar edinebilirsiniz. http://www.turk-php.com/ Yine bir Trk PHP sitesi. Bakmanzda fayda var. http://www.rehberim.gen.tr/webokulu/ Trke ierikli bir web tasarm sitesi. Sadece PHP deil web ile ilgili birok konuda bilgi bulabileceiniz bir site. http://wwwacs.gantep.edu.tr/programming/php/commandline.html niversitemizin bir sunucusu zerinde bulunan sayfada Linux altnda PHP kullanarak kabuk betii yazma konusu ele alnm. (Geri konu web tasarmnn dnda fakat PHPnin geni kullanm alanlarna bir gzel rnek) http://www.hotscripts.com/ Seval ZBALCI seval.ozbalci@bayar.edu.tr - Internet Programlama Ders Notu -Tm- CB TMYO .: 65

Binlerce cretsiz betik ve belge bulabileceiniz ok gzel bir kaynak. Bakmanz kesinlikle tavsiye ederim. http://www.programmersheaven.com/zone27/ Yine cretsiz betikler ve belgeler bulabileceiniz bir site. Yukardaki adresler bu belgenin konusu hakkndaki binlerce siteden sadece birka. Yalnz ilk bata belirttiim gibi elinizin altnda HTML ve CSS2 Belirtim belgeleri ile PHP ve MySQLin Manual dosyalarnn bulunmasnda ok byk fayda var.

66 :.

-SON-

You might also like