İKMAP İnternet 1 Ders Notu PHP & MySQL Mehmet Emin ÖZCAN Not: Bu sunu ‘İnternet Programcılığı 2 [E.YAŞAR, T.Ö.]’ kitabı ile birlikte kullanılacaktır. Gaziantep Meslek Yüksek Okulu Bilgisayar Programlama Bölümü 2012
İÇİNDEKİLER PHP Kurulumu, test’i ve Programlama Yapısı Değişkenler ve Sabitler, Operatörler Kontrol Yapıları ve Döngüler Kullanıcı Tanımlı ve Hazır Fonksiyonlar Diziler ve Nesneler Dosyalama İşlemleri WEB Form Uygulamaları Sayfalar Arası Veri Aktarım Yöntemleri Veritabanı İşlemleri XML ve WEB servisleri Not: Yerimi Numaraları dersin işleneceğii haftayı göstermektedir.
PHP Kurulumu ve test’i Apache sunucusu http://www.apache.org adresinden indirip kurun. (Bak. Sayfa 9) PHP yi http://www.php.net adresinden indirip kurun. (Bak. Sayfa 15) MySQL i http://www.mysql.com adresinden indirip kurun. İnternet tarayıcısının adres satırına localhost yazdığınızda sayfa geliyorsa kurulum tamamdır. Veya Xampp ı www.nat32.com adresinden indirip kurun. Xampp Control Panel de Apache yanındaki Running varsa tamamdır.
PHP Programlama YapIsI PHP: Platformdan bağımsız, dinamik web sayfaları oluşturmak için sunucu taraflı çalışan, Html ye gömülü betik dildir. (Bak. Sayfa 3) PHP; çok hızlı çalışan açık kaynak kodlu bir dildir. (Bak. Sayfa 3) Win, Linux fark etmez. Apache , IIS ,… sunucusu üzerinde çalışır. Program, veri alış-verişi, oturum, veritabanı … için kullanılır. HTML içerisine <?php ?> veya <? ?> veya <script language=php> </script> etiketlerinin arasına yazılır. (Bak. Sayfa 25) C++ gibi komutdan sonra ; kullanılır. Küçük-büyük harfe duyarlıdır. Değişken önüne $ işareti getirilir. <html><body><p><b> <?php phpinfo(); ?> </b></p></body></html> UYGULAMA-1 www.gantep.edu.tr/~ozcan/ders/internet1/int1_uy_1.html
PHP Programlama YapIsI echo ve print HTML ye bilgi yazma için kullanılır. (Sayfa 26) # // /* */ simgeleri bilgilendirme için kullanılır. . (Sayfa 26) İngilizce karakter kullanılır. Ç Ğ Ü Ö Ş İ Özel karakterler: \‘ \" \\ \$ \n \r \t (Sayfa 26) $bilgi = “Musa \“AA\” aldı.”; Metin; çift veya tek tırnak içinde kullanılır (Sayfa 27) $bilgi = “Musa ‘AA’ aldı.”; DOĞRU $bilgi = “Musa “AA” aldı.”; YANLIŞ $bilgi = ‘Musa “AA” aldı.’; DOĞRU Değişkenin, çift tırnak da değeri; tek tırnak da adı kullanılır. $x=3; echo "Musa$x"; echo ' Musa$x'; // Musa3 Musa$x UYGULAMA-2 www.gantep.edu.tr/~ozcan/ders/internet1/int1_uy_2.html
DEĞİŞKEN, SABİT ve OPERATÖRLER - Değişkenin, önceden tanımlanmasına gerek yok. Değişken tipi otomatik dir, kendiliğinden değişir. (Sayfa 27) $deger=2; $deger_2=’GMYO’; $deger2=5.55; Dizi tipindeki değişken için [ ] kullanılır. (Sayfa 30) $gunler[1]=‘pazar’; $araba[‘opel’][‘renk’]=‘kırmızı’; Sabit değer için define(,) kullanılır, global yapar. (Sayfa 31) define(x,3); $deger=6*x; // $değer 18 olur Değişken tipini gettype() verir. settype() değiştirir. (Sayfa 35) İnternetden GET ile gelen bilgi $_GET[“deger_adi”] POST ile gelen bilgi $_POST[“deger_adi”] ile alınır. Operatörler C# gibidir. == != ! <= = ++ % . += ?: && || (Sayfa 39) UYGULAMA-3,4,5 Sayfa 33 deki uygulamayı yazıp çalıştırın.
DEĞİŞKEN, SABİT ve OPERATÖRLER GLOBAL DEĞİŞKENLER PHP’de isim olarak sabit olan ve sadece belirli değişkenleri getiren değerlerdir. $_SERVER[ ] $_SESSION[ ] $_GET[ ] $_POST[ ] $_COOKIE[ ] $_SERVER['DOCUMENT_ROOT'] : Dosyanın yolu $_SERVER['HTTP_REFERER'] : Hangi sayfadan gelindiği $_SERVER['PHP_SELF'] : Dosyanın adı $_SERVER['REMOTE_ADDR'] : Kullanıcının IP no.su $_SERVER['HTTP_USER_AGENT'] : Kullanıcının browser tipi
Kontrol YapIlarI ve DöngüLer KONTROL YAPILARI Belirli bir değere göre programın izleyeceği yolu belirlemek için kullanılır. 2<3? $x=5 : $x=1; (Sayfa 47) if(2<3)$x=5; else $x=1; if(2<3)$x=5; else if(3<2) $x=1; (Sayfa 67) switch($A){case 2: $x=5 break; …} (Sayfa 72) DÖNGÜLER Belirli bir koşul sağlanıncaya kadar programa belirli bir iş yaptırmak için kullanılır. for($i=0;$i<10;$i++). . . foreach($degisken as $anahtar=> $deger) . . .; (Sayfa 75) while(2<3){ . . . } do{ . . . }while(2<3); (Sayfa 78) continue bir sonraki adım, break döngüden çık anlamındadır. (Sayfa 81) UYGULAMA 6,7,8 Sayfa 73, 83 ve 85 deki uygulamayı yazıp çalıştırın.
KULLANICI TANIMLI FONKSİYONLAR <? function carp($x, $y) { return $x*$y; } echo carp(7,6). " <br>" ; echo carp(3,4) . " <br>"; echo carp(5,2) . " <br>"; ?> Sayfanın belirli bir yerinde bir kere yazılır, sayfa içinde geri çağrılır ve birden çok kez kullanılıp programcının işini kolaylaştırır. (Sayfa 89) Fonksiyona varsayılan değer verebilir function yaz ($metin, $boyut=4) {print ("<font size=\"$boyut\">$metin</font><br>"); } yaz("Yazılar", 6 ); yaz("Bu küçük yazı", 2); yaz("Bu varsayılan yazı"); Fonksiyon dışındaki veriye global fonksiyon ile erişilir. $metin = "Hiç bilenle bilmeyen bir olurmu?"; function yaz () {global $metin; print ("<h1>İşte metin: $metin </h1>"); } yaz(); Fonksiyon sonlansa da, static değişken değeri saklı tutar. function say () { static $sayi = 0; $sayi++; echo "<br>Fonksiyonun tuttuğu sayı: $sayi "); } say(); say(); say(); say(); say(); Fonksiyon aşırı yüklemeye izin verilir. function yaz () {… } function yaz ($x) {… } yaz(); yaz(‘ali’); UYGULAMA 9: Yukarıdaki 3 adet uygulamayı yazıp çalıştırın. UYGULAMA 10: Sayfa 911, 912, 93 deki uygulamayı yazıp çalıştırın
FONKSİYONLAR Hazır fonksiyonlar date() : Tarih fonksiyonu d: date m: month Y: year H: hour i: minute s: second <? $tarih=date("d.m.Y - H:i:s"); echo $tarih; ?>
FONKSİYONLAR mail() : Mail gönderme fonksiyonu mail(“E-posta adresi", “Konu", “Mesajınız“, “Header Bilgisi”); d: date m: month Y: year H: hour i: minute s: second <? $kime = “umutluoglu@gmail.com"; $konu = "Merhaba"; $mesaj = "Merhaba Nasılsın \n Yarın görüşürüz..."; $header = "Content-type: text/html; charset=iso-8859-9\r\n"; mail($kime, $konu, $mesaj, $header); ?> DEMO
FONKSİYONLAR substr() : String değişkenin istediğimiz kısmını verir. trim() : String değişkenin başındaki ve sonundaki boşlukları siler. strlen() : String değerin kaç karakterden oluştuğunu verir. <? echo substr("UgurUmutluoglu",0,4); // Ugur echo trim(" IEEE ODTÜ "); // IEEE ODTÜ echo strlen("WEBTEAM"); // 7 ?>
FONKSİYONLAR header() : Sayfa yönlendirme fonksiyonu. Bir durumla karşılaşıldığında sayfayı farklı bir sayfaya yönlendirmek için kullanılır <? header (“Location: hata.php”); ?> EV ÖDEVİ-1 www.gantep.edu.tr/~ozcan/ders/internet1/int1_odev_1.html
VERİTABANLARI Bilgileri tablolarda saklamak, daha sonra bunları çekerek görüntülemek, üzerlerinde işlem yapmak için veritabanları kullanılır. Veritabanı tablolardan, Tablolar alanlardan, Alanlar ise giriş yaptığımız bilgilerden oluşur
OTURUM YÖNETİMİ Kullanıcı sayfaya giriş yaptıktan sonra belirli bilgileri bir değişkene atıp, sayfanın bulunduğu pencere kapatılana kadar o bilgilerin tutulması. Kullanıcı adı, şifre vb. kullanıcı bilgileri Tarayıcı bilgileri (Tarayıcının dili vb.) Sayfa sonunda bir değişken tutularak sayfa yenilendiğinde bazı bilgilerin yenilenmemesi
OTURUM YÖNETİMİ session_start() ile oturum başlatılır. Sayfanın en başında kullanılması gerekir. $_SESSION[“degisken”] ile oturumla ilgili değerler tutulur. <? session_start(); $_SESSION["user_name"]="Ugur"; echo "Merhaba ".$_SESSION['user_name']; session_destroy(); ?> DEMO
Alan (field) isimleri VERİTABANLARI deneme veritabanındaki users tablosunun içeriği: Alan (field) isimleri Girilen bilgiler Toplam 3 satır
MySQL - Açık kaynak (Open Source): Ücretsiz kullanılabilir, detaylı, kullanışlı bir veritabanı. - PHP ile birlikte en çok kullanılan veritabanı. - SQL (Structured Query Language) standart dilini kullanır.
MySQL - MySQL’de kullanılan veri tipleri INT Tamsayı (-2147483648'den 2147483647) VARCHAR Metin (Max. 255 karakter) TEXT Metin (Max. 65535 karakter) DATE Zaman bilgisi (Ör. 2005-15-04 )
PHP-MySQL - Bağlantı fonksiyonları Bağlantı için mysql_connect(“localhost”, “username”, “password”); Veritabanı seçimi mysql_select_db(“veritabani_adi”, $baglanti_stringi); <? $baglan = mysql_connect("localhost","root","sifre"); $dbSec = mysql_select_db("users",$baglan); ?>
PHP-MySQL Veritabanı üzerinde işlem yapmak için INSERT, SELECT, UPDATE, DELETE gibi SQL komutları kullanılır. INSERT: Bilgi eklemek için SELECT: Bilgi çekmek için UPDATE: Varolan bir bilgiyi güncellemek için DELETE: Bilgiyi silmek için
PHP-MySQL INSERT Komutu INSERT INTO tablo_adi (alan1, alan2, alan3) VALUES (deger1, deger2, deger3) INSERT INTO user_info ( user_name , passwd , e_mail , tel_no ) VALUES ( 'ahmet', '4321', 'a@asd.com', '555 55 55‘ )
PHP-MySQL SELECT Komutu SELECT secilecek_alanlar FROM tablo_adi SELECT secilecek_alanlar FROM tablo_adi WHERE durum SELECT * FROM user_info SELECT * FROM user_info WHERE user_name=‘ugur’ SELECT user_name, passwd FROM user_info
PHP-MySQL UPDATE Komutu UPDATE tablo_adi SET degisecek_alan=‘xxxx’ WHERE alan1=‘aaaa’ AND alan2=‘bbbb’ UPDATE user_info SET passwd = 'fdfdsfds' WHERE user_name = 'ahmet' AND passwd = '4321'
PHP-MySQL DELETE FROM user_info WHERE user_name='ahmet' DELETE Komutu DELETE FROM tablo_adi WHERE alan1=‘aaaa’ AND alan2=‘bbbb’ DELETE FROM user_info WHERE user_name='ahmet'
PHP-MySQL - SQL komutlarının PHP tarafından MySQL’e gönderilmesi Bağlantı yapılıp, veritabanı seçildikten sonra SQL komutu mysql_query() fonksiyonu ile MySQL’e gönderilir. <? $baglan = mysql_connect("localhost","root","sifre"); $dbSec = mysql_select_db("users",$baglan); $komut = "UPDATE user SET name=‘ugur’ WHERE name=‘asd'"; $sorgu = mysql_query($komut); ?>
PHP-MySQL - SELECT ile alınan bilginin görüntülenmesi Sorgusu yapılan kodlar mysql_fetch_array() fonksiyonu ile alınır ve yine bu değişken ile görüntülenir. ......... $komut = “SELECT passwd FROM user_info"; $sorgu = mysql_query($komut); $sonuc = mysql_fetch_array($sorgu); echo $sonuc; ?> ÖRNEK UYGULAMA-9