PHP Eğitim Serisi: Ders #2 - Basit Bir Eğitmen

Bu bölümde PHP ile ilgili en temel bilgileri kısa ve basit olarak anlatmak istiyorum. PHP tarafından etkinleştirilen site sayfaları normal HTML sayfaları

PHP Eğitim Serisi: Ders #2 - Basit Bir Eğitmen

merhaba.php isimli bir dosya oluşturun ve HTML sunucunuzun belge kök dizinine (DOCUMENT_ROOT) aşağıdaki içerikle kaydedin:

Örnek 1 - İlk PHP betiğimiz: merhaba.php

<html>
 <head>
  <title>PHP Denemesi</title>
 </head>
 <body>
 <?php echo '<p>Merhaba Dunya</p>'; ?>
 </body>
</html> 

Tarayıcınızı kullanarak HTTP sunucunuzun adresine erişebilirsiniz, sunucunuzun alan adının sonuna /merhaba.php eklemeniz yeterli olacaktır. Yerel olarak geliştirme yaparken bu URL http://localhost/merhaba.php ya da http://127.0.0.1/merhaba.php gibi bir şey olacaktır, ancak bu HTTP sunucusunun yapılandırma ayarlarına bağlıdır. Eğer her şey düzgün yapılandırılmışsa, bu dosya PHP tarafından işlenecek ve aşağıdaki çıktı tarayıcınıza gönderilecektir:

<html>
 <head>
  <title>PHP Denemesi</title>
 </head>
 <body>
 <p>Merhaba Dunya</p>
 </body>
</html>

Bu örneği denediyseniz ve hiçbir çıktı alamadıysanız, sizden dosyayı indirmenizi istediyse ya da dosyanın tüm içeriğini metin olarak ekranda gördüyseniz, büyük ihtimalle sunucunuzun PHP desteği etkinleştirilmemiştir ya da sunucunuz doğru yapılandırılmamıştır.

Bilginize: Satırsonları hakkında

Satırsonu karakterlerinin HTML içinde bir önemi yoktur, bununla birlikte HTML kodunun göze hoş görünmesi için satırsonu karakterlerini kullanmak gerekir. ?> kapama etiketinin hemen ardından gelen satırsonu karakterini PHP silecektir. Dosyanın içine çok sayıda PHP bloğu koyarsanız veya hiçbir şey çıktılamayan betikleri dosyaya dahil etmeniz durumunda bu çok işe yarar. Ancak bu biraz kafa karıştırıcı olabilir. ?> kapama etiketinden sonra bir satırsonu karakterinin çıktılanmasını zorlamak isterseniz, ya kapama etiketinden sonra bir boşluk bırakıp onun ardına satırsonu karakterini koyun ya da PHP bloğunun son echo/print deyiminin sonuna bir satır sonu karakteri ekleyin.

Artık çalışır bir PHP betiğini başarıyla oluşturduğunza göre, PHP betiklerinin en ünlüsünü oluşturma zamanı geldi demektir

Örnek 2 - PHP ile sistem bilgisine ulaşmak

<?php phpinfo(); ?> ​​​​​​​

Şimdi daha işe yarar bir şey yapalım. Ziyaretçilerinizin hangi tarayıcıyı kullandığını tespit edelim. Bunun için, ziyaretçinizin tarayıcısı tarafından HTTP isteği ile birlikte gönderilen kullanıcı aracısı dizgesine bakacağız. Bu bilgi bir değişkende saklanır. Değişkenler PHP'de her zaman dolar işareti ile başlar. Bizim şu an için ilgilendiğimiz değişken $_SERVER['HTTP_USER_AGENT']'tir.

$_SERVER PHP kullanımına ayrılmış özel bir değişken olup HTTP sunucusunun tüm bilgilerini içerir. Bu tür değişkenlere süper küreseller denir. Bu özel değişkenler PHP » 4.1.0 sürümünden itibaren kullanılmaya başlanmıştır. Daha öncesinde, $HTTP_SERVER_VARS gibi eski $HTTP_*_VARS dizileri kullanılmaktaydı. Ömrünü doldurmuş olsa da, bu eski tarz değişkenler hala kullanılabilmektedir.

Bu değişkenin değerini görüntülemek için yapmanız gereken:

Örnek 3 - Bir değişkeni (dizi öğesini) yazdırmak

<?php echo $_SERVER['HTTP_USER_AGENT']; ?> 

Bu betiğin çıktısı şöyle bir dizge olabilirdi:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

PHP'de birçok farklı değişken türü mevcuttur. Yukardaki örnekte bir diziye ait bir öğeyi yazdırdık. Diziler çok kullanışlı olabilirler.

$_SERVER PHP tarafından kullanımınıza özdevinimli olarak sunulan bir değişkendir. Bir önceki örnekte kullandığımız phpinfo() işlevi ile üretilen çıktıya bakarak bütün listeye ulaşabilirsiniz.

PHP etiketinin içine birden çok PHP komutu koyabilir ve tek bir echo komutundan daha fazlasını yapan küçük kod blokları oluşturabilirsiniz. Örneğin, ziyaretçinizin Internet Explorer kullanıp kullanmadığını şöyle öğrenebilirsiniz:

Örnek 4 - Denetim yapılarının ve işlevlerin kullanım örneği

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
    echo 'Internet Explorer kullanmaktasınız.<br />';
}
?> 

Bu betiğin çıktısı şöyle olabilirdi:

Internet Explorer kullanmaktasınız.<br />

Burada birkaç yeni kavramı devreye soktuk. Bir if deyimimiz var. Eğer C dilinde kullanılan temel sözdizimine aşinalığınız varsa, bu kullanım size tanıdık gelecektir.

Devreye soktuğumuz ikinci kavram, strpos() işlevi ile yaptığımız çağrı oldu. strpos(), bir dizgeyi başka bir dizgenin içinde arayan yerleşik bir PHP işlevidir. Burada 'MSIE' dizgesini $_SERVER['HTTP_USER_AGENT'] içinde arıyoruz. Eğer iğne samanlıkta bulunursa işlev iğnenin konumunu samanlığın başlangıcına göreli olarak döndürür. Aksi takdirde FALSE döner. if ifadesinin sonucu TRUE olduğu takdirde FALSE dönmez ve kaşlı ayraçlar arasındaki kod çalıştırılır. Aksi takdirde kod çalıştırılmaz. If, else gibi denetim yapıları ile strtoupper() ve strlen() gibi işlevleri kullanarak siz de benzer örnekler yazabilirsiniz.

Bunu bir adım öteye taşıyabilir ve bir PHP bloğunun tam ortasındayken bile PHP kipine nasıl girip çıkabileceğimize bakabiliriz:

Örnek 5 - HTML ve PHP kiplerini karıştırmak

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() false olmayan bir değer döndürmelidir</h3>
<p>Internet Explorer kullanmaktasınız</p>
<?php
} else {
?>
<h3>strpos() false döndürmelidir</h3>
<p>Internet Explorer kullanmıyorsunuz</p>
<?php
}
?> 

Bu betikten elde edilecek sonuç:

<h3>strpos() false olmayan bir değer döndürmelidir</h3>
<p>Internet Explorer kullanmaktasınız</p>

Bir çıktı üretmek için PHP echo komutunu kullanmak yerine, PHP kipinden çıktık ve sadece düz HTML gönderdik. Burada dikkat edilmesi gereken önemli nokta, betiğin mantıksal akışının değişmiyor olmasıdır. strpos() işlevinden edinilen sonuca göre HTML bloklarından yalnızca biri görüntüleyiciye gönderilmektedir.

Başka bir deyişle, bu işleyiş MSIE değişkeninin bulunup bulunmamasına bağlıdır.

Form Kullanımı

PHP'nin en güçlü özelliklerinden biri HTML formlarına yaklaşım biçimidir. Bilinmesi gereken ilk önemli durum, form içindeki tüm elemanların PHP tarafından özdevinimli olarak kullanılabilir olacağıdır.

Örnek 6 - Örnek bir HTML formu

<form action="action.php" method="post">
 <p>İsminiz: <input type="text" name="isim" /></p>
 <p>Yaşınız: <input type="text" name="yaş" /></p>
 <p><input type="submit" /></p>
</form>

Bu formda özel hiçbir şey yoktur. Hiçbir özel etiket içermeyen düz bir HTML formudur. Kullanıcı formu doldurup gönder tuşuna bastığında, action.php sayfası çağrılır. Bu dosyaya aşağıdakileri yazabiliriz:

Örnek 7 - Formdan veri yazdırmak

Merhaba <?php echo htmlspecialchars($_POST['isim']); ?>.
Siz <?php echo (int)$_POST['yaş']; ?> yaşındasınız. 

Bu betikten elde edilecek örnek çıktı:

Merhaba Ahmet. Siz 22 yaşındasınız.

htmlspecialchars() ve (int) kısımları harcinde yapılan iş oldukça açık. htmlspecialchars() işlevi HTML'ye özel karakterlerin doğru şekilde kodlandığından emin olunmasını sağlar, dolayısıyla başkaları sayfanıza dışardan HTML etiketleri veya Javascript yerleştiremez.

Yaş alanınında ise değerin bir tamsayı olması gerektiğini bildiğimiz için değeri integer türüne dönüştürmekle özdevinimli olarak bu alana girilmesi olası başı boş karakterlerden de kurtulmuş olduk. Ayrıca, bunun PHP'de sizin yerinize özdevinimli olarak yapılmasını sağlamak için süzgeç eklentisini de kullanabilirdiniz.

$_POST['isim'] değişkeni ve $_POST['yaş'] değişkenleri sizin yerinize PHP tarafından özdevinimli olarak oluşturulur. Daha önce $_SERVER süper küresel değişkenini kullanmıştık, yukarıda ise tüm POST verisini içeren $_POST süper küresel değişkenini tanımış olduk.

Formumuz için tanımlı yöntemin POST oluşuna dikkat edin. GET yöntemini kullanmış olsaydık, form bilgilerimiz $_GET süper küresel değişkenine atanmış olacaktı. Bunların haricinde, istemciden gelen verinin hangi kaynaktan geldiği sizin için önemli değilse $_REQUEST süper küreselini de kullanabilirdiniz. Bu değişken GET, POST ve COOKIE verilerinin birleşiminden oluşur.


Etiketler: php, php eğitimleri, php dersleri