Switch deyimi ve include

Ceviz Viki, özgür ansiklopedi

Git ve: kullan, ara

SWİTCH DEYİMİ

Program denetiminde if deyiminin yanında bir de switch deyimi vardır.Bu komutla programda bir değişkene karşılık olmak üzere,değişik şekilde seçenekler sunulur.Tabi bu seçenekleri if deyimiyle yapmakta mümkün.Ancak bazı zamanlarda birden çok link sayfamızı güncellemek gerektiğinde include ile beraber switch deyimini kullanırız.switch deyimi yapılan araştırmalara göre,if deyiminden daha hızlı işlediğine kanaat getirilmiş.Komutun işlemesinde case break ve default terimlerinden yararlanılır.Aslında switch deyimi birden çok nesne için include komuduyla beraber kullanılır.Ancak dediğimiz gibi switch deyimini if deyiminle yapmakta mümkün.Ziyaretçi olarak sitelere girdiğinizde browser kısmında sitenin girilen sayfasında şöyle yazar, www.siteismi.com/index.php?isim=ali aslında bu tip sayfa isimleri genelde switch deyiminle yapılır.ve karmaşık gibi görünse de aslında,hiç de karmaşık olmayan bu tür sayfa isimlerinin nasıl yapıldığına dair isterseniz somut örneklerimiz üzerinde yaparak öğrenelim.Alttaki kodu switch.php olarak dizininize kaydedin.

<?php
 
switch ($isim) {
 
case "ali";
 
echo "isminiz <b>ali</b>";
 
break;
 
case "yasin";
 
echo "isminiz <b>yasin</b>";
 
break;
 
case "filiz";
 
echo "isminiz <b>filiz</b>";
 
break;
 
default:
 
echo "herhangi bir isim bulunamadı";
 
}
 
?>

Bu kodu şimdi browserinizdan şöyle çağırın arkadaslar localhost/switch.php?isim=ali bunu yazın ve enter tusuna basın.Bakın karşınıza ne gelicek.isminiz ali yazan bir ifadeyle karşılaşıcaksınız.O halde mantık şu arkadaşlar.İlk önce sunucu switch.php dosyasına bağlanarak isim=ali adındaki değişkeni ekrana case koşuluna bakarak sonuç nesnesini baskılayacaktır.Bazen browser satırında uzunca linkler görülür.İşte mantığı buradan gelmektedir.İnclude komutuyla örneklerimizi çoğaltarak daha iyi anlayacağınızdan eminim.

Şimdi burada dikkat edilmesi gereken hususları göz önüne almak gerekirse switch deyiminin işleyişinde kullanılan terimlerden, case koşul sunduran bir terimdir,ve her koşulun sonuç nesnesinden sonra break komutuyla koşulu sonlandırmalıyız,aksi takdirde program diğer şartlarıda sınayacağından,istediğimiz sonucu ekranda göremiyebiliriz.Dediğim gibi her case koşulu ve sonuç nesnesinden sonra break komutuyla koşulu sonlandırmalıyız,tüm koşullarımız bitince default komutu ve (kesinlikle buraya dikkat!!!! default komutundan sonra : (iki nokta) konmalı) default komutunun işleyiş tarzı else komutunla aynı görevdedir.

Sizde şimdi kendinize ait bir switch deyimiyle bir değişkene karşılık bir çok koşul sundura bilirsiniz ve browseriniza localhost/(dizininize kaydettiğiniz dosyanın ismi)?(tanımlanan değişken ismi)=(tanımlanan case koşullarından sonuç nesneleri) şeklinde yazarak switch deyiminin işleme tarzını kolaylıkla öğrene bilirsiniz.


İNCLUDE KOMUTU

Şimdi gelelim programcının işini büyük ölçüde kolaylaştıran bir komuta.include komutu harici bir dosyayı başka bir dosyaya monte eder.Aynen eksik olan parçanın tamamlanması gibi bir durum diyebiliriz.Örneğin; bir siteniz var ve anasayfanızın sağ sütununda sitenize, eklenen son 10 dosyalar diye bir bölüm açtınız.İşte buraya yeni bir dosya açmak ve güncelliğini yitiren son dosyayı silmek işkencedir.Çünkü tüm dizinlerinizi güncellemeniz gerekmektedir.Hele ki,dizin dosyanızda 3000 tane dosya olduğunu düşünün.Aman Allahım düşünmesi bile korkutucu.Bütün dosyalarınızı harici bir dosyada toplayıp,bir başka link enklediginizde bu harici dosyayı cok kolaylıkla yeni güncellenen sayfanıza monte edebilirsiniz.Bu include komutu gerçekten ileriye dönük çalışmalarımızda çok işimize yarıyacak.Örneğin; mysql veritabanına bağlanırken sürekli olarak yazmak zorunda kalacağımız @mysql_connect ("localhost","root") || die ("mysql'e bağlanamadım") @mysql_select_db ("veritabanı ismi") || die ("vt seçilemedi") bu tür komutları include ile bir harici dosyada toplayıp,sürekli olarak scriptlerimize bu harici dosyadan monte edebiliriz.Bir örnek verelim bütünüyle kafanıza yatacağından eminim:Alttaki kodu harici.inc olarak dizininize kaydedin.

<?php
 
echo "ben monte edilen bir sayfayım";
 
?>
 
Bunu kaydettikten sonra,alttaki kodu da harici.php olarak kaydedin ve bu dosyayı çalıştırın (yani harici.php dosyasını)
 
<?php
 
include ("harici.inc");
 
?>

Bu dosyayı çalıştırdığınızda sunucu harici.inc dosyasına bağlanacak ve içindeki bilgiyi harici.php dosyasında birleştirecek.ve ekrana harici.inc dosyasında ki bilgi çıkacak.Bazen dosyalarımızda sürekli olarak HTML sablonları kullanırız.Örneğin bundan önceki sayfalarımızda da sık sık gördüğünüz gibi,form sayfalarında sürekli olarak html kullandık.Yada günü gelicek PHP yi html nin içine gömücez.Soruyorum size şimdi...include yi kullanmadan sürekli olarak angarya niyetine html sablonlarını yazar mısınız? ben webmaster olduğuma göre yazmam.Ama bilmeyen insanlar yazar tabi.Ne dediğimi daha iyi anlayacaksınız.Alttaki kodu harici_01.inc olarak dizininize kaydedin

<html><head><title>deneme</title>
 
</head><body>
 
Şimdi bu harici.inc dosyası sürekli olarak işimize yarıyacak.Bu dosyanın ismini unutmayın (harici_01.inc) Şimdi alttaki kodla PHP yi html nin içine gömen bir script yapalım.alttaki kodu harici_01.php olarak dizininize kaydedin.
 
<?php
include ("harici_01.inc");
?>
<?php
echo"bu bir denemedir";
?>
<?php
echo "</body>\n</html>\n";
?>
 
Bu kodu çalıştırın bakalım karşınıza ne gelecek.bu bir denemedir yazısı yazacak.Scripti anlaya bildiniz mi arkadaşlar.bakın şimdi aşağıdaki koda;
 
<html><head><title>deneme</title>
 
</head><body>
 
<?php
 
echo "bu bir denemedir";
 
?>
 
</body>
 
</html>

Aynı bu şekilde yazdırdık aslında scripti.İsterseniz açıklayalım biz ne yaptık ilk önce ; harici_01.inc dosyasında html sablonunun <body> kısmına kadar topladık.Daha sonra <?php include ("harici_01.inc"); ?> ekrana bastırdık. daha sonra ne yaptık tekrar bir php ayracı açarak baskı komutumuzu yazdık <?php echo"bu bir denemedir"; ?> komutuyla ve daha sonra ise html sablonumuzu kapatan scriptimizi yazdık <?php echo "</body>\n</html>\n"; ?> Şimdi kafanıza şöyle bir soru gelicek.ee ama biz scripti bastırdık ekrana.Normal olarak scriptin kodları basılması gerekmiyor muydu ekranda.Hayır arkadaşlar,sunucu hiç bir şekilde scripti ekranda biz hata yapmadığımız sürece basmaz.scriptin ne demek istediğini basar.Hepsi bu.Kodu tekrar inceleyerek kafanıza iyice yerleştirin.Ben html ve php yi bir arada neden böyle yaptık diyenler için,php nin yazım kuralları konusunda bu konuyu ayrıntısıyla anlattım.oraya bakabilirsiniz.

Şimdi bir de include komutumuzla switch deyimini beraber kullanalım ve böylelikle konumuzu bitirelim.Ama tabi konu bitmez.Script yazmaya devam.Şimdi yukarıda bizim hiç bir zaman unutmayacağımız harici_01.inc dosyamız zaten kayıtlı.Şimdi alttaki tablolarda da 3 tane farklı bir inc dosyası oluşturalım.alttaki kodları sırasıyla 1.inc 2.inc ve 3.inc olarak dizininize ayrı ayrı kaydedin.

1.inc
 
<h3 align="center">sayfamızdaki birinci linkimiz</h3>
 
 
 
2.inc
 
<h3 align="center">sayfamızdaki ikinci linkimiz</h3>
 
 
 
3.inc
 
<ul>
 
<li><a href="adres.php?git=1">1.link
 
<li><a href="adres.php?git=2">2.link
 
</ul>


Şimdi aşağıdaki kodu adres.php olarak kaydedin ve çalıştırın.

<?php
 
include ("harici_01.inc");
 
switch ($git) {
 
case "1";
 
include "1.inc";
 
break;
 
case "2";
 
include "2.inc";
 
break;
 
default:
 
include "3.inc";
 
}
 
echo "<body>\n<html>\n";
 
?>

Şimdi browseriniza localhost/adres.php yazın.Bakın karşınıza 2.tane link çıkacak.linkleri tıkladığımızda ise sırasıyla 1 numaralı inc dosyası ve 2.linkimizde ise 2 numaralı inc dosyası okunacaktır.Şimdi ne yaptık isterseniz bir açıklama yapalım.1.nolu inc dosyamızda bu sayfamızdaki birinci linkimiz kelimesini yazdık.2nolu incede bu sayfamızda ki ikinci linkimiz yazdık.ve switch deyiminle 3.incimizde olan git sayfasına yönlendirilerek bir $git adında değişken oluşturduk.ve 1.koşula include komutuyla 1.inci bastırdık.daha sonra 2.kosulu ve 2.inci bastırdık.Şimdi adres satırına localhost/adres.php yazdıgımızda $git değişkenine depolanan nesne olmadığı için sunucu default komutunun include sini yani 3.inci ekrana basıcaktır ve dolayısıyla 2 tane link karsımıza cıkacaktır.ve bunlara tıklandığında ise; sırasıyla adres.php?git=1 e bağlı olarak; bu sayfamızda birinci linkimiz yazısı çıkacaktır.Zaten direk olarak switch deyimini size anlattığımda dedim ki orda adres satırına localhost/adres.php?git=1 gibi bir nesne yazarsanız.tanımlanana değerler çıkacaktır demiştim.Buradada aynısını yaptık.

Özetlemek gerekirse,dediğim gibi bu son adres.php dosyasını iyice incelediğimizde $git değişkeninde nesne olmadığı için sunucu default include sini ekrana basıcaktır.ve orada da link olduğu için ve linklere dikkat ettiğimizde ise;adres.php?git=1 var.Normalde switch deyimini anlattığımı iyice dikkat ettiyseniz.adres satırına bu tür link yazdık.Yani siz adres.php dosyasını çalıştırmayıp,browseriniza direk olarak localhost/adres.php?git=1 yazdığınızda karşınıza zaten switch deyiminin koşulları basılacaktır.Olayı iyice kavramaya çalışın.ve bol örnek çözün.ve dolayısıyla bu son örneğimizi switch deyimini tekrar okuyarak anlamaya çalışın.


Yukarıdaki kodları dediğim gibi if deyiminle yapmakta mümkün.Alttaki kodu yukarıdaki adres.php kodlarının if deyiminle yapılmış hali.Aşağıdaki kodu dizininizde ki adres.php dosyasınla değiştirin.(Farklı adla kaydedersiniz,3.inc teki linki de ona göre düzenlemeniz gerekecektir.)

<?php
 
include "harici_01.inc";
 
if ($git=="1"):
 
include "1.inc";
 
elseif ($git=="2"):
 
include "2.inc";
 
else:
 
include "3.inc";
 
endif;
 
echo "<body>\n<html>\n";
 
?>

Bu tür yazımda aynı işlevi görür,aralarında hiç bir fark yoktur.Peki burasını anladık.peki adres satırı localhost/adres.php?git=1&show=01 şeklinde olursa o zaman ne yapıcaz derseniz.Gayet basit derim.Tabi bunları sadece if deyiminle yapalım arkadaşlar.Şimdi açın 3.inc dosyasınızı ve oradaki linkleri sırasıyla adres.php?git=1&show=01 ve2.linkide adres.php?git=1&show=02 yapın.(dikkat edin git değişkeninin değerleri 2 linktede 1 olacak.aksi takdirde sayfalarınızın linki çalışmayacaktır) Şimdi bunu yaptıktan sonra,aşağıdaki kodu yine adres.php dosyanızla değiştirin.

<?php
 
include "harici_01.inc";
 
if ($git=="1" && $show=="01"):
 
include "1.inc";
 
elseif ($git=="1" && $show=="02"):
 
include "2.inc";
 
else:
 
include "3.inc";
 
endif;
 
echo "</body>\n</html>\n";
 
?>

Tekrar adres.php dosyanızı çalıştırdığınızda karşınıza yine aynı linkler gelecektir.ancak linkleri tıkladığınızda değişen sadece adres satırı olacaktır. adres satırına baktığınızda1.linkte localhost/adres.php?git=1&show=01 gibi bir link göreceksiniz.Evet arkadaşlar konuyu zannediyorum anladınız.bu tür adres satırlarının nasıl yapıldığına dair bir fikir edinmiş olduk sizlerle bu konumuzda.Sizde buna benzer bol örnek çözerek konuyu kavraya bilirsiniz.

!!! ÖNEMLİ BİR GÜVENLİK UYARISI !!!

Harici dosyalarınızı topladığınız bölümü bazen internette ziyaretçileriniz istemeyerek yada isteyerek görebilirler.Buda internet sitenizin güvenliği açısından zararlı durumlar ortaya çıkarabilir.Aşağıdaki kodu harici dosyalarınızın bulunduğu klasöre .htaccess olarak kaydederseniz,ziyaretçi harici dosyalarınızı göremez.

<Files - "\.inc$">
 
Order allow,deny
 
Deny from all
 
</Files>