PHP ile Sunucu (Server) Bilgileri Çekme

Sunucu bilgileri (Çevresel değişkenler) sunucu (server) üzerine kurulmuş dinamik dizi değişkenlere denir. $_SERVER ortaya çıkmış ve $HTTP_SERVER_VARS kullanımdan kaldırılmıştır. Örneğin ziyaretçinin web tarayıcısının türü, IP adresi gibi yararlı ve kullanım alanı geniş değişkenlere sahiptir. Bir web programcısı bu değişkenlerden yararlanarak istatistik tutabilir, rapor hazırlayabilir ve en önemlisi sunucuya ulaşan bütün giriş çıkışlar hakkında bilgi edinebilir.

İsimAçıklama
PHP_SELFÇalıştırılmakta olan betiğin, belge kök dizinine göreli dosya adıdır. Örneğin, http://domain.com/dnm.php/foo.bar adresindeki bir betik için $_SERVER[‘PHP_SELF’] değeri /dnm.php/foo.bar olacaktır. __FILE__ sabiti geçerli dosyanın tam yolunu ve dosya adını içerir. PHP 4.3.0 dan beri, eğer PHP komut satırı işlemcisi olarak çalışıyorsa bu değişken betik adını içerir. Önceki sürümlerde bu mevcut değildi.
argvBetiğe aktarılan değiştirge dizisidir. Betik komut satırında çalıştığında, komut satırı değiştirgelerine C gibi erişim imkanı verir. Betik GET yöntemi üzerinden çağrıldığında, bu değişken sorgu dizgesini içerir.
argcBetiğe aktarılan komut satırı değiştirgelerinin sayısını içerir (betik eğer komut satırından çalıştırılıyorsa).
GATEWAY_INTERFACESunucunun desteklediği CGI belirtiminin sürümünü içerir; ‘CGI/1.1’ gibi.
SERVER_ADDRGeçerli betiğin altında çalıştığı sunucunun IP adresidir.
SERVER_NAMEGeçerli betiğin altında çalıştığı sunucunun adıdır. Eğer betik bir sanal konak üzerinde çalışıyorsa, o sanal konağın adını içerir.
SERVER_SOFTWARESunucu kimlik dizgesi, isteklere verilen cevap başlıklarının içinde verilir.
SERVER_PROTOCOLSayfa isteğinin yapıldığı protokolün ismi ve sürümüdür; ‘HTTP/1.1’ gibi;
REQUEST_METHODSayfaya erişim için kullanılan istek yöntemi; ‘GET’, ‘HEAD’, ‘POST’, ‘PUT’ gibi.
REQUEST_TIMEİsteğin başlangıç zaman etiketidir. PHP 5.1.0’dan beri mevcuttur.
QUERY_STRINGSorgu dizgesi, sayfaya erişirken kullanılabilir.
DOCUMENT_ROOTSunucunun ayar dosyasında da tanımlandığı gibi, geçerli betiğin altında çalıştığı belge kök dizinidir.
HTTP_ACCEPTGeçerli isteğin Accept: başlığının içeriğidir.
HTTP_ACCEPT_CHARSETGeçerli isteğin Accept-Charset: başlığının içeriğidir. Örnek: ‘iso-8859-9,*,utf-8’.
HTTP_ACCEPT_ENCODINGGeçerli isteğin Accept-Encoding: başlığının içeriğidir. Örnek: ‘gzip’.
HTTP_ACCEPT_LANGUAGEGeçerli isteğin Accept-Language: başlığının içeriğidir. Örnek: ‘tr’.
HTTP_CONNECTIONGeçerli isteğin Connection: başlığının içeriğidir. Örnek: ‘Keep-Alive’.
HTTP_HOST
Geçerli isteğin Host: başlığının içeriğidir.
HTTP_REFERERKullanıcı tarayıcısını geçerli sayfaya gönderen sayfanın (varsa) adresidir. Bu kullanıcı tarayıcısı tarafından belirtilir. Her kullanıcı tarayıcısı bunu belirtmez ve bazıları HTTP_REFERER değiştirmeyi bir özellik olarak sunar. Kısaca, buna güvenilemez.
HTTP_USER_AGENTGeçerli isteğin User-Agent: başlığının içeriğidir. Bu sayfaya erişen kullanıcı tarayıcısını ifade eden bir dizgedir. Örneğin: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586) get_browser() işlevi ile elde edebileceğiniz bu değeri sayfanın çıktısını kullanıcının tarayıcısına göre şekillendirmek için kullanabilirsiniz.
HTTPSEğer betik HTTPS protokolü ile sorgulanmışsa boş olmayan bir değer atanır.
REMOTE_ADDRGeçerli sayfayı görüntüleyen kullanıcının IP adresidir.
REMOTE_HOSTGeçerli sayfayı görüntüleyen kullanıcının sunucu adıdır. Kullanıcının REMOTE_ADDR değerinden ters dns sorgusuyla elde edilir.
REMOTE_PORTKullanıcının makinesinin HTTP sunucusu ile haberleşmek için kullandığı porttur.
SCRIPT_FILENAMEGeçerli betiğin mutlak yoludur.
SERVER_ADMINHTTP sunucusu ayar dosyasındaki SERVER_ADMIN (Apache için) yönergesine verilen değerdir. Eğer betik bir sanal konak üzerinde çalışıyorsa, o sanal konak için için tanımlanmış değer olur.
SERVER_PORTHaberleşme için HTTP sunucusu tarafından kullanılan porttur. Öntanımlı kurulumlar için değeri ’80’dir; örneğin SSL kullanımında bunu güvenli HTTP portu olarak ne tanımladıysanız ona değiştirebilirsiniz.
SERVER_SIGNATUREEğer etkinse, sunucu tarafından üretilen sayfalara eklenen, sunucu sürümünü ve sanal konak adını içeren dizgidir.
PATH_TRANSLATEDSunucu gerekli sanaldan gerçeğe dönüşümleri yaptıktan sonra geçerli betiğin dosya sistemini (belge kökü değil) temel alan yoludur.
SCRIPT_NAMEGeçerli betiğin yolunu içerir. Kendi kendilerini göstermesi gereken sayfalar için kullanışlıdırlar. __FILE__ sabiti geçerli (örn. içerilen) dosyanın tam yolunu vedosya adını içerir.
REQUEST_URISayfaya erişim için belirtilen URI; örneğin, ‘/index.html’.
PHP_AUTH_DIGESTApache altında bir modül olarak Özetli HTTP kimlik doğrulaması yapılırken bu değişken istemci tarafından gönderilen ‘Authorization’ başlığında belirtilir (böylece siz de uygun geçerlilik denetimini yapmak için bunu kullanabilirsiniz).
PHP_AUTH_USERApache veya IIS (PHP 5 üzerinde ISAPI) altında modül olarak HTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından sağlanan kullanıcı adı atanır.
PHP_AUTH_PWcApache veya IIS (PHP 5 üzerinde ISAPI) altında modül olarak HTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından sağlanan parola atanır.
AUTH_TYPEApache altında modül olarak HTTP kimlik doğrulaması yapılırken bu değişkene kullanılan kimlik doğrulama türü atanır.
PATH_INFOİstemci tarafından sağlanan dosya yolunu içerir; dosya isminin ardında bir sorgu dizgesi olsa bile bu gösterilmez. Örneğin, betiğe şu URL ile erişiliyor olsun: http://www.example.com/php/path_info.php/some/stuff?foo=bar. Bu durumda $_SERVER[‘PATH_INFO’], /some/stuff değerini içerecektir.
ORIG_PATH_INFOPHP tarafından işlenmeden önceki özgün ‘PATH_INFO’.

$_SERVER ile bir server bilgisi çekme örnekleri;

<?phpecho $_SERVER[‘SERVER_NAME’]; //Localhost yazar.?>
<?phpecho $_SERVER[‘REMOTE_ADDR‘]; //127.0.0.1?>
<?phpecho $_SERVER[‘DOCUMENT_ROOT‘]; //C:/xampp/htdocs yazar.?>
<?phpecho $_SERVER[‘SCRIPT_FILENAME‘]; //c:/xampp/htdos/test.php yazar.?>
<?phpecho $_SERVER[‘REQUEST_METHOD ‘]; //GET yazar.?>
<?phpecho $_SERVER[‘REQUEST_URI ‘]; // /test.php yazar.?>
<?phpecho $_SERVER[‘SCRIPT_NAME ‘]; // /test.php yazar.?>

Reply