php_ornekler - KÜÇÜKÇEKMECE - İsmet Aktar Mesleki ve Teknik
Transkript
php_ornekler - KÜÇÜKÇEKMECE - İsmet Aktar Mesleki ve Teknik
Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 İSMET AKTAR ANADOLU TEKNİK LİSESİ BİLİŞİM TEKNOLOJİLERİ ALANI WEB PROGRAMCILIĞI DALI PHP – Örnek Uygulamalar 2008 1 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 ● E-Mail gönderme örneği: mesaj1.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/ xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <?php $ad = $_POST['ad']; // Bu satir ve 3 alt satirda formdan gelen degiskenler aliniyor $email = $_POST['email']; $konu = $_POST['konu']; $msg = $_POST['msg']; $mailtanim = "MIME-Version: 1.0\r\n"; // bu kısım tanımlama kısmı // mailin karakter seti $mailtanim .= "Content-type: text/plain; charset=iso-8859-9\r\n"; // Mail'i açinca kimden geldigi kisminda yazacak olanlar $mailtanim .= "From: $name <$email>\r\n"; // Mail'i cevaplamak için cevabin kime gidecegini içeren kisim $mailtanim .= "Reply-To: $name <$email>\r\n"; // Mailin içeriginde, bas tarafina formdan gelen ad,email gibi bilgileri de ekler. $sms = "Isim : ".$ad."<br>E-Mail : ".$email."<br>Konu : ".$konu; $sms .= $msg; // Ardindan da mesaji ekler. $submit = $_POST['submit']; // gönder butonuna basilip basilmadigini ögrenmek için // degisken alinir. if (empty($submit)) { $form_kontrol = false; } else { $form_kontrol = true; } // Bu if döngüsünde gelen degiskene göre butona basilip // basilmamis oldugu degerlendirilir. if ( $form_kontrol ) { // Burda da butona basilmis ise verileri gönderme emri // verilir. mail("ismet-aktar@hotmail.com", $konu ,stripslashes($sms), $mailtanim); // Mail gönderme kodu. Ana kod satirimiz budur. print("Mailiniz gönderilmistir...."); 2 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 } ?> <FORM action="" method="post"> <table cellpadding=0 cellspacing=1 border=0 bgcolor=#efefef> <tr><td align=center bgcolor=#ffcc33> <font face=arial size=2><b>Email Formu</b></font></td></tr> <tr><td align=right><font face=arial size=2><b>Isim:</b></font></td> <td><input type=text name="ad" value="" size=30></td> </tr> <tr><td align=right><font face=arial size=2><b>E-Mail:</b></font></td> <td><input type=text name="email" value="" size=30></td> </tr> <tr><td align=right><font face=arial size=2><b>Konu:</b></font></td> <td><input type=text name="konu" value="" size=30></td> </tr> <tr><td align=right valign=top><font face=arial size=2><b>Mesaj:</b></font> </td> <td><textarea name="msg" cols=44 rows=5></textarea></td> </tr> <tr> <td></td> <td align=center><font face=arial size=2> <input type="submit" name="submit" value=" Gönder "> <input type="reset" value=" Sil "></font></td> </tr> </table> </form> </body> </html> 3 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 ● E-Mail gönderme örneği: mesaj.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <?php function mailgonder() { $alici="ismet-aktar@hotmail.com"; $konu="--- Sayfadan Gelen Görüs ve Öneriler ----"; $mesaj=$icerik . "\r\n" . $ad . " " . $soyad . "\r\n" . $eposta; mail($alici,$konu,$mesaj); print ("E-Postaniz gönderilmistir...."); } if (isset($submit)) //Eğer gönder butonuna tıklanıldıysa { mailgonder(); // Burada butona basilmis ise maili // gönderecek fonksiyon çalıştırılır } ?> <form id="form1" name="form1" method="post" action="mesaj.php"> Ad : <input name="ad" type="text" id="ad" /> <br/> <br/> Soyad : <input name="soyad" type="text" id="soyad" /> <br/> <br/> E-Posta: <input name="eposta" type="text" id="eposta" /> <br/> <br/> Mesaj : <textarea name="icerik" cols="50" rows="10"></textarea> <br /><br /> 4 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 <input name="submit" type="submit" id="gonder" value="GONDER" /> <br /> </form> </body> </html> ● $GLOBALS Dizi değişkeninin içeriğini görüntülemek: <HTML> <HEAD> <TITLE>PHP'de Formlar</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=windows-1254"> </HEAD> <BODY> <B> <H2> <?php foreach ($GLOBALS as $anahtar=>$deger ) { print ($anahtar . " = " . $deger . "<br>"); } ?> 5 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 </H2> </B> </BODY> </HTML> Bu programla PHP'nin daima varolan $GLOBALS dizisinin üyelerini görüntülüyoruz. $GLOBALS bir ilişkili-dizi-değişken, yani değişken değerlerinin endeks adı (anahtarı) bulunan bir dizi olduğu için, içerdiği değerlere adları ile ulaşabiliriz. Bu programda, $GLOBALS'ın anahtarlarını $anahtar, değerlerini ise $değer değişkenine yazdırıyoruz ve bir foreach döngüsü ile Brnowser penceresine gönderiyoruz. Programı çalıştırdığımız sisteme ve Web sunucu programına bağlı olmak üzere, ekranımızda bir çok değişken görebiliriz. Bunlar arasında bütün HTTP Server programları için ortak ve Web programcısı için önemli değişkenler şunlardır: HTTP_ENV_VARS: HTTP Sunucu programın çalışmakta olan PHP dosyası için oluşturduğu çevre değişkenlerinin yazılı olduğu dizi değişken. Bu değişkenin içinde şu unsurlar bulunur: HOSTNAME: Sunucunun IP adresi SHELL: Unix sisteminde kullanılan Shell programı HOSTTYPE: Sunucunun adı ve sürünü OSTYPE: Sunucu'nun işletim sistemi HOME: Çalışan programın kök dizini PATH: Çalışan programın Sunucu'daki yolu HTTP_SERVER_VARS: Sunucu programın çalışmakta olan PHP dosyasına sunduğu bazı bilgilerin bulunduğu dizi değişken. Bu değişkenin içinde şu unsurlar bulunur: 6 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 PHP_SELF: Çalışan PHP programının bulunduğu dizin ve adı PATH_TRANSLATED: Çalışan PHP programının fiziksel yolu HTTP_GET_VARS: Bir Form'dan GET metoduyla alınan bilgilerin anahtar=değer çiftleri olarak kaydedildiği dizi değişken HTTP_POST_VARS: Bir Form'dan POST metoduyla alınan bilgilerin anahtar=değer çiftleri olarak kaydedildiği dizi değişken HTTP_USER_AGENT: Ziyaretçinin bilgisayarında kurulu Internet Browser programı QUERY_STRING: Form ile bilgi alırken GET metodunu kullandığımız takdirde, Browser'ın göndereceği bilgilerin tutulduğu değişken REMOTE_ADDR: Ziyaretçinin bilgisayarına ISS tarafından atanmış IP adresi REQUEST_METHOD: Form ile gelen bilgilerin gönderildiği metod: GET veya POST REQUEST_URI : O anda çalışmakta olan PHP dosyasının adı ve varsa bu ada eklenmiş Query_String SCRIPT_FILENAME : O anda çalışmakta olan PHP programının dosya adı SCRIPT_URI: O anda çalışmakta olan PHP programının tam URL adresi SERVER_ADDR : Sunucunun IP adresi SERVER_PROTOCOL: Sunucunun HTTP protokolünün sürümü ● Form'dan GET Metoduyla Gelen Bilgiler : form_get_metodu.html <HTML> <HEAD> <TITLE>PHP'de Formlar</TITLE> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-9"> </HEAD> <BODY> <FORM ACTION="form_get_metodu.php" METHOD="GET"> Adınız, Soyadınız: <INPUT TYPE="TEXT" NAME="adi"> <br> Elektronik Adresiniz: <INPUT TYPE=TEXT" NAME="adres"> <br> <INPUT TYPE="SUBMIT" VALUE="Gönder Gitsin!"> <INPUT TYPE="RESET" VALUE="Vazgeç, Gönderme!"> </FORM> </BODY> </HTML> 7 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 form_get_metodu.php <HTML> <HEAD> <TITLE>PHP'de Formlar</TITLE> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-9"> </HEAD> <BODY> <?php print ("Sayın <b>$adi</b>\n\n"); print ("<p>Elektronik adresiniz: <b>$adres </b></p>\n\n"); ?> </BODY> </HTML> Browser, GET yoluyla bilgi göndereceği zaman, Form'daki bütün bilgileri URLEncoding denen sistemle kodlar; Form'un alan adlarına o alanlara ziyaretçinin yazdığı bilgileri bir eşittir işaretiyle ekler; bu tür alan=girdi çiftlerinin arasına & (ve işareti) koyar ve gönderir. Web sunucu, bu bilgileri alınca, önce kendi oluşturduğu bazı değişkenlere (hem QUERY_STRING, hem de HTTP_GET_VARS dizisine) yazar ve sonra URL hanesinde ( <form action=”.....”) adı yazılı olan programa (sayfaya) verir. Yukarıdaki örnekte Sunucu'nun ziyaretçiden gelen bilgileri depoladığı dizileri kullanmadık. Bunu yaparken, GET ile gelen bilgiler kendisinde verildiğinde PHP 8 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 programının alan adlarını değişken adı, bunların karşısında yazılı olan verileri de bu değişkenin değeri saymasından yararlandık. Fakat isteseydik, bu değişkenleri, Sunucu'nun oluşturduğu dizilerden de alabilirdik. Şimdi hem Form'umuzu geliştirelim; hem de bu kez okuma işini Sunucu dizisinden yapalım. Önce Form'umuzu değiştirelim ve formlar03.htm adıyla kaydedelim: <HTML> <HEAD> <TITLE>PHP'de Formlar</TITLE> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-9"> </HEAD> <BODY> <FORM ACTION="formlar03_isle.php" METHOD="GET"> Adınız, Soyadınız: <INPUT TYPE="TEXT" NAME="adi"> <BR> Elektronik Adresiniz: <INPUT TYPE=TEXT" NAME="adres"> <BR> Hangi notunuzu öğrenmek istiyorsunuz? <BR> <SELECT NAME="hangi_not"> <OPTION>--Lütfen seçiniz-<OPTION>Sınav 1 <OPTION>Sınav 2 <OPTION>Ortalama </SELECT> <BR> <INPUT TYPE="SUBMIT" VALUE="Gönder Gitsin!"> <INPUT TYPE="RESET" VALUE="Vazgeç, Gönderme!"> </FORM> </BODY> </HTML> 9 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 Aşağıdaki kodları formlar03_isle.php adıyla kaydedelim: <HTML> <HEAD> <TITLE>PHP'de Formlar</TITLE> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-9"> </HEAD> <BODY> <?php foreach ($HTTP_GET_VARS as $anahtar=>$deger ) { print ("<b>$anahtar = $deger <br>\n"); } ?> </BODY> </HTML> >URL Kodları HTTP protokolüne göre, temel ASCII listesi içinde yer almayan karakterler, ve tabiî bu arada sadece Türkçe'de bazı diğer alfabelerde bulunan harfler, bir Form'da yer aldığı taktirde, Browser tarafından URL şemasına göre kodlanarak gönderilir. Gerçi bir çok HTTP sunucu programıbu karakterlere tanıyabilir ve bir dosyaya yazarken doğru şekilde yazabilirler; ama bu çevirme işleminin bazen program yardımıyla yapılması gerekebilir. Bizim için önemli karakterler ve URL kodları şöyle: ü = %FC İ = %DD Ü = %DC ğ = %F0 ö = %F6 Ğ = %D0 Ö = %D6 ş = %FE ı Ş = %DE = %FD 10 Bilişim Teknolojileri Alanı – İnternet Programcılığı ç Durhan GABRALI - 2008 = %E7 ] = %5D Ç = %C7 { = %7B % = %25 } = %7D & = %26 ? = %3F [ = %5B = = %3D ● Form'dan POST Metoduyla Gelen Bilgiler : HTTP sunucusu bu yöntemle gelen bilgileri $HTTP_POST_VARS dizideğişkeninde tutar. HTTP sunucusu açısından GET ile POST'un tek farkı gelen değerlerin nerede nasıl tutulduğundan ibaret değildir. GET yönteminde, bir Browser'ın sunucuya gönderebileceği verinin uzunluğu, Sunucunun ayarlarına bağlı olmak üzere, sınırlıdır. Oysa POST ile alacağımız veri miktarı, sadece sunucunun bulunduğu bilgisayarın sabit disk alanıyla sınırlıdır. Bir başka fark, Browser'ın GET yoluyla gönderdiği verilerin (ve bu arada ziyaretçinin parola olarak yazdıklarında ekrana yıldız olarak çıkan metinler dahil) tümü, sunucuya, URL-kodlanmış metin olarak, Browser'ın URL adres hanesine de yazılmasıdır. Bir çok kullanıcı için bu bir güvensizlik belirtisi sayılır. Bu iki unsur Formlarımızda metod olarak GET yerine POST kullanmanın daha yerinde olduğunu gösterir. Örnek) Bu örnekte form_post_metodu.php adında tek bir dosya kullanılmıştır. <?php if ( isset ( $HTTP_POST_VARS )) { print ("<HTML>\n"); print ("<HEAD>\n"); print ("<TITLE>PHP'de Formlar</TITLE>\n"); print ("<meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-9\">\n"); print ("</HEAD>\n"); print ("<BODY>\n"); foreach ($HTTP_POST_VARS as $anahtar=>$deger ) { if ( gettype ($deger ) == "array" ) { print ("$anahtar == <br>\n"); foreach ( $deger as $yeni_degerler ) print (".. $yeni_degerler<br>"); } else { print ("<b>$anahtar = $deger <br>\n"); } } print ("</BODY>\n"); 11 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 print ("</HTML>\n"); } else { print ("<HTML>\n"); print ("<HEAD>\n"); print ("<TITLE>PHP'de Formlar</TITLE>\n"); print ("<meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-9\">\n"); print ("</HEAD>\n"); print ("<BODY>\n"); print ("<FORM ACTION=\"$PHP_SELF\" METHOD=\"POST\">\n"); print (" Adınız, Soyadınız: <INPUT TYPE=\"TEXT\" NAME=\"adi\">\n"); print ("<BR>\n"); print (" Elektronik Adresiniz: <INPUT TYPE=\"TEXT\" NAME=\"adres\">\n"); print ("<BR>\n"); print (" Hangi notunuzu öğrenmek istiyorsunuz? \n"); print ("<BR>\n"); print ("<SELECT NAME=\"hangi_not[]\" MULTIPLE>\n"); print ("<OPTION>Sınav 1 \n"); print ("<OPTION>Sınav 2 \n"); print ("<OPTION>Ortalama \n"); print ("</SELECT>\n"); print ("<BR>\n"); print ("<INPUT TYPE=\"SUBMIT\" VALUE=\"Gönder Gitsin!\"> <INPUT TYPE=\"RESET\" VALUE=\"Vazgeç, Gönderme!\"> \n"); print ("</FORM>\n"); print ("</BODY>\n"); print ("</HTML>\n"); } ?> Tedbirli Web programcılığı, özellikle birden fazla tasarımcı ve programcının birlikte çalıştığı ve Formlarda hangi yöntemin tercih edildiğini bilmenin kolay olmadığı projelerde, Form bilgisi işleyen PHP programlarımızda Form'da hangi metod kullanılmış olursa olsun, işleyici programın iki duruma da elverişli olmasını sağlamaktır. Aşağıda böyle bir örnek verilmiştir: <HTML> <HEAD> <TITLE>PHP'de Formlar</TITLE> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-9"> </HEAD> 12 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 <BODY> <?php $form_bilgisi = ( isset($HTTP_POST_VARS ) ) ? $HTTP_POST_VARS : $HTTP_GET_VARS; foreach ($form_bilgisi as $anahtar=>$deger ) { if ( gettype ($deger ) == "array" ) { print ("$anahtar == <br>\n"); foreach ( $deger as $yeni_degerler ) print (".. $yeni_degerler<br>"); } else { print ("<b>$anahtar = $deger <br>\n"); } } ?> </BODY> </HTML> ● Örnek: (1.Sınav Uygulama Sorusu) İki tane sayfa olsun: giris.html ve anasayfa.php . Giriş sayfasında kullanıcı adı ve şifre sorulsun, şayet doğru kullanıcı girişi yapılırsa anasayfa ve içeriği ekrana gelsin. Yanlış giriş yapılırsa anasayfada uyarı mesajı versin. giris.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <form id="form1" name="form1" method="post" action="anasayfa.php"> <label>Kullanici: <input type="text" name="user" /> </label> <p> <label>Sifre: <input type="password" name="password" /> </label> </p> <p> <label> 13 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 <input type="submit" name="Submit" value="GİRİŞ" /> </label> </p> </form> </body> anasayfa.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" /> <title>Untitled Document</title> </head> <body> <?php if ( $user =="senay" && $password =="1234") { echo ("Sifreli alana hosgeldiniz...<br/>"); echo ("Burada anasayfa içeriği yer almaktadır<br/>"); } else { echo ("Kullanici kimligi yanlis!"); } ?> </body> </html> 14 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 ● Örnek: (1.Sınav Uygulama Sorusu) Ekrana 1'den 40'a kadar olan sayıları iki sütunlu düzgün bir tablo içerisinde yazdırılsın. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" /> <title>Untitled Document</title> </head> <body> <?php print("<table border=\"1\">"); for ($i = 1 ; $i <= 20 ; $i++ ) { print("<tr>"); $x=$i + 20; print("<td>" . $i . "</td>" . "<td>" . $x . "</td>"); print("</tr>"); } print("</table>"); ?> </body> </html> 15 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 ● Örnek: (1.Sınav Uygulama Sorusu) Üç kenarı text kutularına girilen bir üçgenin nasıl bir üçgen olduğunu bulup (eşkenar , çeşitkenar , ikizkenar ) ekrana yazdıran php programı. (Not: Eğer girilen kenarlardan üçgen oluşmaz ise sonuç kısmına “üçgen oluşmaz” mesajı yazdırılacak) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" /> <title>Untitled Document</title> </head> <body> <form id="form1" name="form1" method="post" action="soru9.php"> A kenarı: <input type="text" name="a" id="a" /> <p>B kenarı: <input type="text" name="b" id="b" /> </p> <p>C kenarı: <input type="text" name="c" id="c" /> </p> <p> <input type="submit" name="hesapla" id="hesapla" value="KONTROL ET" /> </p> </form> <?php $ikizkenar="false"; if ((isset($hesapla)) && ( $a=="" || $b=="" || $c=="") ) { print("Bir yada birden fazla boş değer bıraktınız!"); } if (isset($hesapla) && ($a!="" && $b!="" && $c!="" )) { $ikizkenar="false"; 16 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 if(($b-$c )<0 ) { $kontrol1=($b-$c)*(-1); } else { $kontrol1=$b-$c ;} if(($b-$a )<0 ) { $kontrol2=($b-$a)*(-1); } else { $kontrol2=$b-$a ;} if(($a-$c )<0 ) { $kontrol3=($a-$c)*(-1); } else { $kontrol3=$a-$c; } if ((($kontrol1 < $a) && ($a < ($b+$c))) && (($kontrol2 < $b) && ($b < ($b+$a))) && (($kontrol3 < $c) && ($c < ($a+$c)))) { // Üçgen oluşmuş ise..... if($a==$b && $a==$c && $b==$c) { print("<table border=1><tr align=center>"); print("<td><b>A</b></td><td><b>B</b></td><td><b>C</b></td><td><b>Sonuç</b></ td></tr>"); print("<tr><td>" . $a . "</td>"); print("<td>" . $b . "</td>"); print("<td>" . $c . "</td>"); print("<td> Eşitkenar </td></tr></table>"); } if(($a != $b) && ($a != $c) && ($b != $c)) { print("<table border=1><tr align=center>"); print("<td><b>A</b></td><td><b>B</b></td><td><b>C</b></td><td><b>Sonuç</b></ td></tr>"); print("<tr><td>" . $a . "</td>"); print("<td>" . $b . "</td>"); print("<td>" . $c . "</td>"); print("<td> Çeşitkenar </td></tr></table>"); } if(($a == $b) && ($a != $c)) { $ikizkenar="true"; print("a eşit b"); } if(($a == $c) && ($a != $b)) 17 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 { $ikizkenar="true"; print("a eşit c"); } if(($b == $c) && ($b != $a)) { $ikizkenar="true"; print("b eşit c"); } if($ikizkenar=="true") { print("<table border=1><tr align=center>"); print("<td><b>A</b></td><td><b>B</b></td><td><b>C</b></td><td><b>Sonuç</b></ td></tr>"); print("<tr><td>" . $a . "</td>"); print("<td>" . $b . "</td>"); print("<td>" . $c . "</td>"); print("<td> ikizkenar </td></tr></table>"); $ikizkenar="false"; } } // Üçgen oluşmamış ise.... else { print("<table border=1><tr align=center>"); print("<td><b>A</b></td><td><b>B</b></td><td><b>C</b></td><td><b>Sonuç</b></ td></tr>"); print("<tr><td>" . $a . "</td>"); print("<td>" . $b . "</td>"); print("<td>" . $c . "</td>"); print("<td> Üçgen Oluşmaz </td></tr></table>"); } } 18 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 ?> </body> </html> ● Örnek: GET yöntemiyle çalışan bir Form uygulaması 19 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" /> <title>Untitled Document</title> </head> <body> <? if ($_GET ) { ?> <table align="center" width="50%" border="1"> <tr> <td><strong>Personelin:</strong></td> <td><strong>Değerler:</strong></td> </tr> <? foreach ( $_GET as $isim => $deger ) { ?> <tr> <td><?=$isim?></td> <td><?=$deger?></td> </tr> <? } ?> </table> <? } else { ?> <form action="" method="get"> <table width="50%" border="0" align="center"> <tr> <td colspan="2"> <div align="center"><strong>FORM</strong> </div> </td> </tr> <tr> <td>Adı:</td> <td><input type="text" name="adi" id="adi" /></td> </tr> <tr> <td>Soyadı:</td> 20 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 <td><input type="text" name="soyadi" id="soyadi" /></td> </tr> <tr> <td>Meslek:</td> <td><select name="meslek" id="meslek"> <option value="ogrenci">Öğrenci</option> <option value="muhendis">Mühendis</option> <option value="programci">Programcı</option> </select> </td> </tr> <tr> <td></td> <td><input type="submit" value="Gönder" /></td> </tr> </table> </form> <? } ?> </body> </html> ● Örnek: POST yöntemiyle çalışan bir Form uygulaması 21 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" /> <title>Untitled Document</title> </head> <body> <? if ( ! $_POST ) { ?> <form name="form1" method="post" action="<?=$PHP_SELF?>"> <table width="50%" border="0" align="center"> <tr> <td colspan="2"><div align="center">FORM</div></td> </tr> <tr> <td>Adınız:</td> <td><input name="adi" type="text" id="adi" /></td> </tr> <tr> <td>Soyadınız:</td> <td><input name="soyadi" type="text" id="soyadi" /></td> </tr> <tr> <td> </td> <td><input type="submit" value="Gönder"/></td> </tr> </table> </form> <? } else { if ( empty($adi) || empty($soyadi) ) { echo "Form alanında boş yerler bıraktınız!"; } else { echo "Merhaba: <b>$adi $soyadi </b>"; } 22 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 } ?> </body> </html> ● Örnek: E-Mail gönderme örneği <html> <head> <meta http-equiv="Content-Language" content="tr"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1254"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9"> <title>.:: Webmail ::. </title> </head> <body> <center><br><br> <!-- Programda hicbir değişiklik yapmaniza gerek yok. Ama kendinize göre HTML kisminda degisiklik yapabilirsiniz --> <?php //-----> Email adreslerinin dogru yazilip yazilmadigi kontrol ediliyor. function adres_kontrol($adres) { if(eregi("^[_a-z0-9-]+(\.[a-z0-9-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+[a-z]{2}[mtgvu]?$", $adres, $xgonemail) and !empty($adres)){return "e";} else {return "h";} } function form_goster() { global $gonderen,$alici,$konu,$mesaj,$hata_mesaji; $mesaj=eregi_replace("[\]","",$mesaj); echo " <form action=\"webmail.php\" method=\"post\"> <table border=1 width=500> <tr> <td colspan=2 align=center><font color=red><b>".$hata_mesaji."</b></font></td> 23 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 </tr> <tr> <td width=50%>Gönderenin Email Adresi:</td> <td width=50%><input type=text name=gonderen value=\"".$gonderen."\" size=38></td> </tr> <tr> <td>Alıcının Email Adresi:</td> <td><input type=text name=alici value=\"".$alici."\" size=38></td> </tr> <tr> <td>Konu (Subject):</td> <td><input type=text name=konu value=\"".$konu."\" size=38></td> </tr> <tr> <td colspan=2 align=center> <textarea cols=50 rows=12 name=mesaj>".$mesaj."</textarea> <input type=submit value=\"Mesaji Gönder\"> <input type=hidden name=islem value=gonder> </td> </tr> </table><br> </form> "; } //-----> Ana program if($islem=="gonder") { if (adres_kontrol($gonderen)=="h" or adres_kontrol($alici)=="h") { $hata_mesaji="Email adreslerinde bir hata var!"; form_goster(); } else 24 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 { if(empty($konu) or empty($mesaj)) { $hata_mesaji="Konu ve/veya mesajı boş bırakamazsınız"; form_goster(); } else { $mesaj=eregi_replace("[\]","",$mesaj); @mail($alici,$konu,$mesaj,"From: ".$gonderen); echo "<br><br><br><font color=\"#000099\" size=2><b>Emailiniz başarıyla gönderilmiştir.</b></font>"; } } } else { form_goster(); } ?> </center> </body> </html> 25 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 Açıklamalar: > eregi() Fonksiyonu: Bir karakter katarı içinde aranılan karakter katarı bulunduğu taktirde doğru, bulamadığı taktirde yanlış bir değer verir. Fonksiyonun aradığımız eşleştirmeyi yapması halinde, buradaki $degisken'in değeri doğru(TURE), yapamaması halinde yanlış(FALSE) olacaktır. Eşleştirme sırası aşağıdaki şekilde oluşturulur. $kaynak, eşleştirilecek sıralamanın içinde aranacağı değeri tutan değişkendir. Fonksiyonun bir diğer özelliği, eğer eşleştirilecek sıralamayı gruplar halinde verirsek, kaynakta yapacağı eşleştirme olursa, buna uygun değerleri bir dizi değişkene yazabilmesidir; istersek bir parametre olarak bu yeni değişkenin almasını istediğimiz adı veririz; böylece eşleştirme sonucu bulunan değerler kaydedilmiş olur. Eregi fonksiyonu büyük/küçük harf ayrımı yapmaz. Kullanım: <?php $degisken = eregi("eşleştirilecek_sıra", $kaynak, $yeni_değişken); ?> E-Posta Kontrolü: <? function eposta_kontrol($eposta) { if (!eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$",$eposta)) die ("E-Posta Adresiniz Geçersiz"); } ?> > ereg_replace() ve eregi_replace fonksiyonları: Metin içinde istenilen bir kelimeyi bulup değiştirmek için kullanılır. eregi_replace() işlevinin ereg_replace() işlevinden farkı büyük-küçük harf ayrımı yapmamasıdır. <?php $string = "Test yazısı"; echo str_replace("sı", " örneği", $string); //Test yazı örneği echo ereg_replace("sı", "örneği", $string); //Test yazı örneği ?> Yukardaki örnekte görüldüğü gibi hızlı ve kullanışlı bir fonksiyondur. Mesela bir yazı içindeki harf ile yazılmış numaraları rakamlara çevirelim: <?php $numara = '4'; $string = "Yazı içinde geçen dört."; $string = ereg_replace('dört', $numara, $string); echo $string; // Çıktı: Yazı içinde geçen 4. ?> 26 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 ● Örnek: Dosya gönderme (Upload) <HTML> <HEAD> <TITLE>PHP'de Dosya Gönderme</TITLE> <meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-9\"> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1254\"> </HEAD> <?php $dosya_dizin = "C:\www\upload"; // Web Sunucuda dosyanın kaydedileceği dizin $dosya_url = "http://localhost/upload/"; if ( isset ( $dosya_gonder )) { print ("<b>Yol:</b>".$dosya_gonder. "<br>\n"); // Sunucuda Dosyanın kaydedileceği gecici dizin print ("<b>Adı:</b>". $dosya_gonder_name. "<br>\n"); // Dosyanın ismi print ("<b>Boyut:</b>". $dosya_gonder_size. "<br>\n"); // Dosyanın boyutu print ("<b>Tür:</b>". $dosya_gonder_type. "<br>\n"); // Dosyanın türü copy ( $dosya_gonder, $dosya_dizin. "/".$dosya_gonder_name) or die ("Dosya kopyalanamıyor!"); if ( $dosya_gonder_type == "image/gif" ||$dosya_gonder_type == "image/pjpeg" ) { print ("<img src=".$dosya_url."/".$dosya_gonder_name.">"); } } ?> </BODY> <FORM ENCTYPE="multipart/form-data" ACTION="<?=$PHP_SELF?>" METHOD="POST"> <!-- Dosyanın boyutunu sınırlandırıyoruz.... --> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="951200"> <INPUT TYPE="file" NAME="dosya_gonder"><BR> <INPUT TYPE="SUBMIT" VALUE="Dosya Yolla!"> </FORM> </BODY> </HTML> 27 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 die() Fonksiyonu: Bir PHP fonksiyonunun kendisinden beklenen işi yapamaması halinde oracıkta durdurulmasını die() komutu sağlar. "Öl!" anlamına gelen bu fonksiyona ekranda görüntülenmesini istediğimiz bir metni parametre olarak verebiliriz. Bu bölümdeki örnekler bu komutla birlikte şöyle yazılabilir: $dosya = fopen( "bir_dosya.txt" , `a` ) or die ("Dosya açılamıyor!") ; ● Örnek: PHP'de bir menüye bağlı olarak içeriğin değiştirilmesi Menüdeki linkler şu şekilde olacak: <a href="http://www.deneme.com/?pid=anasayfa">ANA SAYFA</a> <a href="http://www.deneme.com/?pid=urunler">ÜRÜNLER</a> <a href="http://www.deneme.com/?pid=referanslar">REFERANSLAR</a> <a href="http://www.deneme.com/?pid=iletisim">İLETİŞİM</a> İçerik kısmında şu kodlar yer alacak: <?php switch ($_GET["pid"]) { case "anasayfa": include ("index.html"); break; case "urunler": include ("urunler.html"); break; case "referanslar": include ("referanslar.html"); break; case "iletisim": include ("iletisim.html"); break; default: include ("index.htm"); } 28 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 >Diğer bir seçenek de şöyle olabilir: Menüdeki linkler şu şekilde olacak: <a href="http://www.deneme.com/?pid=1">ANA SAYFA</a> <a href="http://www.deneme.com/?pid=2">ÜRÜNLER</a> <a href="http://www.deneme.com/?pid=3">REFERANSLAR</a> <a href="http://www.deneme.com/?pid=4">İLETİŞİM</a> İçerik kısmında şu kodlar yer alacak: <?php switch ($_GET["pid"]) { case 1 : include ("index.html"); break; case 2 : include ("urunler.html"); break; case 3 : include ("referanslar.html"); break; case 4 : include ("iletisim.html"); break; default: include ("index.htm"); } >Diğer bir seçenek de şöyle olabilir: 1.Menü: <a href="http://www.deneme.com/?pid=1">ANA SAYFA</a> <a href="http://www.deneme.com/?pid=2">ÜRÜNLER</a> <a href="http://www.deneme.com/?pid=3">REFERANSLAR</a> <a href="http://www.deneme.com/?pid=4">İLETİŞİM</a> 2.Menü:(Ürünler sayfasında ikinci bir menü olsun) <a href="http://www.deneme.com/?pid=1&uruncid=5">YAZILIM</a> <a href="http://www.deneme.com/?pid=1&uruncid=6">DONANIM</a> <a href="http://www.deneme.com/?pid=1&uruncid=7">NETWORK</a> Ana Sayfanın içerik kısmında şu kodlar yer alacak: <?php switch ($_GET["pid"]) { case 1 : include ("index.html"); break; case 2 : include ("urunler.html"); break; 29 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 case 3 : include ("referanslar.html"); break; case 4 : include ("iletisim.html"); break; default: include ("index.htm"); } Ürünler Sayfanın içerik kısmında şu kodlar yer alacak: <?php switch ($_GET["uruncid"]) { case 5 : include ("urunler/yazilim.html"); break; case 6 : include ("urunler/donanim.html"); break; case 7 : include ("urunler/network.html"); break; } ● Örnek: PHP'de örnek bir Formda , form elemanlarına girilen değerlerin kontrol edilmesi <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <? $hata=""; function kontrol() { global $adi , $soyadi , $meslek , $hata; // Hata mesajlari ayarlaniyor if (empty($adi)) $hata = $hata. "Adi alanini bos biraktiniz<br>"; if (empty($soyadi)) $hata = $hata. "Soyadi alanini bos biraktiniz<br>"; if (empty($meslek)) $hata = $hata. "Meslek alanini bos biraktiniz<br>"; // Fonksiyonun geri dönüs degeri ayarlaniyor if ( empty($adi) or empty($soyadi) or empty($meslek)) return 0; if ( isset($adi) and isset($soyadi) and isset($meslek)) 30 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 return 1; } if ($_GET && kontrol() ) { ?> <table align="center" width="50%" border="1"> <tr> <td><strong>Personelin:</strong></td> <td><strong>Degerler:</strong></td> </tr> <? foreach ( $_GET as $isim => $deger ) { ?> <tr> <td><?=$isim?></td> <td><?=$deger?></td> </tr> <? } ?> </table> <? } else { ?> <form action="" method="get"> <table width="50%" border="0" align="center"> <tr> <td colspan="2"> <font color="#FF0000"> <?=$hata?> </font> </td> <tr> <td colspan="2"> <div align="center"><strong>FORM</strong> </div> </td> </tr> <tr> <td>Adi:</td> <td><input type="text" name="adi" id="adi" /></td> </tr> <tr> <td>Soyadi:</td> <td><input type="text" name="soyadi" id="soyadi" /></td> </tr> <tr> <td>Meslek:</td> <td><select name="meslek" id="meslek"> 31 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 <option value="">Bir deger seçin...</option> <option value="ogrenci">Öğrenci</option> <option value="muhendis">Mühendis</option> <option value="programci">Programcı</option> </select> </td> </tr> <tr> <td></td> <td><input type="submit" value="Gönder" /></td> </tr> </table> </form> <? } ?> </body> </html> </body> </html> 32 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 DOSYA - DİZİN İŞLEMLERİ ● Örnek: PHP'de bir dosyanın oluşturulması ve kopyalanması <?php $dizin="C:\www\dosya-dizin"; if ( ! $_GET ) { @touch($dizin."\dosya.txt") || die ("Dosya oluşturulamadı"); echo "Dosya oluşturuldu. Şimdi bu dosyayı <b> C:\ </b> içerisine kopyalamak için <a href='?git=copy'> tıklayınız </a>"; } else { copy($dizin."\dosya.txt","C:\dosya.txt") || die("Dosya kopyalanamadı"); echo "Dosya kopyalandı"; } ?> ● Örnek: Bir html dosyanın oluşturulması <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" /> <title>Untitled Document</title> </head> <body> <?php $dosya="C:\www\dosya-dizin\dosya.html"; $icerik="<html> <head> <title>Dosya oluşturma</title> </head> <body bgcolor='red'>Bu dosyayı ben oluşturdum... </body> </html>"; $bag = @fopen($dosya , "w"); 33 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 if ( ! $bag ) { echo "Dosyaya baglanılamadı"; exit(); } if( fputs($bag , $icerik) ) { echo "Dosya oluşturuldu. İçerik yazıldı"; } else { echo "Dosyanın içeriği yazılmadı"; } fclose($bag); ?> </body> </html> ● Örnek: Bir form'dan alınan bilgilerle bir dosyasının oluşturulması <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" /> <title>Untitled Document</title> </head> <body> <?php if (! $_POST ) : ?> <form action="" method="post"> 34 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 <table width="50%" border="0" align="center"> <tr> <td valign="top"> Dosya İçeriği</td> <td> <textarea name="icerik" cols="22" rows="7"></textarea> </td> </tr> <tr> <td>Uzantı</td> <td><input name="isim" type="text" value="dosya.php" size="10" /></td> </tr> <tr> <td> </td> <td><input type="submit" value="Gönder" /></td> </tr> </table> <?php else: $dosya="C:\www\php\dosya-dizin\\" . $isim ; $degis= array ("\\" =>"" ); $bag = @fopen($dosya , "w"); if ( ! $bag ) { echo " Dosyaya bağlanamadım $dosya"; exit(); } if (fputs($bag , strtr($icerik , $degis)) ) { echo "Dosya oluşturulup içerik yazıldı"; } else { echo "Dosyanın içeriği yazılamadı"; } fclose($bag); endif; ?> 35 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 </body> </html> ● Örnek: Basit bir sayac uygulaması <body> <?php $dosya="C:\www\dosya-dizin\sayac.txt"; $ac=@fopen ($dosya , "r"); if (!$ac) { echo "Veritabanına ulaşılamadı"; exit(); } $sayac = fread( $ac , filesize($dosya)); fclose($ac); $sayac++; ?> <font size="+6"> Ziyaretci sayısı : <b><?=$sayac?></b><br /> Ip Numaranız:<?=$REMOTE_ADDR?> </font> <?php $ac2 = @fopen ($dosya , "w"); fputs($ac2 , $sayac); fclose($ac2); ?> </body> 36 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 ● Örnek: Konuk Defteri uygulaması index.php <?php if ( $_POST ) : // Form dolduruldmuş ise echo (" <HTML> <HEAD> <TITLE>PHP'de Misafir Defteri</TITLE> <meta http-equiv='content-type' content='text/html; charset=ISO-8859-9'> <meta http-equiv='Content-Type' content='text/html; charset=windows-1254'> </HEAD> <BODY> <P><font size='3' class='s4' face='Arial, Helvetica'> "); 37 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 $dosya_adi = "mesajlar.txt"; if (file_exists("$dosya_adi")) { $yazilacak_dosya = fopen($dosya_adi,'a'); } else { $yazilacak_dosya = fopen($dosya_adi,'w'); } foreach ($HTTP_POST_VARS as $anahtar=>$deger ) { $yeni_anahtar = strtoupper($anahtar); print ("$yeni_anahtar: $deger<br>"); $metin = "$yeni_anahtar: $deger<br>"; fputs($yazilacak_dosya, $metin); } fputs($yazilacak_dosya, date("D d M Y h:i:s")); fputs($yazilacak_dosya, "<br>\n"); fputs($yazilacak_dosya, "<center> <img src='nokta.gif' width=100% height=1 border=0></center>\n"); fclose($yazilacak_dosya); echo (" <HTML> <HEAD> <TITLE>PHP'de Misafir defteri</TITLE> <meta http-equiv='Content-Type' content='text/html; charset=windows-1254'> </HEAD> <BODY> <P><font size='3' class='s4' face='Arial, Helvetica'> <center><img src='nokta.gif' width=100% height=1 border=0></center> Sayın: $adi<br> Defterimi imzaladığınız için teşekkür ederim</P> <p>Ana Sayfaya Dönmek için <A HREF=\"index.htm\"> tıklayın</A><BR> Mesajları okumak için<A HREF=\"mesajlar.php\"> tıklayın</A> </BODY> </HTML> "); 38 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 else : echo (" <HTML> <HEAD> <TITLE>PHP'de Formlar</TITLE> <meta http-equiv='Content-Type' content='text/html; charset=windows-1254'> </HEAD> <BODY> <FORM ACTION=\"$PHP_SELF\" METHOD=\"POST\"> <P><font size='3' face='verdana, Arial, Helvetica'> Defteri imzalamadan okumak için <a href='mesajlar.php'> burayı tıklayın</a></FONT></P> <P><font size='3' face='Arial, Helvetica'> Adınız, Soyadınız: <br><INPUT TYPE=\"TEXT\" NAME=\"adi\"><BR> Elektronik Adresiniz: <br><INPUT TYPE=\"TEXT\" NAME=\"adres\"><BR> Mesajınız:<BR> <TEXTAREA NAME=\"mesaj\" ROWS=10 COLS=30 WRAP=virtual></TEXTAREA> <BR><BR><BR> <INPUT TYPE=\"SUBMIT\" VALUE=\"Defteri imzala!\"> <INPUT TYPE=\"RESET\" VALUE=\"Tümünü sil!\"> </FORM> </BODY> </HTML> "); endif; ?> mesajlar.php <html> <head> <title>Misafir Defteri</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-9"> 39 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 </head> <style type="text/css"> <!--// .s5 {font-size: 20px; font-family: verdana,arial,helvetica} .s4 {font-size: 18px; font-family: verdana,arial,helvetica} .s3 {font-size: 13px; font-family: verdana,arial,helvetica; letter-spacing: 1px} //--> </style> <body> <font size="3" class="s4" face="Verdana, Arial, Helvetica"> <p> <?php if (file_exists("mesajlar.txt")){ include("mesajlar.txt"); } ?> <br><br> <font size="3" class="s4" face="Arial, Helvetica"> <a href="index.php">Defterimi imzalayın</a></font> </font> </BODY> </HTML> 40 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 ● Örnek: Sayaç Uygulaması <? # set a session ID session_start(); if (!$PHPSESSID) { $thefile = file("count.txt"); $count = implode("", $thefile); $count++; $myfile = fopen("count.txt","w"); fputs($myfile,$count); fclose($myfile); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Sayac Uygulaması</title> </head> <body bgcolor="Black" text="Silver"> Ismet Aktar Meslek Lisesi. <p>Ziyaretci sayisi: <? $thefile = file("count.txt"); $count = implode("", $thefile); print $count; ?> kisi.</p> </body> </html> 41 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 DİZİN İŞLEMLERİ Kullanılan Komutlar: mkdir : Dizin oluşturur rmdir : Dizin siler is_dir : İlgili nesnenin dizin olduğunu gösterir is_file : İlgili nesnenin dosya olduğunu gösterir opendir : Belirli konumdaki bir dizini açar readdir : Belirli konumdaki bir dizinden bir nesne okur ● Örnek: İşlem yapılan dizin içinde klasör ve dosyaların listelenmesi <?php $dir = @opendir("C:\www"); while( ($dizin = readdir($dir) ) != false ) { echo " $dizin <br/>"; } closedir($dir); ?> ● Örnek: İşlem yapılan dizin içinde klasör ve dosyaların listelenmesi. Burada yukarıdaki örnekten faklı bir yöntem kullanılmıştır. <?php $dizin = dir("C:\www"); while( ($klasor = $dizin->read( ) ) { echo " $klasor <br/>\n"; } $dizin->close( ); ?> ● Örnek: Üst kısımda klasörlerin alt kısımda ise dosyaların listelenmesi. <body> <strong>Dizinler</strong><br /> <?php 42 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 $dizin = dir ("C:\www"); while ( $klasor = $dizin->read() ) // dizin okumak için faklı bir yöntem { if ( is_dir($klasor)) echo "<a href=$klasor> $klasor </a> <br> \n" ; } $dizin->close(); ?> <strong>Dosyalar</strong><br /> <?php $dizin2 = dir ("C:\www"); while ( $dosya = $dizin2->read() ) // dizin okumak için faklı bir yöntem { if ( is_file($dosya)) echo "<a href=$dosya> $dosya </a> <br> \n" ; } $dizin2->close(); ?></body> ● Örnek: Pascal üçgeni, binom açılımındaki katsayıları bulmaya yarar. Binom açılımı, iki sayının toplamının üslü ifadesinin açılımıdır. Buna göre N değeri girilen bir Polinomun binom açılımındaki katsayılarını şekil - 7’da olduğu gibi pascal üçgeni şeklinde ekrana yazdıran PHP programını yazınız? (Katsayı hesabı için fonksiyon kullanınız) 43 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 Çözüm:) <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <form id="form1" name="form1" method="post" action=""> N değeri: <label> <input type="text" name="n" id="n" /> </label> <p> <label> <input type="submit" name="Submit" id="button" value="HESAPLA" /> </label> </p> </form> <?php function hesap($n,$k) { $n_faktoriyel = 1; $k_faktoriyel = 1; $n_eksi_kfaktoriyel = 1; // Faktoriyel hesapları yapılıyor for($i=1;$i<=$n;$i++) { $n_faktoriyel = $n_faktoriyel * $i; } for($j=1;$j<=$k;$j++) { $k_faktoriyel=$k_faktoriyel * $j; } for($z=1;$z<=($n-$k);$z++) 44 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 { $n_eksi_kfaktoriyel=$n_eksi_kfaktoriyel * $z; } $sonuc = $n_faktoriyel / ($k_faktoriyel * $n_eksi_kfaktoriyel); return $sonuc; } if ($_POST) { echo "<table border=1>"; print ("N değeri:" . $n); for( $y=0 ; $y<$n+1 ; $y++ ) { echo "<tr>"; for( $x=0 ; $x<$y+1 ; $x++ ) { echo "<td>"; $yaz = hesap($y,$x); print ($yaz); echo "</td>"; } echo "</tr>"; } echo "</table>"; } ?> </body> </html> 45 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 II.DÖNEM Örnek) Sepet Uygulaması : Bu uygulamada sepet session ile yapılmıştır. Uygulamada bulunan dosyalar şunlardır: urunler.inc <?Php $urunler = array('elma' => 10 , 'armut' => 20 , 'portakal' => 30 , 'muz' => 40 , 'üzüm' => 50 , 'limon' => 60 , 'mandalina' => 70 , 'greyfurt' => 80 , 'çilek' => 90 , 'portakal' => 100); ?> class.inc <?php class Sepet { public $sepet_ici=array(); function Sepet() { $this->sepet_ici=$_SESSION['sepet']; } function ekle($urun_ad,$miktar) { 46 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 $_SESSION['sepet'][$urun_ad] = $miktar; $this->sepet_ici=$_SESSION['sepet']; } function sil($urun_ad) { if(count($this->sepet_ici)>0) { unset($_SESSION['sepet'][$urun_ad]); $this->sepet_ici=$_SESSION['sepet']; } } function urun_listesi() { return $this->sepet_ici; } function urun_sayisi() { return count($this->sepet_ici); } } ?> urunler_list.php 47 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 sepet.php 48 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 49 Bilişim Teknolojileri Alanı – İnternet Programcılığı Durhan GABRALI - 2008 II.Dönem 1.Sınav Soruları Teorik sorular S1) PHP’de Class(Sınıf) oluşturmanın mantığı nedir , bir Class nasıl oluşturulur biçimini yazınız , oluşturulan Class’lar program içerisinde nasıl kullanılır yazınız? S2) PHP’de Class(Sınıf) içerisinde erişim bakımından kaç farklı türde değişken tanımlayabiliriz, isimlerini yazarak kısaca açıklayınız , bu konuda PHP4 ile PHP5 arasındaki fark nedir yazınız? S3) Aşağıda Class’larda kullanılan bir takım metotlar verilmiştir. Bunları açıklayınız? __destruct __call __contruct __toString S4) PHP’de Cookie oluşturmak, süresini ayarlamak, Cookie’yi okumak işlemleri nasıl yapılır açıklayınız , kısa bir örnek veriniz? S5) PHP’de Session oluşturmak , Session’daki verileri okumak , Session’u yok etmek işlemleri nasıl yapılır açıklayınız , kısa bir örnek veriniz ? Uygulama soruları S6) a) Login.php isminde bir sayfa tasarlanacak. Bu sayfada kullanıcı adı ve şifre doğru girildiği taktirde index.php sayfasına yönlendirme yapılacak, yanlış girilirse login.php üzerinde “Şifre yanlış girildi veya kullanıcı adı yanlış” şeklinde ilgili mesajlarla kullanıcı uyarılacak ? (kullanıcı adı: okul , şifre:1234 olsun) b) Kullanıcı siteye ilk defa giriyorsa login.php sayfasının üst kısmında “ Siteye ilk defa giriş yapıyorsunuz” şeklinde bir mesaj çıkacak. Kullanıcı siteye 1 saat içinde ikinci kez giriş yapmaya çalıştığında , site kullanıcıyı tanıyacak ve login.php sayfasında en üstte “Hoşgeldin : Kullanıcı adı . Sitemize daha önce giriş yaptınız” şeklinde bir mesaj çıkacak ve “Kullanıcı Adı” metin kutusunda kullanıcı adı gözükecek. c) index.php sayfasına sadece login sayfasından giriş yapıldığı taktirde erişilebilecek, login yapmadan sayfa açılmaya çalışılırsa kullanıcılar “Giriş yapmalısınız” diyene uyarılacak ve [Giriş için tıklayınız…] şeklinde bir link konulacak. d) index.php sayfasının menülerinde Geometri isminde bir link olacak ve buraya tıklanınca geometri.php sayfası index.php içerisinde açılacak. Bu sayfada seçime bağlı olarak ; üçgen , kare ve dairenin alan hesapları girilen değerlere göre yapılacak. Alan hesabında Sınıf kullanılacak. (Geometri isminde bir sınıf tanımlansın ve bu sınıfın içerisinde ilgili alan hesaplarını yapan işlevler olsun) Not: Cevaplar daha sonra buraya yazılacaktır... 50