PHP Base Url Bulma | Muhammed Yaman

PHP Base Url Bulma | Muhammed Yaman

Bu yazıda PHP base url bulma ve base url kullanımı konularını göreceğiz. Aslında bir web sitesinin ana klasörünün sunucu üzerinde bulunduğu klasör konumunun link şeklinde biçimini bulacağız. Proje sunucuda ana dizin olan root klasöründe olabileceği gibi alt klasörlerde de bulunabilir. Bizim amacımız projemiz ister root klasöründe ister alt klasörlerden herhangi birinde olsun farketmez sabit base url değerini almaktır.

Web site projesinde ayarlar adında bir klasör olduğunu ve bu klasörde dosyası olduğunu düşünelim. PHP base url fonksiyonu bu dosya içerisinde bulunuyor. Aşağıdaki PHP base url bulma fonksiyonu ile bu web projesinin base url değerini buluyoruz. Bu fonksiyonun bulunduğu dosya hangi dosyada çağrılırsa çağrılsın, konum olarak bu dosyayı ele alır ve hep sabit değer türetir.

function findBaseUrl(){ //Bu dosyanin konumuna gore islem yapar, sabittir, cagrildigi her dosyada ayni sonucu verir
	$base_path = str_replace('','/',dirname(dirname(__FILE__))); //bu dosyanin 2 derece ust klasorunun dizin yolunu verir
	$base_url = str_replace($_SERVER['DOCUMENT_ROOT'], '', $base_path); 
	echo $base_url?$base_url:'/';
}

Aşağıdaki fonksiyon ile hangi dosyada çağrılıyorsa o dosyanın konumuna göre işlem yapar. Base url sabit olmaz.

function findBaseUrl2(){ //Cagrildigi dosyanin konumuna gore islem yapar, degiskendir, cagrildigi her dosyada farkli sonuc verir
	$base_path = dirname(dirname($_SERVER['SCRIPT_FILENAME'])); //cagrildigi dosyanın 2 derece ust klasorunun dizin yolunu verir
	$base_url = str_replace($_SERVER['DOCUMENT_ROOT'], '', $base_path); 
	echo $base_url?$base_url:'/';
}

PHP base url kullanımı ve sabit base url alma işlemi aşağıdaki fonksiyon ile de yapılabilir.

function get_base_url(){
	function url(){
		return sprintf(
			"%s://%s%s",
			isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
			$_SERVER['SERVER_NAME'],
			$_SERVER['REQUEST_URI']
		);
	}
	$parent_folder = basename(dirname(__FILE__)); 
	//bu dosyanın bulundugu klasör yolunun root dizini ile arasında kalan klasörleri yazdırır orn: /sites/mysite
	
	$dir_array = explode('/',$_SERVER['DOCUMENT_ROOT']);
	$base_server_folder = $dir_array[count($dir_array)-1]; //sunucu klasörünü verir orn:www
	
	return strstr(parse_url(url())['path'], $parent_folder, true).($parent_folder != $base_server_folder?$parent_folder:'');
}
echo get_base_url();

Burada anlatılan PHP base url alma işleminin uygulamalı halini PHPBaseUrl adlı kaynak dosyayı indirerek ulaşabilirsiniz.

Yorum Yap
0 Yorum yapan