Afyon Kocatepe Unv. Bilgi İşlem Mrk. Yılmaz SARPKAYA yilmaz@aku.edu.tr WEB ‘de PROGRAMLAMA Afyon Kocatepe Unv. Bilgi İşlem Mrk. Yılmaz SARPKAYA yilmaz@aku.edu.tr
Apache Kurulumu ve konfigürasyon Gerekli olan paket: apache_2.0.35-win32-x86-no_ssl.msi Bu paket kurulmadan önce eski sürümleri varsa kaldırın ve mevcut dizinleri silin. Paketi C:\ konumuna install edin. Bu kurulum Windows 2000 için yapılıp test edilmiştir. Dökümanlarında 98, ME ve XP içinde sorunsuz olduğu söylenmektedir. Bu paket kurulduktan sonra yapılması gereken konfigürasyon değişiklikleri
APACHE2 Konfigürasyon ARTIK APACHE SERVER imiz hazır. Apache Server i durduruyoruz. c:\apache2\conf dizinindeki httpd.conf dosyasını açıyoruz directory index satırını bulup şu şekilde düzeltiyoruz. (altına bunu ekliyoruz) DirectoryIndex index.html index.php daha sonra dosyanın en sonuna gidip ScriptAlias /php/ "c:/php/" Action application/x-httpd-php "/php/php.exe" AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps AddLanguage tr .tr satırını AddLanguage ‘lerin en altına ekle. LanguagePriority en da nl et fr de el nin başına tr ekle apache yi start ediyoruz. ARTIK APACHE SERVER imiz hazır.
Apache Service Monitor
MySql Kurulumu Gerekli olan Paket mysql-3.23.55-win.zip Bu paketi de Apacehe yi kurdugumuz drive a yani (C:\) ye kuruyoruz. Adres : http://www.mysql.com/ Kurulum sonrası mysql servisinin aktif olup olmadigini Denetim mazası>Yönetimsel Araçlar>Hizmetler den kontrol ediniz. Buraya kadar bir sorun çıkmadı ise MySql Ser de hazır demektir.
MySql System Admin
Php Kurulumu ve Konfigüre etme Gerekli Paket : PHP405.zip Öncelikle bunu C:\PHP dizinine açın. ZIP ‘li dosyanın içinden çıkanların C:\PHP içinde olduğundan emin olun. (PHP405 dizini degil) php.ini.optimized dosyasının adını değiştirerek php.ini yapıyoruz Dosyayı açıp extension_dir = c:\php ve ; browscap = c:\winnt\browscap.ini düzeltmelerini yapıyoruz. burada browscap satırında dikkat etmemiz gereken nokta satır başındaki (;) işaretini kaldırmayı unutmuyoruz ve eğer windows 98, me kullanıyorsak "winnt" yerine "windows" yazıyoruz
Php Kurulumu ve Konfigüre etme-2 C:\PHP içindeki php.ini ve C:\PHP\browscap dizini içindeki browscap.ini dosyalarını winnt dizinine kopyalıyoruz. (98, ME kullanıcıları windows dizinine) C:\PHP dizini içindeki tüm dll dosyalarını seçip c:\winnt\system32 dizinine kopyalıyoruz. (98, ME kullanıcıları windows\system dizinine) Şimdi de PHP artık kod yazmaya hazır hale geldi. Herşeyin yolunda gittiğini test etmek için C:\Apache2\htdocs dizininin içinde test.php isminde bir dosya oluşturuyoruz ve içine <? phpinfo(); ?> yazip kaydediyoruz. Bir explorer sayfası açıp adres çubuğuna //localhost/test.php yazip deniyoruz. Herşey yolunda ise şöyle bir ekran karşımıza gelecektir.
Php Test görüntüsü
Çalışma modeli Veri tabanı sistemi ile evrensel ve hafif istemciler arasında yer alır. Hem HTML üretimi, hem de uygulama mantığı PHP motoru üzerinde gerçekleşir. Genel olarak Web tarafı ağır basan üç katmanlı yapıyı esas alır.
Web Tabanlı Mimari
Neden PHP? Verimlilik Bakım kolaylığı Taşınabilirlik Uyumluluk Performans Hızlı Gelişim ve Yaygınlık Ekonomik
Ekonomik Tüm eklentileri ile birlikte ücretsiz
Dilin Yapısı
Ve İlk 'Hello World' cümlemiz: <html> <head> <title>Example</title> </head> <body> <? echo "Hello World..."; ?> </body> </html> Yazip hello.php olarak kaydedin
Değişkenler Değişkenleri adının önüne $ işareti koyarak tanımlarız: $adi; $123; Değişkenler, harf, rakam veya alt çizgi (_) ile başlayabilirler; bu karakterleri içerebilirler; ama içinde boşluk veya diğer işaretler bulunamaz PHP'de genellikle değişkenleri değerini atayarak belirleriz $adi = “Mesut"; $123 = 123; PHP'de özel bir değişkene değişken adı olarak kullanılacak değerleri de atayabiliriz: $adi = “Mesut"; $degisken = "adi"; print $$degisken; Sonuc olarak browser penceresine Mesut yazar
Bu teknik şöyle de kullanılabilir: $degisken = "adi"; $$degisken = “Nurhan"; print "$adi"; print $$degisken; print "${$degisken}"; print "${'adi'}"; Buradaki dört "print" komutu da Browser'a “Nurhan" kelimesini yazdıracaktır.
Veri Türleri PHP açısından dünyada altı tür değer vardır: Tamsayı (Integer): 5,124, 9834 gibi Çift (Double): 3,567 gibi Alfanümerik (String): “Fatma" gibi Mantıksal (Boolean): doğru (true)/yanlış (false) gibi Nesne (Object) Dizi (Array)
Fonksiyon ve gettype() Değişkenin türünü verir. $alfanumerik = “Yılmaz"; print "İkinci değişkenin adı: \$alfanumerik<br>"; print "Değeri : "; print "$alfanumerik<br>"; print("Türü : "); print gettype( $alfanumerik ) ; //string Sonuc İkinci değişkenin adı: $alfanumerik Değeri : Yılmaz Türü : string
Escape karakteri kurtarma veya ESCaping \' Tek tırnak \" Çift tırnak \\ Ters-bölü \$ Dolar işareti \n Yeni Satır (New Line) \r Satır Başı (Return) \t Sekme (Tab) karakteri
Settype Değişken türünü değiştirir. $degisken = 5.67890; print("Değişkenin değeri : "); print "$degisken<br>"; print("Türü : "); print gettype( $degisken ) ; //çift,ondalık/double print "<br>"; print "İlk değiştirme işlemi: Alfanümerik/String:<br>"; settype( $degisken, string ); //alfanümerik/string print "Değeri : "; print gettype( $degisken ) ; //alfanümerik/string Değişkenin değeri : 5.6789 Türü : double İlk değiştirme işlemi: Alfanümerik/String: Değeri : 5.6789 Türü : string
isset() Bir değişkenin içinde değer bulunup bulunmadığını sınamasını sağlar if (isset($bir_degisken)) { print( $bir_degisken ); }
Unset() varolan bir değişkeni yok eder. if (isset($numara)) { print( $numara); print( $adi); print( $soyadi); } else { unset($numara);
empty() isset() fonksiyonun tersi işleve sahiptir bir değişkene değer atanmamışsa değeri sıfır veya boş alfanümerik (null string) ise, doğru (True) değeri verir $bir_degisken = 123; echo empty($bir_degisken); $bir_degisken = ""; Bu program parçası Browser penceresine sadece empty() fonksiyonun doğru sonuç verdiği birinci echo() deyiminde 1 yazdıracaktır.
is_string(),is_integer(),is_double(), Sınadıkları değişkenin aradıkları türden değer içermesi halinde doğru ('True) sonuç verirler. $a = 6.567; if (is_double($a)) { print ("A Double'dır<br>"); }
İşlemciler (Operatörler) = Atama operatoru. $a = "ABC"; Aritmetik işlemciler: + Toplama 6+5 = 11 - Çıkartma 6-5 = 1 / Bölme 6/5 = 1.2 * Çarpma 6*5 = 30 % Kalan (Modulus) 6%5 = 1
Küçük bir ayrıntı $a = 6; $b = "22/A" print ($a + $b) PHP, tırnak kullanmasanız da bir değişkenin sayı olup olmadığını anlar PHP ayrıca rakamla başlayan alfanümerik değişkenleri sayı olarak kullanmaya kalktığınızda, bu değerin başındaki bütün rakamları sayı olarak kabul eder $a = 6; $b = "22/A" print ($a + $b) sonuç olarak 28'i verecektir; veya $b = "A/22" sonuç olarak 6 çıkacaktır
Bununla birlikte elimizde bir kişinin adı ve soyadı ayrı değişkenler halinde ise, bunları birbirine ekleyerek (concatenation) ortaya yeni bir alfanümerik değişken çıkartabiliriz: $adi = “Esra"; $soyadi = “Ceyhan"; $adi_soyadi = $adi . " " . $soyadi; İşlemci Örnek Anlamı += $a += 5 $a = $a + 5 -= $a -= 5 $a = $a - 5 /= $a /=5 $a = $a / 5 *= $a *= 5 $a = $a * 5 %= $a %= 5 $a = $a % 5 .= $a .= "metin" $a = $a" metin"
$a=6; ise İşlemci Örnek Örnek == eşitse $a == 5 Yanlış/False != eşit değilse $a != 5 Doğru/True === aynı ise $a === 5 Yanlış/False > büyükse $a > 5 Doğuru/True < küçükse $a < 5 Yanlış/False <= küçükse $a <= 5 Yanlış/False veya eşitse >= büyükse $a >= 5 Doğru/True
Birden fazla karşılaştırma örnekleri İşlemci Adı Anlamı Örnek || veya sol veya sağ doğru doğru || yanlış = doğru or veya sol veya sağ D. doğru || yanlış = doğru && ve sol ve sağ D. doğru || yanlış = yanlış and ve sol ve sağ D. doğru || yanlış = yanlış Xor Şartlı-veya Sadece sol veya sağ D. doğru || yanlış = doğru ! Değil sol veya sağ yanlış doğru || yanlış = doğru
Örnek $ortalama = ($vize + $final) / 2; print $ortalama; $vize = 45; if ($vize >= 50 && $final >= 50) { print ("Öğrenci geçti!"); } else { print ("Öğrenci kaldı!"); $ortalama = ($vize + $final) / 2; print $ortalama;
İşlem Öncelikleri ( ) parantez ++ ve -- / * % + - / * % + - < <= => > == && || = += -= /= %= .= and xor or
Sabit Değerler Bir programın bazen başından sonuna kadar değeri değişmeyen değişkenlere denir. $Dolar_miktar = 125; define ( "DOLAR_KURU", 625675); $TL_Tutar = $Dolar_miktar * DOLAR_KURU; if (defined( "DOLAR_KURU" )) { echo ("Sabit değer daha önce tanımlanmıştı.<br>");
Örnek Sabit Değerler __FILE__ : O anda çalışmakta olan PHP dosyasının adı __LINE__ : Bu ifadenin yer aldığı satırın sayısı PHP_VERSION: PHP'nin sürümü PHP_OS: PHP'nin çalıştığı işletim sistemi PHP_VERSION : PHP'nin sürümü Bunlara ek olarak, E_ERROR, E_WARNING, E_NOTICE ve E_PARSE şeklinde hata durumunda hatanın çeşitli özelliklerini bildiren sabit değerleri de kullanabiliriz. PHP hakkında çok daha geniş bilgiyi phpinfo() fonksiyonunu çağırak alabilirsiniz
Tarih ve saat Verisi PHP, o andaki zaman bilgisini, saat, dakika, saniye ve salise olarak; tarih bilgisini yıl, ay, gün (sayı veya isim olarak), programımızın herhangi bir yerinde bize bildirebilir PHP'nin zaman ve tarih belirlemekte kullanabileceğiniz başlıca fonksiyonu getdate() $saat_tarih = getdate() Bu durumda, $saat_tarih dizi değişkeninde sırasıyla şu bilgiler yer alır:
Tarih ve saat Bu durumda, $saat_tarih dizi değişkeninde sırasıyla şu bilgiler yer alır: 32 saniye 57 dakika 6 saat 30 ayın gün sayısı (1-31) 0 haftanın gün sayısı (1-7) 7 ayın sayısı (1-12) 2000 yıl 211 yılın kaçıncı günü Sunday günün adı July ayın adı
Örnek foreach ( $tarih as $key=>$val ) { $tarih = getdate(); foreach ( $tarih as $key=>$val ) { print $key.'='.$val.'<br>'; } print "Gün.:".$tarih[mday].'<br>'; print "Ay..:".$tarih[mon].'<br>'; print "Yıl.:".$tarih[year].'<br>';
Sonuç seconds=3 minutes=30 hours=15 mday=10 wday=4 mon=4 year=2003 yday=99 weekday=Thursday month=April Gün.:16 Ay..:4 Yıl.:2003
Php ‘de denetimler If ElseIf Else
Kullanımı if ( koşullar ) { koşullar doğru ise yapılacak işlere ilişkin komutlar } elseif (diğer koşullar) { diğer koşullar doğru ise yapılacak işlere ilişkin komutlar else { diğer her durumda yapılacak işlere ilişkin komutlar
Örnek if ( $sarki == "Güneş Doğacak" ) { echo ("Seçtiğiniz şarkının adı: Güneş Doğacak!"); } elseif ($sarki == "Beklerim Ben") { echo ("Seçtiğiniz şarkının adı: Beklerim Ben!"); else { echo ("Lütfen bir şarkı seçiniz!");
switch switch ( değişken ) { case KOŞUL-1 ; Koşul-1 doğru ise yapılacak işlere ilişkin komutlar break; case KOŞUL-2 ; Koşul-2 doğru ise yapılacak işlere ilişkin komutlar ...................... default: diğer her durumda yapılacak işlere ilişkin komutlar }
Örnek $sarki="Derdime Derman"; switch ( $sarki ) { case "Güneş Doğacak" ; echo ("Seçtiğiniz şarkının adı: Güneş Doğacak<br>") ; echo ("Merhaba") ; break; case "Derdime Derman" ; echo ("Seçtiğiniz şarkının adı: Derdime Derman<br>") ; echo ("Selam") ; default: echo ("Seçtiğiniz şarkının adı bilinmiyor<br>") ; } Sonuç: Seçtiğiniz şarkının adı: Derdime Derman Selam
while döngüsü while (koşul) { Koşul doğru ise yapılacak işlere ilişkin komutlar }
Örnek $sayac = 1; Selam Selam Selam Selam Selam Selam Selam while ( $sayac <= 7 ) { print ("Selam". "<br>"); $sayac ++; } Sonuç: Selam Selam Selam Selam Selam Selam Selam
do..while do { Koşul doğru ise yapılacak işlere ilişkin komutlar } while (koşul);
Örnek merhaba merhaba merhaba merhaba $sayac = 1; do { print (“merhaba". "<br>"); $sayac ++; } while ( $sayac <= 4 ) ; Sonuç merhaba merhaba merhaba merhaba
For Döngüsü for ($sayac = 4; $sayac <= 7 ; $sayac++ ) { print (“dunya donuyor"); } dunya donuyor dunya donuyor dunya donuyor dunya donuyor
Foreach foreach ($ogrenciler as $ogrenci) { foreach döngüsü, bir dizi değişkenin bütün elemanları için, arzu ettiğiniz işi yapar. döngü, ona adını verdiğiniz değişkenin içindeki bütün değerler bitinceye kadar devam edecektir. foreach ($ogrenciler as $ogrenci) { print ("$ogrenci<br>"); } foreach döngüsü, bir dizi değişkenin adını içinden değer çekilecek kaynak olarak ister; bunu "as" (olarak) kelimesi izler; sonra diziden alınacak her bir değeri geçici olarak tutacak değişkenin adı verilir.
Örnek $ogrenciler = array ("Özbay", "Muharrem", "Hasan", "Şahika"); foreach ($ogrenciler as $anahtar=>$deger) { print ("$anahtar = $deger<br>"); } Sonuç 0 = Özbay 1 = Muharrem 2 = Hasan 3 = Şahika
Örnek $ogrenciler = array ( array ( adi => "Özbay", soyadi => "Altun"), array ( adi => "Muharrem", soyadi => "Taç"), array ( adi => "Hasan", soyadi => "Civelek"), array ( adi => "Şahika", soyadi => "Ak") ); foreach ( $ogrenciler as $ogrenci ) { foreach ( $ogrenci as $anahtar => $deger ) { print ("$anahtar = $deger <br> "); } print ("<br>"); } Sonuç adi = Özbay soyadi = Altun adi = Muharrem soyadi = Taç adi = Hasan soyadi = Civelek adi = Şahika soyadi = Ak
Break Döngüyü sona erdirmek için for ($sayac = 1; $sayac <= 10 ; $sayac++ ) { if ( $tekrar = 5 ) break; $tekrar=$tekrar+1; }
Continue Döngüyü devam ettirir. $sayac = -5 ; for (; $sayac <= 7 ; $sayac++ ) { if ( $sayac <= 0 ) continue; print ("Afyon-Bolvadin<br>"); } 7 Kez Afyon-Bolvadin yazar
Fonksiyonlar function title_yaz($metin) { print ("<TITLE>$metin</TITLE>\n"); } // Başka kodlar buraya girebilir title_yaz("PHP'de Fonksiyonlar");
Örnek-2 function topla ($sayi1, $sayi2) { $sonuc = $sayi1 + $sayi2; return $sonuc; } $sayi1 = 12; $sayi2 = 5; print topla($sayi1, $sayi2);
Varsayılan değer Bu Başlık function yazdir ($metin, $boyut=3) { print ("<font size=\"$boyut\">$metin</font><br>"); } // Başka kodlar buraya girebilir yazdir("Bu Başlık", 5 ); yazdir("Bu Başlık"); Bu Başlık
Değişkenlerin kapsamı: global ve static $metin = "Başkalarına yararlı olmanın sınırı yoktur!"; function yazdir () { global $metin; print ("<h1>İşte metin: $metin </h1>"); } // Başka kodlar buraya girebilir yazdir(); Burada global $metin; satırını kullanmaz isek değişkenin değeri yazdırılamaz.
Dizi değişkenler $ogrenciler = array ( array ( adi => "Özbay", soyadi => "Altun"), array ( adi => "Muharrem", soyadi => "Taç"), array ( adi => "Hasan", soyadi => "Civelek"), array ( adi => "Şahika", soyadi => "Ak") ); // Buraya başka kodlar girecek print $ogrenciler[0][adi].' '; print $ogrenciler[2][soyadi]; // Özbay Civelek
Tek boyutlu dizi değişkenler $ogrenciler = array ("Özbay", "Muharrem", "Hasan", "Şahika"); $personel[] = "Hasan"; $personel[] = "Ahmet"; $personel[] = "Yılmaz"; $personel[] = "yaşar"; print $ogrenciler[2]; // Hasan print $personel[3]; // yaşar
Formlar foreach ($GLOBALS as $anahtar=>$deger ) { print ($anahtar . " = " . $deger . "<br>"); } HTTP_POST_VARS = Array HTTP_GET_VARS = Array HTTP_COOKIE_VARS = Array HTTP_SERVER_VARS = Array HTTP_ENV_VARS = Array HTTP_POST_FILES = Array GLOBALS = Array anahtar = GLOBALS deger = GLOBALS
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: 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ü
MySql MySql e bir baglantı oluşturma $adC=mysql_connect("localhost","root","");
MySql Bir veri tabanını seçme mysql_select_db(“amail",$adC);
MySql Tabloya baglantı $result=mysql_query("select * from ozluk_ogr where NOM='".$nom."'",$adC);
MySql Gelen kayıtları bir diziye atma $gelen = mysql_fetch_array($result);
MySql Değişkenlere ulaşma if ($soyadi<>$gelen["SOYADI"]) { }
MySql Kayıt ekleme $tmp="insert into talep_ogr (NOM, OSYMNO, ADI, SOYADI, ANAADI, FBKOD, TLF, SIFRE, RESIFRE,BASVTAR) values ('$nom','$osymno','$adi','$soyadi','$anaadi','$fbkod','$tlf','$sifre','$resifre','$tarih')"; $result= mysql_query($tmp);
MySql Kayıt silme $tmp="delete from talep_ogr where NOM='$nom‘ "; $result= mysql_query($tmp);
MySql Listeleme while ($gelen = mysql_fetch_array($result)) { echo "<tr><form action='detay.php' method='POST'>\n"; echo "<td width='70'><font size='-1'>".$gelen["NOM"]."</font></td>\n"; }
URL Kodları ç = %E7 ü = %FC Ç = %C7 Ü = %DC % = %25 ö = %F6 & = %26 [ = +%5B ] = %5D { = %7B } = %7D ? = %3F = = %3D ü = %FC Ü = %DC ö = %F6 Ö = %D6 ı = %FD İ = %DD ğ = %F0 Ğ = %D0 ş = %FE Ş = %DE
Gerçek bir örnek-1 of 2
Gerçek bir örnek -2 of 2
Kontrol.php
Kontrol.php
Faydalı Siteler http:// www.aku.edu.tr http:// www.mysql.com http:// www.php.org.tr http:// www.ulakbim.gov.tr http:// www.php.net http://www.linux-team.com/kitaplar/php/ http://www.phparsivi.net/ http://www.turk-php.com/
Afyon Kocatepe Universitesi Linux Etkinlikleri Grubu Teşekkürler yilmaz@aku.edu.tr