lostyazilim
tr.link

otomatik base href tanımlayıcı fonksiyon

10 Mesajlar 1.305 Okunma
acebozum
tr.link

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)
merhaba arkadaşlar,

diyelim ki bir projeye başlayacaksınız ama böyle stil dosyalarınızı javascript dosyalarınza adres tanımlayamadınız hata yaptınız gibi dertlerden kurtulmak istiyorsunuz tamda bu anda bu fonksiyon derdinizi çare buluyor.

örneğin ; http://localhost/yeni.proje/index.php adresinde çalışmamızı yapıyoruz. bu fonksyionu index.php dosyamızın en üstüne koyuyoruz.ve aşağıdaki denemeleri yapıyoruz.

fonksiyon;

function _setSubDirectory($file, $self) {
$rfile = str_replace('\\', '/', $file);
$rfile = str_replace($self, '', $rfile);
$self = str_replace($rfile, '', $self);
$explode = explode('/', $self);
array_pop($explode);
$explode = implode('/', $explode);
return $explode . '/';
}


daha sonra fonksiyonu koyduktan sonra birde sabit bir değişken tanımlamalıyız ki projemizde kullanabilelim.


define('BASEHREF', 'http://' . $_SERVER['HTTP_HOST'] . _setSubDirectory(__FILE__, $_SERVER['PHP_SELF']));


verdiğim kod parçacığına ekledikten sonra yemeğimiz hazır oluyor..

bir deneme yapalım..


/*
çalıştırılan url adresimiz; http://localhost/yeni.proje/index.php
*/
function _setSubDirectory($file, $self) {
$rfile = str_replace('\\', '/', $file);
$rfile = str_replace($self, '', $rfile);
$self = str_replace($rfile, '', $self);
$explode = explode('/', $self);
array_pop($explode);
$explode = implode('/', $explode);
return $explode . '/';
}

define('BASEHREF', 'http://' . $_SERVER['HTTP_HOST'] . _setSubDirectory(__FILE__, $_SERVER['PHP_SELF']));
?>


Başlıksız Doküman



css/saintx.reset.css




kodlarını kaydedip çalıştırdığımızda ekrana ;


http://localhost/yeni.proje/css/saintx.reset.css


çıktısı verecektir.

bir konumuzun daha sonuna geldik umarım anlamışsınızdır :) eğer anlamadığınız sorular varsa konunun altından yorum şeklinde belirtirseniz sevinirim.

esenlikle kalın, allah'a emanet olun. :)
LadyArch3r bcakir

kişi bu mesajı beğendi.

elektronikssl
webimgo

ismailBayram ismailBayram Hatır işi yapma! Kullanıcı
  • Üyelik 17.07.2012
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Balıkesir
  • Ad Soyad ** **
  • Mesajlar 432
  • Beğeniler 93 / 90
  • Ticaret 7, (%71)
eline sağlık :)
 

 

LadyArch3r LadyArch3r Web Developer Kullanıcı
  • Üyelik 02.04.2011
  • Yaş/Cinsiyet 34 / E
  • Meslek Web Developer
  • Konum Antalya
  • Ad Soyad B** K**
  • Mesajlar 930
  • Beğeniler 60 / 102
  • Ticaret 3, (%100)
Gerçekten güzel fonksiyon olmuş.Son zamanlarda işime yarayan en güzel fonksiyon :)

Sadece anadizini nasıl alabilirim.
 

 

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)

LadyArch3r adlı üyeden alıntı

Gerçekten güzel fonksiyon olmuş.Son zamanlarda işime yarayan en güzel fonksiyon :)

Sadece anadizini nasıl alabilirim.


http isteklerde kullanmak için mi yoksa hostta include işlemleri için mi ?

include işlemleri için ;



str_replace('\\', '/', dirname(__FILE__));

?>


şeklinde alabilirsin.
 

 

wmaraci
wmaraci

LadyArch3r LadyArch3r Web Developer Kullanıcı
  • Üyelik 02.04.2011
  • Yaş/Cinsiyet 34 / E
  • Meslek Web Developer
  • Konum Antalya
  • Ad Soyad B** K**
  • Mesajlar 930
  • Beğeniler 60 / 102
  • Ticaret 3, (%100)
Şunu yapıcam.

baglanti.php anadizinde durucak.O sitenin hangi dizinde bulunduğunu saptıcak.Örneğin http://asdasdasd.com/deneme dizininde kurulmuş.Ben bunu bir değişkene atayacağım sonra her yerde kullanıcam.
 

 

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)
baglanti phpde bir sabit tanımlamanız gerekli şöyle yapabiliriz ;


define('BASE', str_replace('\\', '/', dirname(__FILE__)));


herhangi bir dosyada include işlemi yaparken örneğin.;


include 'baglanti.php';
include BASE.'/siniflar/class.saintx.php';
$SAINTX = new SAINTX_Main($arg1, $arg2, $arg3);
?>


tipinde kullanabiliriz. umarım açıklayıcı olmuştur.
 

 

kilitbilgi kilitbilgi kilitbilgi@gmail.com Kullanıcı
  • Üyelik 13.06.2012
  • Yaş/Cinsiyet 31 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad B** Ç**
  • Mesajlar 396
  • Beğeniler 82 / 125
  • Ticaret 3, (%100)
Güzel bir çalışma , tebrikler.
 

 

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)
teşekkürler arkadaşlar bakıyorumda forumda phpye ilgi yok :)
 

 

3579 3579 WM Aracı Anonim Üyelik
  • Üyelik 30.01.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 2434
  • Beğeniler 686 / 1151
  • Ticaret 1, (%100)
Fonksiyon ile sistemi yavaşlatmaya gerek yok. "/" tek başına sitenin Ana dizinini tanımlar.

/temalar/stiller/stil.css siteadi.com/temalar/stiller/stil.css ile aynı anlama gelir. Dikkat etmeniz gereken nokta / işaretinden önce nokta koymamanız gerektiğidir. Yalnızca / işareti, siteyi anadizinden itibaren tarar. Böylelikle css, js gibi dosyalarda link tanımında hata oluşmaz. Ayrıca sistemi de kodlarla yormamış olursunuz.

Onun dışında bazı yerlerde bu fonksiyon kullanmak akıllıca olacaktır. Elinize sağlık, teşekkürler.
 

 

FXAZERT FXAZERT WM Aracı Kullanıcı
  • Üyelik 02.08.2012
  • Yaş/Cinsiyet - / E
  • Meslek Coder
  • Konum Sakarya
  • Ad Soyad ** **
  • Mesajlar 3
  • Beğeniler 0 / 1
  • Ticaret 0, (%0)
Teşekkürler
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al