PHP_ders_notu_2 - KÜÇÜKÇEKMECE

Transkript

PHP_ders_notu_2 - KÜÇÜKÇEKMECE
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
İSMET AKTAR ANADOLU TEKNİK LİSESİ
BİLİŞİM TEKNOLOJİLERİ ALANI
WEB PROGRAMCILIĞI DALI
İnternet Programcılığı
PHP Ders Notları - II
2009
İnternet Programcılığı - PHP Ders Notları II
1
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
PHP ile Nesnelerin Kullanımı
PHP 5'te Nesnelere Giriş
Profesyonelce kod oluşturmak için OOP* mantığına dayanan programlar oluşturmak
için nesnelerden yararlanmamız gerekir. Bir çok web programcısı kendini profesyonel
addettiği halde HTML kodları içerisine dağınık bir şekilde kod yazmaktadır. Böyle olunca
da oluşturulan programlardan hız beklemememiz gerekir.
PHP 4'te OOP mantığı için nesneler olmakla beraber, pek gelişmiş argümanlar olduğu
söylenemezdi. PHP 5 le gelen en büyük yenilik nesnelerde görülmektedir. PHP 5'te
oluşturulacak nesneler JAVA tabanına dayandırılarak, program mantığı geliştirilmiştir.
Nesne yönelimli (Object-Oriented) programlama icat edildiğinde geleneksel programlamaya aşina olanlar önce tereddüt ettiler; sonra bunun ne harika bir teknik olduğunu
gördüler ve nesnelerden vazgeçemez oldular. Kabaca tanımlarsak nesne, kendi
değişkenleri ve icra edeceği komutlardan oluşan fonksiyonları ile bir bütündür. Nesneyi
bir kere tanımladıktan sonra istediğimiz kadar örneğini oluşturabiliriz. Bir nesnenin
yapacağı işten, o nesnenin metodu diye söz ederiz. Bu açıdan bakarsanız programlarımızda nesneler sadece metotları için işe yarar. Bir nesne, aslında bilgisayarın
hafızasında ayrılmış bir alandan başka bir şey değildir.
Nesne tabanlı yazılmış PHP kodunda süreç şu şekilde gelişir: Dosyanın okunması,
nesnelerin oluşturulması, nesnelerin çeşitli özelliklerinin değiştirilmesi, nesnenin
ekrana gönderilmesi, işlemin bitirilmesi, nesnenin yok edilmesi. Bu süreçte yer alan
nesne oluşturma ve nesnenin çeşitli özelliklerinin değiştirilmesi adımları, tamamen
bellekte gerçekleşen işlemlerdir.
Nesne yönelimli yazılımlar, ihtiyaçlarımızı karşılamak üzere birbiriyle etkileşim içinde
olan nitelikleri ve işlemleri olan bir nesneler kümesi olarak tasarlanır ve oluşturulur.
Nitelikler, nesneyle ilgili özellik veya değişkenlerdir. İşlemler ise nesnenin kendini
değiştirmek veya haricî bir etki sağlamak amacıyla gerçekleştirebileceği metot, eylem
veya fonksiyonlardır.
Nesneler, sınıflar hâlinde gruplanabilir. Sınıflar (class) tek tek birbirinden farklı olabilen,
ama bazı ortak noktaları olan bir nesneler kümesini temsil eder. Bir sınıf tümü aynı
şekilde davranan birbirinin aynı işlemlere ve aynı şeyleri temsil eden birbirinin aynı
niteliklere sahip nesneler içerir. Ancak bu niteliklerin değerleri, nesneden nesneye
değişebilir.
Bir web projesi, hyperlink (köprü) içeren sayfalardan karmaşık uygulamalara doğru
giden bir evrim izler. İletişim kutuları, pencereler veya dinamik oluşturulmuş HTML
sayfaları yoluyla temsil edilebilen karmaşık uygulamalar, geliştirme metodolojisi
üzerinde ayrıntılı bir şekilde düşünülmeyi gerektirir. Nesne yönelimli yaklaşım ise size
projelerinizdeki karmaşıklıkla başa çıkabilme, kodların yeniden kullanılabilirliğini artırma
İnternet Programcılığı - PHP Ders Notları II
2
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
ve böylece kontrol maliyetini en aza indirebilme imkânını sunar.
Nesne kullanmanın avantajı nedir? Bir proje tasarlayalım kafamızda. Bu projemizde 4
adet buton, 12 adet metin kutusu olsun. Böyle bir projeyi nesne kullanmadan
yapmamız durumunda buton oluşturmak için aynı kodları sadece birkaç değişiklik
dışında 4 kez, metin kutusu oluşturmak için ise 12 kere yazmamız gerekirdi. Bu da hem
kodu uzatır, anlaşılmasını zorlaştırır, hem de denetimi zorlaştırır. Halbuki nesne
oluştursaydık bu kodları 1 defa yazıp her yeni nesne için birkaç değişiklik yapacaktık.
Örneğin birinin rengi için nesneye ait renk değişkenine 4 (mesela kırmızı), diğerininkine
1 (mesela mavi) atamak yeterli olacaktı.
Tabi Php için düşünürsek buton ve metin kutusu zaten HTML form bileşenleri olarak
var. Ve bunlarda bir nesne. Şimdi bu nesnelerin olmadıklarını sizin her seferinde bu
nesneler için kodlar yazdığınızı düşünün. Bu iş oldukça zahmetli olurdu! Bu zaten var
olduğu için nesneyi başka amaçlar için kullanacağız. Örneğin veritabanı işlemleri için.
Örneğin bir proje içinde birbiriyle aynı özellikleri fakat farklı değerleri taşıması gereken
durumlar için. Örneğin;
Bir e-mail sayfası yaptınız. Mail nesnesi oluşturabiliriz. Bu nesne için; Maili gönderenin
adı, mail adresi, Alıcının adı, mail adresi için değişkenler, adresleri denetlemek, maili
göndermek, maili veritabanına kaydetmek ve hatta adresi adres defterine kaydetmek
için birer fonksiyon hazırlayabiliriz. Böylece her mail ile ilgili işlemler için tekrar takrar
kod yazmak yerine bu nesnemizi kullanabiliriz.
Başka bir örnek; Veritabanına bağlanmak ve üzerinde bazı işlemleri yapmak için
kullanabileceğimiz bir nesne tasarlayabiliriz. Bu nesne içinde bağlanacağımız
veritabanının adresi (localhost vb…), kullanıcı adı, şifresi, veritabanı türü (mysql,
postgreSql, MsSql, Access vb..), sql (sql kodu) değişkenleri; bağlan, bağlantıyı kapat,
sorgula, listele gibi fonksiyonlar olabilir. Böyle bir nesne ile işimiz bazı noktalarda çok
kolay olurdu.
Nesne programlama ve kullanma başta sıkıcı gelebilir. Ama bu mantığı iyi kavrayan bir
kişinin bundan vazgeçmesi artık kolay değildir.
Sınıf ve Nesne Tanımlama
Her nesne aslında bir türün örneğidir. Nesneler, türlerin özelliklerinin değiştirilmesinden
oluşur. Türler, sadece nesnelerin genel özelliklerinden bahseder. Nesneler, türden alınan
birer örnektir, genel türün özelliklerini taşımakla birlikte bazı şeylerde farklılıklar
gösterebilirler. Tablo türünden bir örnek nesne hazırlandığında zemin rengi, satır-sütun
sayıları, başlık ve açıklama bilgileri farklı olabilir.
PHP’ de en küçük sınıf tanımı, aşağıdaki gibidir:
İnternet Programcılığı - PHP Ders Notları II
3
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
class tablo1
{
-----}
Kullanışlı olabilmeleri için sınıfların niteliklere ve işlemlere ihtiyacı vardır. Var anahtar
sözcüğünü kullanarak bir sınıf tanımı içinde değişkenler tanımlanabilir. Aşağıdaki
kodlarda degisken1, degisken2 adında iki niteliği olan, tablo1 isminde bir sınıf oluşturulmaktadır.
class tablo1
{
var $degisken1;
var $degisken2;
}
Aşağıdaki yapıyı incelediğimizde; nesne içerisinde kullanacağımız değişkenler var
deyimiyle tanımlanırlar. Bu değişkenlere nesne içerisinden değer atanabilir. Aynı şekilde
program içerisinden de değer atanabilir. İşlevler function deyimi ile tanımlanırlar ve
yapmaları gereken işlemler { } arasında yazılır.
class nesneadi {
var $degisken1;
var $degisken2;
function islev1()
{
kodlar
}
function islev2($param1,$param2)
{
kodlar
}
}
Örnek)
<?php
İnternet Programcılığı - PHP Ders Notları II
4
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
İnternet Programcılığı - PHP Ders Notları II
Durhan GABRALI - 2009
5
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
?>
Çıktı:
Sayın Dursun ÇAKIR sitemize hoşgeldiniz.
Kullanıcı Adı : dursun_cakir
Giriş Zamanı : 29.03.2006 15:13
Yetki Türü : Yönetici
Program içerisinde dikkatinizi çekebilecek bir deyim var. $this deyimi içinde
bulunduğumuz nesneyi işaret eder. Bu deyimi nesne içerisinde yine aynı nesneye ait
bir özelliğe ve işleve ulaşmak (değer atamak veya değerini almak) istediğimizde
kullanırız.
Bu kodu incelediğinizde bir nesnenin nasıl oluşturulduğunu hemen hemen anlamışsı nızdır. Program kodlarını açıklayacak olursak:
class deyimiyle bir nesne yazmak istediğimizi belirtiyoruz. Bu nesnemize isim olarak
uye adını veriyoruz ve { ile nesnemizin özelliklerini (değişkenler) ve metodlarını (işlevfonksiyon) yazmaya başlıyoruz. Nesnemizin özelliklerini var deyimiyle tanımlamaya
başlıyoruz. $adi, $takmaadi, $girissaati, $giristarihi, $yetki olmak üzere beş
adet özellik ve ad($isim), takmaad($nick), giriszaman($tarih, $saat),
yetki($yetkituru), yetkiyaz() olmak üzere beş adet metod tanımladık. Metodların
fonksiyon (işlev) olduklarına değinmiştik. Buradaki yapılarına baktığımızda daha önce
anlattığımız fonksiyon konusunda gördüğümüz yapının aynı olduğunu görüyoruz.
Nesneyi } ile bitiriyoruz. Böylece nesnemiz hazırlanmış oldu. Şimdi bu nesneyi nasıl
kullanacağımızı görelim.
Bir nesneyi kullanabilmeniz için o nesneyi öncelikle oluşturmak (tabiri caizse yaratmak)
gereklidir. Yani nesneyi hafızaya almak gerekir. Bu işlemi new komutuyla yaparız.
$nesne = new nesneadi;
şeklinde yazarak $nesne değişkenini nesneadi ile belirttiğimiz nesne türünde
hafızada oluşturur. Artık biz $nesne değişkenini kullanarak nesneadi ile belirttiğimiz
nesneye ulaşabiliriz. Buradan çıkarmamız gereken sonuç; nesneler alt alanları bir
veri türüdür. Dolayısıyla bir nesneyi kullanabilmeniz için o nesnenin tipinde
olan bir değişkene atamanız gerekmektedir.
Böylece aynı nesneden farklı değişken isimlerinde birden fazla oluşturabiliriz. Zaten
İnternet Programcılığı - PHP Ders Notları II
6
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
nesnenin amaçlarından biri de budur.
Bir nesnenin özelliklerine ve işlevlerine ulaşmak için nesne değişkeninden sonra – (tire)
ve > (büyüktür) işaretleri getirilir. Daha sonra ulaşılmak istenen değişken veya işlevin
adını (başında $ olmadan) yazarız ($nesne->degisken1;).
PHP4 ile PHP5 Arasındaki Faklılıklar
PHP4 ile PHP5 arasında, nesneler konusunda bazı faklılıklar vardır. Bu faklılıkları daha
iyi kavrayabilmek için PHP5 standartlarında bir örnek verelim:
Bu örneği incelediğimizde fonksiyonların başına Public ifadesinin getirildiğini görüyoruz.
Nesne değişkeni oluştururken Var ifadesi yerine Private ifadesi kullanılmıştır.
Bunlar PHP5 'in getirdiği yeniliklerdir. Niteliklerimize vefonksiyonlarımıza private,
protected ve public şeklinde erişim sınırı koyabiliyoruz:
İnternet Programcılığı - PHP Ders Notları II
7
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Private : Nitelik yada fonksiyona(işlemlere) erişimin sadece sınıfın içinden yapılabileceği
anlamına gelir. Kalıtım vasıtasıyla dahi ulaşılamaz.
Protected : Nitelik veya fonksiyonlara(işlemlere) erişimin sadece sınıfın içerisinden
yapılabileceğini gösterir. Kalıtım yoluyla altsınıflardan ulaşılabilir.
Public : PHP4 teki var gibi düşünebilirsiniz. Belirtmediğiniz sürece varsayılan seçenek
public tir.
Peki bunlar ne işe yararlar!? nitelik ve işlemlerin dolayısıyla sınıfın güvenlik içinde
çalışmasını sağlarlar.
PHP5 ile gelmiş olan bir fonksiyon vardır. __construct()
Nedir, ne işe yarar?
__constuct bir yapılandırıcıdır. Nesne oluşturulurken çağrılır ve belirten işlemi yaparlar
(niteliklere başlangıç değeri vermek gibi) .Geriye dönük uyumluluk çerçevesinde PHP
__construct özel işlemcisini bulamazsa 'sınıfla aynı adı' taşıyan bir fonksiyon arar. Buda
PHP4 te kullanılan yapılandırıcıdır.
Private olan bir niteliğe , fonksiyona(işleme) yapacağımız bir müdahale sınıf içerisinde
__set() kullanmadığımız sürece hata mesajı ile dönecektir :
Nesnelerle Doğum Tarihi Kontrolü
yas_kontrol.php
İnternet Programcılığı - PHP Ders Notları II
8
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
yas_kontrol_index.php
Bu örnekte nesnelerin çağrılma yöntemi PHP4'teki gibidir.
$nesne->tarih($tarih);
PHP5'te nesne çağırmak için farklı bir yazım biçimi kullanılmaktadır.
$nesne::tarih($tarih);
Karar Kontrol Mekanizması
İnternet Programcılığı - PHP Ders Notları II
9
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
PHP4'te tüm olasılıklar mantıksal denetlemelerle gerçekleştirilmektedir. PHP5'te karar
kontrol mekanizmasında yeniliğe gidilmiştir. PHP geliştiricileri PHP ile Java dilini birbirine yakınlaştırmak için PHP çerisinde Java'da kullanılan karar kontrol mekanizmasına
benzeyen bir mekanizma katmışlardır.
try
{
// Karar kontrolü
}
catch (Hata olgusu)
{
// Hata olduğu taktirde yapılacak işlem
}
Örnek)
PHP'de Otomatik Çalıştırılan Fonksiyon ( __construct )
PHP5 ile gelen bir özelliktir. Bu fonksiyon bir sınıf nesnesi çalıştırıldığına otomatik olarak
çağrılır.
İnternet Programcılığı - PHP Ders Notları II
10
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Nesnelerde Kullanılan Metotlar:
PHP5 ile nesnelerde kullanılmak üzere değişik metotlar getirilmiştir. Bu metotlar
programcılara nesne tabanlı çalışmada kolaylıklar sağlamaktadır.
--------------------------------------------------------------------------------------------------------__destruct
Bu metot bir nesnede en son işlemin yapılacağı fonksiyon olarak görev yapar. Mesela
database bağlantısı yaptığınız bir nesnede , işlemlerinizi bitirdiğinizde veritabanıyla olan
tüm bağlantınızı kesecek olan komutları bu fonksiyon içerisine yerleştirebilirsiniz. Yalnız
bu fonksiyonun otomatik olarak çalışabilmesi için nesnenizi öldüren unset komutunu
kullanmanız gerekir.
Örnek)
İnternet Programcılığı - PHP Ders Notları II
11
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
--------------------------------------------------------------------------------------------------------__call
Bu metot , nesne içerisinde olmayan yanlış isimdeki bir fonksiyon çağrıldığında
otomatik olarak devreye girer. Hata kontrol mekanizması olarak kullanılabilir.
Örnek)
--------------------------------------------------------------------------------------------------------İnternet Programcılığı - PHP Ders Notları II
12
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
__get() ve __set()
Bu fonksiyonlar yardımı ile kullanılan bir nesne içerisinde tanımlı olmayan bir değişkene
“metod” değer atamada hatalar engellenebilir. Bir Class'ın içerisinde neler olduğunu
bilmeksizin yanlış bir metod çağrıldığında PHP4'te tüm kod kütüphanesi hata verir.
PHP5 ile gelen bu fonksiyonlar yardımıyla , hatalı bir metod çağrıldığında sistemde
tanımlanan fonksiyonlar devreye girerek sistem entegrasyonunda bütünlük sağlanmış
olur.
Örnek)
Yukarıdaki örnekte nesnemizi çağırıp i adında metodu çağırdığımızda __get fonksiyonu
otomatik olarak devreye girmektedir. İkinci nesne çağırmada ise fon adındaki metoda
değer gönderildiğinde bu sefer __set fonksiyonu otomatik olarak devreye girmektedir.
--------------------------------------------------------------------------------------------------------__toString()
Echo veya Print fonksiyonları ile kullanılan bir fonksiyondur. Echo veya Print ile
kullanılmadığı zaman tek başına bir anlam ifade etmez. Echo veya Print ile kullanıldığı
an _toString() metodu sınıf içinden çağırılır.
Örnek)
İnternet Programcılığı - PHP Ders Notları II
13
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Nesneyi çağırmak için parantez içerisinde isim girip direk nesneyi yüklediğimiz
değişken çağırıldığında __toString metodu devreye girip, fonksiyonda tanımlı komutlar
icra edilir.
Çıktı:
İsmet Aktar
--------------------------------------------------------------------------------------------------------__clone()
Bir nesnenin bütün özelliklerinin aynen kopyalanmasını sağlar. Ayrıca nesne içerisinde
tanımlı değişkenlerde yüklü olan değerlere dışardan veri gönderebilme olanağını bizlere
sunmaktadır.
Clone anahtar sözcüğü kullanılarak bir nesneye ait kopya yaratılabilir. Bunun için sınıf
içerisinde __clone() metodu kullanılır. __clone() metodu tek başına çağrılmaz. Sınıfın
nesnelerini Clone anahtar sözcüğünü kullanarak klonlamak istenildiğinde __clone()
metodu kendiliğinden devreye girmektedir.
Örnek1)
İnternet Programcılığı - PHP Ders Notları II
14
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Çıktı:
Bu yazı dosyanın içindedir.
Bu yazı dosyanın içindedir.
Örnek2)
İnternet Programcılığı - PHP Ders Notları II
15
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Nesneyi çağırıp nesne içerisinde yer alan verileri print_r komutu ile dizi değişkeni
olarak listelediğimizde aşağıdaki çıktı oluşacaktır:
Matematik Fonksiyonları
Sayıları yuvarlayan fonksiyonlar: floor() , ceil() , round()
echo floor(12.456)
Noktadan sonrasını dikkate almaz. Sonuç:12
echo ceil(12.456)
Bir üste yuvarlar. Sonuç:13
echo round(12.656)
Noktadan sonraki sayı 5 ve üstü ise tam sayıya çevirir,
değilse bir alt sayıya çevirir. Sonuç:13
Trigonometri fonksiyonlar: cos() , sin () , tan() , acos() , asin() , atan()
echo cos(30)
Sonuç: 0.154251449888
Dönüştürücü fonksiyonlar: bindec() , decbin() , dechex() ,hexdec()
Rastgele sayı üreten fonksiyonlar: mt_srand() , mt_rand() , srand() , rand()
mt_srand((double)microtime()*1000000);
echo mt_rand();
Sonuç: 403106591
srand((double)microtime()*1000000);
echo rand();
Sonuç: 30022
İnternet Programcılığı - PHP Ders Notları II
16
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
sqrt() : Karekök
exp() : Exporansiyel
pow() : Bir sayının üstü
log() : logaritma
abs() : Mutlak değer
log10() : 10 tabanında logaritma
pi() : Pi sayısı
min() : En küçük sayı
max() : En büyük sayı
HTTP Protokolleri ve Cookie(Çerez) 'ler
Cookie(Çerez) 'ler
Cookie'ler bir web sayfasına gelen kullanıcıyı, siteyi bir daha ziyaret etmesi halinde
tanıyabilmesi için otomatik olarak web sayfalarından ziyaretçinin bilgisayarına atılan
metin dosyalarıdır.
Bu metin dosyları Win95/98/Me sistemlerinde C:\Windows\Cokies , WinNT/2000/
XP/2003 sistemlerinde C:\Document and Settings\Kullanici\Cookies klasörlerinde tutulur.
Cookie Oluşturmak ve Okumak
Cookie oluşturmak için setcookie komutu kullanılır. Oluşturulan cookie'lere $_COOKİE
dizi değişkeni vasıtasıyla ulaşabiliriz.
setcookie(''isim'' , ''değer'' [ , zaman , ''dizin''] )
Cookie'nin ömrünü belirleyen zaman parametresi time() fonksiyonu ile saniye cinsinden
belirlenir. Time() bulunduğumuz zamanı saniye cinsine çevirir.
Ör)
Yukarıdaki komut satırı ilk olarak çalıştırıldığında ekrana herhangi bir yazı gelmez.
Sayfa güncellendiğinde karşımıza ismet aktar yazısı çıkar.
Ör)
Aşağıdaki örnekte oluşturulan Cookie'nin ömrü 10 dak. Olarak ayarlanmıştır. Bunun için
time() fonksiyonuna 600 eklenir. ( 600 sn = 10 dak. )
İnternet Programcılığı - PHP Ders Notları II
17
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Örneğin Cookie'nin ömrünü 1 yıl olarak belirlemek istiyorsak:
setcookie(''okul'' , ''ismet aktar'' , time() + 3600*24*365);
Oluşturulan Cookie'ye dördüncü parametre olarak dizin eklenebilir. Örneğin Cookie'nin
tüm web sayfasında kullanılmasını istiyorsak:
setcookie(''okul'' , ''ismet aktar'' , time() + 3600 , ''/'');
Eğer oluşturacağımız Cookie'yi farklı bir dizinde kullanmak istiyorsak:
setcookie(''okul'' , ''ismet aktar'' , time() + 3600 , ''/farklı_dizin'');
Bir Cookie'yi simek istersek ömrünü kısa tutarak silebiliriz:
setcookie(''okul'' , ''ismet aktar'' , time() + 1 );
Cookie'ler Genelde Nerelerde Kullanılır ?
Cookie'ler başta anketler olmak üzere '' ankette oy kullanana bir ziyaretcinin birden
fazla oy kullanmasını engellemek amacıyla'' , sayaçlarda , üyelik sistemlerinde , bir kez
açılmasını istediğimiz reklam ya da popup pencerelerinde kullanılır.
Ancak unutmamız gereken bir şey var, o da kullanıcı eğer isterse Cookie'leri silebilir ya
da devre dışı bırakabilir.
Önbelleği Silmek
Oluşturduğumuz web sayfasını bir kullanıcı ziyaret ettiğinde, tarayıcının özelliğinden
kaynaklanarak; web sayfaları bir daha ziyaret edildiğinde sayfanın daha hızlı
açılabilmesi için web sayfasının içeriği kullanıcının hardiskinde kaydolur. Maksimum
güvenlik gerektiren web sayfalarında ''sanal alış-veriş , bankacılık siteleri v.b'' içeriğin
kayıt edilmesinin engellenmesi gereklidir. Bu işlem PHP'nin http protokolleri ile
yapılabilir.
İnternet Programcılığı - PHP Ders Notları II
18
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Yukarıdaki komut satırlarını hafızaya alınmasını istemediğiniz dosyaların başına
yazarsanız web sayfanızın içeriği kaydolmayacaktır.
PHP'de HTTP protokolü ile yönlendirme
PHP'de header fonksiyonunu kullanarak yönlendirme işlemleri yapabiliriz. Header
fonksiyonu; en basit anlamda sunucu ( Web Server - Ör. : Apache ) ile istemci
( Browser - Ör. : Explorer ) arasındaki HTTP Protokolu üzerinde kontrolü sağlayan bir
komuttur.
Aşağıdaki verilen kod satırları , php 'nin header fonksiyonu ile kullanıcıya dosya.zip
adında bir dosya gönderme işini yapmaktadır.
Sonra header fonksiyonu içinde yer alan bilgilereden Content-type: application/zip
Browser'ınızın ekranına çıkacak bilginin tipini belirleyerek, browser'ın ona göre
davranması gerektiğini söyler.
Şimdi de kullanıcıyı başka bir sayfaya yönlendirme işlemine bakalım:
PHP web server bulunanlarda, yönlendirme kodun server tarafından derlenmesinden
sonra çalışır. Fakat burada önemli olan husus bu kodu yazarken;
<?php
tagından sonra boşluk bırakmadan yazmamız gerekecektir. Eğer bunu yapmaz da
boşluk bırakarak yazarsak netice itibariyle header hatası almamız mümkündür.
Ya da header hatası almayı engellemek için ;
Sayfamızın başına ;
ob_start();
Sonuna da ;
ob_flush();
yazmak olacaktır.
İnternet Programcılığı - PHP Ders Notları II
19
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
NOT:
HTML kodlarıyla yönlendirme (her turlu web serverda çalışır)
<meta http-equiv="Refresh" content="0;url=http://www.siteAdi.xxxx/">
ASP ile yönlendirme (IIS web server bulunanlarda, kodun server tarafından
derlenmesinden sonra çalışır)
<% Response.Redirect("http://www.siteAdi.xxxx/") %>
CGI ile yönlendirme (CGI çalıştırabilen web server bulunanlarda, kodun server
tarafından derlenmesinden sonra çalısır)
#/usr/bin/perl -w
use strict;
use CGI qw/tandard/;
print redirect('http://www.siteadresi.com/')
JavaScript kodlarıyla yönlendirme (her turlu web serverda çalışır)
<script language="Javascript" type="text/javascript">
<!-//<![CDATA[
window.location.href= "http://www.siteAdi.xxxx/"
//]]> -->
</script>
JSP ile yönlendirme (JSP web server bulunanlarda, kodun server tarafından
derlenmesinden sonra çalışır)
<%
String redirectURL = "http://www.siteAdi.xxxx/";
response.sendRedirect(redirectURL);
%>
Örnek) Bu örnek localhost üzerinde çalışmaktadır.
İnternet Programcılığı - PHP Ders Notları II
20
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
HTTP ile Login (Authenticate) İşlemi
Örnek)
Bazı önemli HTTP değişkenleri
----------------------------------------------------
İnternet Programcılığı - PHP Ders Notları II
21
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
PHP'de Oturum Yönetimi (SESSION)
session_start() : Oturumu başlatır.
session_register('değişken_ismi') : Oturum değişkeni oluşturur.
$_SESSION['değişken_ismi'] :Oturum değişkenine erişilir.
session_destroy() : Açılmış bütün oturum bilgilerini sıfırlar
unset() : Bu fonksiyon ile herhangi bir oturum geçersiz yapılır.
unset($_SESSION['count']) ;
Örnek)
İnternet Programcılığı - PHP Ders Notları II
22
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Örnek) Sayaç Uygulaması
Örnek) Session ile Giriş(Login) İşlemi
giris.php
İnternet Programcılığı - PHP Ders Notları II
23
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
İnternet Programcılığı - PHP Ders Notları II
Durhan GABRALI - 2009
24
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
index.php
İnternet Programcılığı - PHP Ders Notları II
25
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
İnternet Programcılığı - PHP Ders Notları II
Durhan GABRALI - 2009
26
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
PHP - MySql Bağlantısı ve İşlemler
Kullanılan komutlar kısaca şunlardır:
mysql_connect(): Bağlantı kurmak
mysql_select_db() : Veritabanı seçer
mysql_query ( ) : SQL sorgusu çalıştırılır
mysql_num_field(): Dönen kayıttaki alan sayısını verir
mysql_fetch_row(): Her çalıştığında sırayla bir tane kaydı(bir satır) alır.
mysql_close(); Bağlantıyı kapatır
Örnek)
Değişik Bağlantı Yöntemleri:
Ör1)
mysql_connect(“localhost” , “root” , “1234”) die (“Bağlantı Hata mesajı”);
Ör2)
İnternet Programcılığı - PHP Ders Notları II
27
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Örnek) Bir veritabanından verileri okuyup ekrana yazdırmak
magaza isimli veritabanının içinde sepet isimli bir tablo olsun
İnternet Programcılığı - PHP Ders Notları II
28
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Değişik Yöntemlerle Veri Listeleme
PHP'de bir veritabanındaki verileri listelemenin bir çok yöntemi var. Önce bu iş için kullanılan komutlara bakalım:
Komut
mysql_fetch_array
Açıklama
mysql_fetch_row
Üstteki komutla aynı görevi yapar
mysql_fetch_assoc
Tablodaki sütün adlarını index şeklinde belirterek
verileri listeler
mysql_fetch_object
Veritabanı isimlerinin veya bir veritabanındaki tablo
adlarını listeler
mysql_result
Tablodaki verileri teker teker listeler
mysql_free_result
işlevi, sorgu neticesinde gelen verilerin tutulduğu
değişken göstericisine ayrılan belleği serbest bırakır.
mysql_num_rows
Tablodaki kayıt (satır) sayısını verir
mysql_num_field
Dönen kayıttaki alan sayısını verir
mysql_field_name
Tablodaki alan isimlerini verir
İnternet Programcılığı - PHP Ders Notları II
Tablodaki sütun adlarını sıra numarasına göre okur
29
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Örnek) Bu örnekte listeleme işlemi ilk önce mysql_fetch_object ile yapılmıştır
Yukarıdaki örnekte , MySQL'e bağlandıktan sonra $sorgu değişkeninde mysql_query()
komutu ile MySQL'e bir sorgu gönderilir. Daha sonra bu sorgudan dönen verileri elde
etmek için mysql_fetch_object komutu ile veriler birer birer obje olarak okunup $oku
değişkenine dizi değişkeni olarak aktarılır.
İnternet Programcılığı - PHP Ders Notları II
30
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Aynı örnekte veriler mysql_fetch_array ile listelenecek olursa:
Aynı örnekte veriler mysql_fetch_assoc ile listelenecek olursa:
Aynı örnekte veriler mysql_num_rows ve mysql_result ile listelenecek olursa:
İnternet Programcılığı - PHP Ders Notları II
31
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Tablodaki verilerin alan isimleriyle beraber listelenmesi:
İnternet Programcılığı - PHP Ders Notları II
32
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
PHP'de Grafik Fonksiyonları
PHP'de grafik fonksiyonlarını kullanmak için php.ini dosyası içerisinde bulunan
php_gd2.dll satırının açılması gerekiyor:
; extension = php_gd2.dll
ImageCreate() Fonksiyonu:
imagecreate(int x_boyutu , int y_boyutu)
Şeklinde kullanılır. İstenilen boyutlarda bir grafik alt yapısı oluşturur.
Ayrıca imagecolorallocate() , imagegif(), imagepng(), imagejpg(), imagebmp()
fonksiyonları ile birlikte kullanılır.
Ör)
Imagecolorallocate() Fonksiyonu:
imagecolorallocate(int image, int red , int green , int blue)
Şeklinde kullanılır. Oluşturulacak resimde kullanılmak üzere RGB modunda renk
belirler.
Imagearc() Fonksiyonu:
imagearc( kaynak , x_kenar , y_kenar , x_genişlik , y_yukseklik , yay_başlangıç ,
yay_bitiş , renk )
Şeklinde kullanılır ve belirlenen açıda yay veya daire çizer
Ör)
İnternet Programcılığı - PHP Ders Notları II
33
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Imagefill() Fonksiyonu:
imagefill(int image , int x, int y, int color)
Şeklinde kullanılır. Image ile belirtilen alanı color ile belirtilen renk ile doldurmaya
yarar. Doldurulacak alanın koordinatları da belirlenir.
Ör)
Imageline() Fonksiyonu:
imageline(int image , int x1, int y1, int x2, int y2, int color)
Şeklinde kullanılır ve düz çizgi çizer.
Ör)
İnternet Programcılığı - PHP Ders Notları II
34
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Imagefilledrectangle() Fonksiyonu:
imagefilledrectanle( int image, int x1, int y1, int x2, int y2, int color)
Şeklinde kullanılır. Bu fonksiyon x1, y1 ile x2,y2 koordinatları arasında içi dolu bir
dikdörtgen çizer.
Ör)
Örnek: Siyah bir alan içerisinde çapraz çizgiler
İnternet Programcılığı - PHP Ders Notları II
35
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Örnek : Kırmızı bir alan içerisinde iç – içe geçmiş kareler
ImageString() Fonksiyonu:
imagestring(int image, int yazıtipi, int x, int y, string metin, int color)
Şeklinde kullanılır. Bu fonksiyon bir resim alanı içerisinde belirtilen metni belirtilen
koordinatlara yazar.
Ör)
İnternet Programcılığı - PHP Ders Notları II
36
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Imagegettftext() Fonksiyonu:
imagegettftext(int image, int size, int angle, int x, int y, int color, string fontfile,
string text);
Şeklinde kullanılır. Bu fonksiyonla istenilen bir font dosyası kullanılarak bu fontun
özelliklerine göre istenilen yazı Ya da yazılar hazırlanabilir.
Ör)
Örnek)
İnternet Programcılığı - PHP Ders Notları II
37
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
Örnek) Güvenlik kodu uygulaması
resim.php
İnternet Programcılığı - PHP Ders Notları II
38
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
Durhan GABRALI - 2009
form.php
İnternet Programcılığı - PHP Ders Notları II
39
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
İnternet Programcılığı - PHP Ders Notları II
Durhan GABRALI - 2009
40
Bilişim Teknolojileri Alanı – Web Programcılığı Dalı
İnternet Programcılığı - PHP Ders Notları II
Durhan GABRALI - 2009
41