include komutu

  • Konbuyu başlatan Konbuyu başlatan gazili
  • Başlangıç tarihi Başlangıç tarihi
Kodla Büyü

gazili

Seçkin Üye
Seçkin Üye
Mesajlar
683
php sayfa tasarlarken içerik bölümümüz vardır. diğer sayfaları hep buraya include ederiz. ben bunu select case kullanarak yapıyordum. ama gördüğüm kadarıyla satırlarca case kullanmak istemiyorum.
bunun daha kısa bir yolu olmalı. yani bir veya bir kaç satırda işi bitirmeliyim. o kadar sayfa için tek tek case kullanmayım.
bir değişken kullanmak gerekiyor ama çözemedim.
bana bir örnekle anlatabilir misiniz.
 
anlatığım kadarıyla yarım edeyim

http://www.siteadi.com?istek=tarihce
bu kalıpta linkler için mesala


if($_GET[istek])
{
include($_get[istek]."php");
}



ama mümkünse vertabanı kullanrak içerik lerini orda sakla ozaman tak bir sayfanın içine istenen kayıdı çekersin. Herbir sayfa için ayrı ayrı dosya oluşturmak zorunda kalmazsın

http://www.siteadi.com?icerikID=25



//ozman bunu index içine yazabilri
if($_GET[istek])
{
include("icerik.php");
}


//icerik.php içindeki satılarda ise mysql den ID si $_GET[icerikID] ye (25) eşit olan kayı çekersin
 
alpaygunes' Alıntı:
anlatığım kadarıyla yarım edeyim

http://www.siteadi.com?istek=tarihce
bu kalıpta linkler için mesala


if($_GET[istek])
{
include($_get[istek]."php");
}



ama mümkünse vertabanı kullanrak içerik lerini orda sakla ozaman tak bir sayfanın içine istenen kayıdı çekersin. Herbir sayfa için ayrı ayrı dosya oluşturmak zorunda kalmazsın

http://www.siteadi.com?icerikID=25



//ozman bunu index içine yazabilri
if($_GET[istek])
{
include("icerik.php");
}


//icerik.php içindeki satılarda ise mysql den ID si $_GET[icerikID] ye (25) eşit olan kayı çekersin


ilk dediğini anladımda ikincisini anlamadım. :D biraz daha açaarmısınız.
 
alpaygunes' Alıntı:
anlatığım kadarıyla yarım edeyim




if($_GET[istek])
{
include($_get[istek]."php");
}
allow_url_fopen ayarı "on" ise güvenlik açığı oluşturur, if kontrolu yerine switch kontrolünü kullanmak daha uygun olur
 
demek istediğim şu
<?php
$yukle=$HTTP_POST_VARS['yukle'];
switch ( $yukle) {

case "hakkimizda";
include("hakkimizda.php");break;
case "oneri";
include("oneri.php");break;
case "arsiv";
include("arsiv.php"); break;
case "iletisim";
include("iletisim.php"); break;

case "truya";
include("truya.php"); break;
case "bozlem";
include("bozlem.php"); break;
case "iyilik";
include("iyilik.php"); break;
case "elif";
include("elif.php"); break;
case "sizdenproje";
include("sizdenproje.php"); break;

default:
include("anasayfa.php"); }

?>

böyle aşağı doğru uzanan bir liste değilde
mesela bir değişken olacak
o değişkeninin değeri tıklanan sayfanın değerini alacak ve o sayfa açılacak.
bir yazının linki ?yukle=oneri şeklinde olsun.
yükle değişkenini istediğim linke atayacam ve tek bir include komutu ile sayfalar yüklenecek.
bilmem anlatabildimmi. biraz karışık oldu ama.

bu durumda linkleri ve kodları nasıl ayarlarım
php ye yeni başladığımdan karışık geldi.
 
$gidilecek_sayfa = strtolower($_GET['yukle']);
$sayfalar = array("hakkimizda", "iyilik", "bozlem", "sizdenproje");
if (in_array($gidilecek_sayfa, $sayfalar)) {
include($gidilecek_sayfa . '.php');
}else{
include("anasayfa.php");
}

Böyle bir kod yapısı ile sadece diziye yeni sayfalarınızın isimlerini yazmanız yeterli. Güvenlikle ilgili de bir probleminiz olmaz. in_array fonksiyonu ile ilgili ayrıntılı bilgiye http://php.net/manual/en/function.in-array.php adresinden ulaşabilirsiniz. in_array fonksiyonu büyük küçük harf duyarlıdır. Bu nedenle strtolower fonksiyonunu kullandık.
artık linklerinizde index.php?yukle=hakkimizda adresini kullanabilirsiniz.

Ancak şunu söylemek gerek. Bu tür bir navigasyon yöntemi küçük projeler için yeterli olabilir ancak sayfa sayınız arttıığında, iş kontrolden çıkabilir. Bu nedenle içerik yönetim sistemleri betiklerinde olduğu gibi veritabanı kullanarak sayfalarınızı veritabanından çekmeniz yerinde olacaktır. Bu tür sistemlerin yapılarıyla ilgili nette yeterince bilgi edinebilirsiniz.

Not: Verdiğiniz kodlardan, kullandığınız PHP sürümünün eski bir sürüm olduğunu gördüm. Daha doğrusu eski PHP sürümlerine göre bir kodlama kullanıyorsunuz. Bu konuda da kendinizi yenilemeniz yerinde olacaktır. Örneğin HTTP_VARS_GET php'nin 4. sürümünden itibaren kullanılmaz oldular. Bunun yerine $_GET değişkeni geldi. Bu gibi noktalardaki değişiklikleri öğrenmeniz faydanıza olacaktır.
 
hocam burda açılacak sayfanın yeri;
ana dizindeki kurumlar klasörünün altında aynı isimde bir klasörün altındaysa
örneğin;
yukleden gelen değer fatih olsun.
bu fatih.php dosyası ana dizinde kurumlar/fatih/fatih.php olarak kayıtlı ise
bu dosyayı nasıl çağırırız.

ben dosya çağırırken şöyle kullandım
siz düzeltebilirmisiniz.

<?
$kurum = strtolower($_GET['okul']);
if (!ifset($kurum)) $kurum="fatih";
else
{
$kurum=$_GET['okul'];
include('../kurumlar/$kurum/$kurum.'.php');
}
?>

burada değişken ismi okul.
kurum değişkenine aktarıyorum.
buradaki kodlara göre 7. satırda yani include komutunda hata veriyor.

nasıl düzeltebilrim acaba.
 
BBNET
Geri
Üst