PHP yazarken bunlara dikkat!

Etiketlenen : , , ,

PHP diline hakim olmaya karar verdiğimde öncelikle bu işin püf noktalarını da öğrenmem gerektiğine inanıp biraz araştırma yaptım. Aşağıda sizin de yapabileceğiniz hatalar ve doğru yöntemleri göreceksiniz.

Gelen verileri aynen kullanıyorsanız hack için davetiye gönderiyorsunuzdur.

Mesela aşağıdaki şekilde kullanım hatalıdır:

<?
echo(“<p>Arama sonuçları: ” .
$_GET['arama'] . “.</p>”);
?>

htmlspecialchars kullanmak iyidir ancak yeterli değildir:

<?
echo(“<p>Arama sonuçları: ” .
htmlspecialchars($_GET['arama']) . “.</p>”);
?>

“arama” diye bir query’nin olup olmadığına bakar, <?php ile başlar ve bağlama operatörü olarak “.” kullanmak yerine ENT_QUOTES argümanı kullanılarak aşağıdaki şekilde bir kullanım en ideal olandır :

<?php
if (isset($_GET['query']))
{
echo ‘<p>Arama sonuçları: ‘, htmlspecialchars($_GET['arama'], ENT_QUOTES), ‘.</p>’;
}
?>

Bir başka sorun ise for döngüleri içerisinde count komuturla array boyutunu almak. Her dönüşte tekrar tekrar aynı değeri aldırmak istemeyiz değil mi?

$deneme = array(“bir”,”iki”,”üç”);
for (i==0;i<count($deneme);$i++){
// …
}

Bu döngü boyunca değişmediği belli olan $deneme arrayının boyutu tekrar tekrar alınmakta. Bu nedenle önce bir değere eşitlenmesini önerilir.

$deneme = array(“bir”,”iki”,”üç”);
$max = count($deneme);
for (i==0;i<$max;$i++){
// …
}

Ayrıca tarih formatınızı bir kez tanımlayarak tek bir yerden tarih biçimlendirmesi yapabilirsiniz.

define (“TARIH_BICIMI” , “j F Y”);
şeklinde tanımlama yaparsanız kod içerisinde print(date(TARIH_BICIMI)); olarak kullanabilirsiniz.

Tarihler konusunda işinie yarayacak bir bilgi de aşağıdaki kullanım şeklidir.

<?php
$gelecekHafta = time() + (7 * 24 * 60 * 60);
// 7 gün; 24 saat; 60 dakida; 60 saniye
echo ‘Şimdi:         ‘. date(‘d-m-Y’) .”\n”;
echo ‘Gelecek Hafta: ‘. date(‘d-m-Y’, $gelecekHafta) .”\n”;
// yada strtotime() işlevi ile kullanımı
echo ‘Gelecek Hafta: ‘. date(‘d-m-Y’, strtotime(‘+1 week’)) .”\n”;
?>

Ayrıca echo kullanmak print kullanmaktan daha hızlıymış. Tıpki else if kullanmanın switch kullanmaktan hızlı olacağı gibi. Tabi else if sayısı çok fazla değilse.

Kullanılan hafıza çok değerlidir. Bu yüzden işimiz biten arrayları unset($arrayadi) ile kaldırmalı veya NULL değerine eşitlemeliyiz.

++$i her zaman $i++ dan daha hızlı çalışır. Ama ikisi farklı şeylerdir. ++$i kullanmak $i değerini kullanmadan önce artırır.

Zaman zaman bu türdeki dikkat edilmesi gerekenleri blogumda yazmaya devam edeceğim.  PHP nin çok fazla ayrıntısı olduğunu, bazı kodların 99 çeşit kullanım şekli olduğunu öğrendim. :)

PHP öğrenmek serisi : 2

Etiketlenen : , , , , , , ,

Kaldığımız yerden devam edelim;

Bir önceki yazımda değişkenleri, operatörleri, sabitleri ve syntax ile ilgili bazı bilgilere değinmiştim. Bu yazımda akış kontrol fonksiyonlarından neler öğrendiğimi yazacağım.

Öncelikle bilmeyenler için hatırlatalım akış kontrolleri değişkenlerin değerlerine göre sizi yönlendiren fonksiyonlardır. Yani bir yazılım yazıp 2 ile 5 i toplatırsınız ve 6 dan büyük olduğu için ekrana “6 dan büyük” diye yazdırabilirsiniz, ama bunu her sayı için tekrar tekrar yazarsanız ne bu işin sonu gelir ne de yazılım sağlıklı çalışır. Bu nedenle akış kontrolleri aslında yazılımın can damarıdır.

if ifadesi:

if (koşul) {
// koşul uygunsa çalışacak kısım
}

Yani eğer koşul içerisindekiler doğru (true) ise { ile } aralığındakileri çalıştırmamız gerekir. Koşulun olumsuzu için de işlem yapmamız gerekiyorsa;

if (koşul) {
// koşul uygunsa çalışacak kısım
}else{
//koşul uygun değilse çalışacak kısım
}

şeklinde yazabiliriz. Kısa bir örnek vermek gerekirse:

<?
$test = 3;
if($test<5){
echo $test.” beşten küçük”;
}else{
echo $test.” beşten küçük değil”;
}

Bir de koşulun her hali farklı olması durumunda çalışacak bir if .. else if .. fonksiyonu var. Kullanımı aşağıdaki gibidir.

if (koşul1){
// koşul1 true ise
}elseif(koşul2){
//koşul2 true ise
}elseif(koşul3){
//koşul3 true ise
}else{
// yukarıdaki koşulların hiçbirisi true değilse
}

Ancak çok sayıdaki koşul için üstteki gibi kullanım yerine aşağıdaki gibi switch fonksiyonunu kullanmayı tercih edelim.

switch (deyim) {
case sonuc1:
// deyimin sonucu sonuc1 e eşitse çalışacak kısım
break;
case sonuc2:
// deyimin sonucu sonuc1 e eşitse çalışacak kısım
break;
default:
//üstteki hiçbir sonuçtan biri değilse default olan çalışacak kısım
break;
}

Burada break (araya gir) ifadesi ile switch ifadesinin çalışması sonlandırılır.
Eğer break ifadesini eklemezseniz default değere kadar çalışmaya devam edecek, yanlış yorumlamaya sebep olacaktır.

? operatörünü kullanmak (ternary)
Kısaca bunu (deyim) ? deyim_dogru_ise : deyim_yanlis_ise ; şeklinde gösterebiliriz. Bir örnekle verirsek;

<?php
$deneme = “orta”;
$buluver = ($deneme == “iyi”) ?  “İyi durumda” : $deneme.” durumda”;
$echo $buluver;
// $buluver değeri burada orta durumda olarak dönecektir.
?>

Burada anlatılan “if” fonksiyonu öğrenmeniz gereken en önemli şeyler sıralamasında bana göre ilk 3 içerisindedir.

Bu yazıdaki ifadelerim daha çok ders verir nitelikte olsa da ben kendi anladığım ve okuyana da birşey katacak şekilde yazmak istediğimden böyle oldu. Bir sonraki konuda döngülere değineceğim. Teşekkürler.

Android Hakkında En Büyük Türkçe Kaynak bizimhost internet hizmetleri interaktif proje tek parola burçlar vijital