PHP` ye Giriş

advertisement
PHP’ ye Giriş
Ali DELİCE
Bircan ÇİÇEKDEŞ
Mustafa İlker ALAGÖZ
• PHP ilk kez Rasmus Lerdorf tarafından 1994 güzünde
kendi özel işlerini görmek amacıyla bir dizi Perl Script
(betik) ile yazılmış bir cgi wrapper olarak yaşama
başlamıştır.
• 1995’in başlangıcında diğer insanlar’ın yoğun ilgisi
üzerine PHP özel olmaktan çıkmış ve tartışma listesi ve
sıkça sorulan sorular ile bu sefer C ile yazılmış ilk paket
(Personal Home Page Tool) çıkmıştır.
• 1995’in sonlarında birkaç özellik daha eklenerek PHP/FI
Sürüm 2 olarak devam etmiştir. Bir grup yazılımcının
dikkatini çekmiş ve bir API oluşturularak PHP3 ortaya
çıkmıştır. Daha sonraları Zend motoru PHP4’ ü yaratmış
ve PHP 4.3.4 gibi çeşitli sürümleri geliştirilmektedir.
 PHP bütün Unix-türevi sistemler (örneğin Linux) ve
Microsoft Windows sistemleri ile uyumludur. Birlikte
çalışabileceği Web sunucu programları arasında Apache,
IIS, FHTTP, Omni HTTPd, Xitami ve Windows 95/98 için
PWS (Personal Web Server) vardır.
PHP Nedir?
PHP Web sunucu tarafında işlenip HTML içine
gömülen bir betik (script) dilidir.

PHP: HTML kodu içerisine gömülebilir,
Web Sunucu tarafından yorumlanır,

JavaScript, C, Perl dillerinden ilham alınarak
yapılmıştır ve Taşınabilir.
•PHP, Web tabanlı yazılımları geliştirmek için
tasarlanmıştır.
•Çalışma mantığı diğer web tabanlı
programlama dilleri gibidir (sunucu taraflı).

<html>
<head>
<title>Example</title>
</head>
<body>
<? echo ”Merhaba ben bir PHP
betiğiyim"; ?>
</body>
</html>
Burada PHP, HTML kodu içerisinde “<?” ve “?>”
etiketleri arasına gömülmüştür. “<?” ayracı ile PHP
betiğine atlanacağı, “?>” ayracı ile de PHP betiğinin
sonlanacağı belirtilmiştir.
PHP’nin Çalışma Prensibi
PHP betiği aranıyor
mod_php
APACHE
WEB
SUNUCU
İstem
Disk
İstenilen PHP betiği yükleniyor
Yorumlanmış PHP betiği
PHP ile Neler Yapılabilir?
•
•
•
Veritabanı bağlantılı uygulamalar
Dinamik olarak oluşan grafikler, Flash animasyonları
Ziyaretçiye, tarayıcıya veya tarihe göre özel durumlar
veya içerikler
• Anketler, tartışma forumları
• Elektronik ticaret uygulamaları
• Web tabanlı e-posta uygulamaları
• XML verilerini yorumlama ve oluşturma
• İçerik yönetimi,site içi veya dışı arama motorları
Amacı Dışındaki Diğer Kullanım Alanları
• PHP-CLI arabirimi ile komut satırı işlemleri
• PHP-GTK eklentisi ile GTK (GNU'nun grafik arayuzlu
program yazma yardimcisi ) tabanlı grafik kullanıcı
arayüzleri
Neden PHP?
•
•
•
•
•
Web tabanlı programlama için tasarlanmış
Yazım kurallarının basit olması
Kaynak kodu açık ve ücretsiz
Sunucu hafızasını az kullanır
Birçok işletim sistemi üzerinde çalışabilir:
Linux
Windows
MacOS X
Solaris
BSD Unixler
Netware
Unix, Win32
QNX
• Birçok web sunucusu yazılımına entegre çalışabilir:
Apache
Microsoft IIS
Microsoft PWS Netscape
iPlanet
Xitami
• Birçok eklenti ve hazır kütüphanelerinin olması
•Yaygın veritabana desteği:
Oracle
MySQL
MS-SQL Sybase
Adabas
dBase
dbm
ODBC

PostgreSQL
Interbase
IBM DB2
Empress
Solid
Informix
filePro
Bir CGI programının veri toplama, dinamik sayfa
içerikleri yükleme, cookie alma, gönderme gibi
yapabileceği herşeyi yapar,

Network soketleri açabilir, diğer protokoller ile
etkileşimde bulunabilir.
PHP Artıları
•Ücretsiz, Kaynak kodu açık
•Birçok platform ve web sunucusu üzerinde çalışabilmesi
•Web sunucusu üzerinde az hafıza kullanması
•Yazım kuralları, öğrenimi kolay (C ve Perl dillerine benzer)
•Eklentileri ve yardımcı kütüphaneleri ücretsiz
PHP Eksileri
•Performans ve profesyonel destek için ücretlidir,
•Windows işletim sistemi üzerinde güvenlik açıkları
oluşabilmektedir.
PHP’nin Yetenekleri
• Apache Web Sunucuya özgü işlevler,
• Matematiksel işlevler,
• Tarih ve Zaman işlevleri,
• Sıkıştırmaya özgü işlevleri,
• Veri Kodlamaya özgü işlevleri,
• Kütük yapısı işlevleri,
• Grafik işlevleri,
• FTP,HTTP, URL, Mail işlevleri,
•
•
•
•
•
•
•
•
IMAP,
NIS,
LDAP,
SNMP,
Semaforlara ve ayrılmış belleğe özgü işlevler,
PDF işlevleri,
Oturum yönetimine (Session Handling) özgü işlevler,
Katar (String) işlevleri
PHP Performans Çözümleri : Zend Ürünleri
PHP betiklerinin yorumlanma hızını arttırıyor,ücretsiz
olanlar var. Veritabanı ve web sunucusu üzerindeki
yoğunluğu azaltıyor.
PHP İLE PROGRAMLAMA
HTML kodu’nun içerisinde php’ye geçiş ayraçlarından
birini kullanarak php moduna sonra da php’yi kapatma
ayraçlarından birini kullanılarak tekrar HTML koduna
dönülebilir: <HTML>

<BODY><?php echo “merhabalar”; ?>
</BODY></HTML>
php’de açıklama satırları kabuk programlamadaki ‘#’, C
dilindeki ‘//’ ya da ‘/*’ ve ‘*/’ kapatma etiketleri kullanılarak
yapılabilir:
<?php
echo “bu bir!\n”;
/* 1. echo */
echo “bu iki!\n”;
// 2. echo
echo “bu da üç!\n“ ;
#3. echo
?>
PHP Dili
• Veri Türleri
•
•
•
•
•
Tamsayı (Integer)
Alfanümerik (String)
Mantıksal (Boolean)True/False
Nesne (Object)
Dizi (Array)
Değişkenler
ve
Değişkenler değişken
isminin önüne “$” işareti
konularak tanımlanır.
$a= “isim”;
Bir değişkenin önüne
mantıksal koşulu sağlandıktan
sonra bir “$” işareti daha
konularak “değişken
değişkenler” yapılır.
$a= “isim”;
$isim = Ali;
echo $$a;
PHP Dili
Sabitler
Sabitlerin tanımı “define()”
işlevi kullanılarak yapılabilir.
<?php
define(“isim”,”Ali”);
echo isim;
?>
Operatörler (İşlemciler)
-Aritmetik Operatörler
-Atama Operatörleri
- Birleştirme Operatörleri
-Karşılaştırma Operatörleri
- Mantıksal Sınama
PHP Dili
Tarih ve Saat Verisi
PHP Dili
PHP’nin Tarih ve zaman belirlemekte faydalanabileceğimiz
başlıca fonksiyonu getdate() fonksiyonudur.
$saat_tarih = getdate()
PHP ve MySQL ilişkisi
- PHP programlarında veritabanından yararlanabilmek için
programın önce Web sunucusu aracılığıyla veritabanı dosyası ile
bağlantı kurması gerekir.
-İki program arasındaki bu ilişkiyi PHP'nin mysql_connect()
fonksiyonu yapar.
-Bu fonksiyonun alabileceği üç parametre vardır:
mysql_connect ("localhost" , "root" , "parola" );
•"localhost" yerine MySQL programının parçası olarak çalıştığı
sunucunun adı yazılır.
• "root" bu MySQL sunucusunda açılacak oturumun kimin adına
açılacağını belirter.
•"parola" kelimesinin yerine de MySQL'i kurarken belirlediğimiz
bir kullanıcı parolası varsa, onu yazarız.
PHP ve MySQL ilişkisi
•Bağlantı başarıyla kurulduktan sonra PHP programı, bu yoldan,
veritabanı sunucusuna, hangi veritabanı dosyasından yararlanmak
istediğini bildirmelidir.
•Buna veritabanı dosyası seçme işlemi denir ve mysql_select_db()
fonksiyonu ile yapılır:
mysql_select_db( "veritabanın_adı" , $veri_yolu )
PHP ve MySQL ilişkisi
<HTML>
<TITLE>PHP ile Veri Örnegi</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>
<?php
$veri_yolu = mysql_connect(“herhangi_biri", "root");
if ( ! $veri_yolu ) die ("MySQL ile veri bağlantısı kurulamıyor!");
mysql_select_db("veri" , $veri_yolu)
or die ("Veritabanına ulaşılamıyor!" . mysql_error() );
$sonuc = mysql_query("SELECT * FROM calisanlar",$veri_yolu);
printf("Adı: %s<br>\n", mysql_result($sonuc,0,"adi"));
printf("Soyadı: %s<br>\n", mysql_result($sonuc,0,"soyadi"));
printf("Adresi: %s<br>\n", mysql_result($sonuc,0,"adres"));
printf("Görevi: %s<br>\n", mysql_result($sonuc,0,"pozisyon"));
?>
</BODY>
</HTML>
PHP’de Güvenlik Açıkları
• Herhangi bir web sunucu üzerinde soket
açma, kütük açma-yazma gibi işlemler
güvenlik açıkları oluşturur.
• Php bunların hepsini yapabildiğinden dolayı
bu güvenlik açıklarını giderici bir takım
yapılandırma ayarlarının yapılması gerekir. (
PHP’de güvenlik sorunları PHP’nin Apache Web
Sunucu ile nasıl derlendiğine bağlıdır.
PHP Apache Web Sunucuya modül olarak
derlendiğinde doğrudan Apache Web Sunucunun
güvenlik sınırlamalarına bağımlıdır.
PHP Apache Web Sunucuya cgi arabirimi olarak
derlenmiş ise çeşitli güvenlik problemleri vardır.
PHP CGI Binary Güvenlik Açıkları
• PHP işletilebilir cgi olarak web sunucun cgi-bin dizininde
çalışması güvenlik açıkları oluşturur;
– “http://benim.sunucum/cgi-bin/php?/etc/passwd”
 PHP bu türlü komut satırı parametre geçirilmesine
izin vermez.
– “http://benim.sunucum/cgi-bin/php/gizli/dosya”
Bu şekilde gizli dosyalara erişimde, web sunucu giriş
hakları üzerine denetim yapamamaktadır.

PHP derleme aşamasında --enable-force-cgi-redirect
seçeneği ile bu açık ortadan kaldırılabilir. Apache Web
Sunucu yapılandırma dosyasına;
Action
php3-script /cgi-bin/php,
AddHandler
php3-script .php3 eklenmeli.
PHP betiklerinin web sunucu alt dizinlerinde kalması bir
güvenlik açığı doğurur; web sunucu yapılandırma
dosyasında;

DOC_ROOT
USER_DIR
,
ya da
PHP_DOC_ROOT
PHP yapılandırma dosyasında;
ile betikleriniz daha güvenli
dizinlere yerleştirilebilir.
PHP’nin cgi olarak en güvenli bir biçimde çalışabilmesi
için işletilebilir PHP (PHP binary) yorumlayıcısının web
sunucu alt dizininden daha farklı dizinlere yerleştirilmesi
gerekmektedir.
/usr/local/bin/php,
/usr/local/sbin/php
PHP ile,
Bir kuruş harcamadan,
sadece vakit ve biraz emek harcayarak,
tepeden tırnağa ;
kimi portallara taş çıkartan
bir site sahibi olabilirsiniz
ÖRNEK UYGULAMA
.................................
SAYI TAHMİNİ
KAYNAKÇA:
• http://www.php.net / downloads.php
• http://php.bilkent.edu.tr,
• http://apache.bilkent.edu.tr,
• http://www.apache.org,
• [email protected],
• www.linux-team.com / kitaplar/php
 www.phpfreaks.com
TEŞEKKÜRLER !
Download