$_SERVER

$HTTP_SERVER_VARS [kaldırıldı]

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

$_SERVER -- $HTTP_SERVER_VARS [kaldırıldı]Sunucu ve işletme ortamı bilgisi

Açıklama

$_SERVER başlıklar, yollar ve betiklerin yerleri gibi bilgileri içeren bir dizidir. Bu dizideki girdiler HTTP sunucusu tarafından oluşturulur. Her HTTP sunucusu bunları sunacak diye bir garanti yoktur; sunucular bazıları ile işlem yapmayabilir veya burada listelenmeyen başkalarını sağlayabilirler. Bu değişkenlerden çoğu » CGI/1.1 Belirtimi içinde ele alınırlar; yani bunlar genellikle her HTTP sunucusunda desteklenirler.

PHP 5.4.0 öncesinde, $HTTP_SERVER_VARS aynı başlangıç bilgisini içeriyordu, fakat bir süper küresel değildi ($HTTP_SERVER_VARS ve $_SERVER farklı değişkenlerdir ve PHP de bu şekilde ele alır).

İndisler

Aşağıdaki elemanlardan bazılarını $_SERVER içinde belki bulursunuz belki de bulamazsınız. PHP komut satırında çalıştırıldığında bu değişkenlerden bazılarının herhangi bir anlamı varsa komut satırında da kullanılabileceğine dikkat ediniz.

'PHP_SELF'
Çalıştırılmakta olan betiğin, belge kök dizinine göreli dosya adıdır. Örneğin, http://example.com/foo/bar.php adresindeki bir betik için $_SERVER['PHP_SELF'] değeri /foo/bar.php 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.
'argv'
Betiğ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.
'argc'
Betiğ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_INTERFACE'
Sunucunun desteklediği CGI belirtiminin sürümünü içerir; 'CGI/1.1' gibi.
'SERVER_ADDR'
Geçerli betiğin altında çalıştığı sunucunun IP adresidir.
'SERVER_NAME'
Geç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.

Bilginize: Apache 2 altında, UseCanonicalName = On ve ServerName atamalarını yapmalısınız. Aksi takdirde, bu değer istemci tarafından belirtilmiş muhtemelen sahte bir konak ismi içerebilir. Güvenliliğin önemli olduğu içeriklerde bu değere güvenmek doğru değildir.

'SERVER_SOFTWARE'
Sunucu kimlik dizgesi, isteklere verilen cevap başlıklarının içinde verilir.
'SERVER_PROTOCOL'
Sayfa isteğinin yapıldığı protokolün ismi ve sürümüdür; 'HTTP/1.1' gibi;
'REQUEST_METHOD'
Sayfaya erişim için kullanılan istek yöntemi; 'GET', 'HEAD', 'POST', 'PUT' gibi.

Bilginize:

Eğer istek yöntemi HEAD ise PHP betiği başlıklar gönderildikten sonra (çıktının çıktı tamponu olmadan üretilmesinden sonra anlamında) sonlandırılır.

'REQUEST_TIME'
İsteğin başlangıç zaman etiketidir. PHP 5.1.0'dan beri mevcuttur.
'REQUEST_TIME_FLOAT'
Mikrosaniye cinsinden isteğin başlangıç zaman damgası. PHP 5.4.0 itibariyle geçerlidir.
'QUERY_STRING'
Sorgu dizgesi, sayfaya erişirken kullanılabilir.
'DOCUMENT_ROOT'
Sunucunun ayar dosyasında da tanımlandığı gibi, geçerli betiğin altında çalıştığı belge kök dizinidir.
'HTTP_ACCEPT'
Geçerli isteğin Accept: başlığının içeriğidir.
'HTTP_ACCEPT_CHARSET'
Geçerli isteğin Accept-Charset: başlığının içeriğidir. Örnek: 'iso-8859-9,*,utf-8'.
'HTTP_ACCEPT_ENCODING'
Geçerli isteğin Accept-Encoding: başlığının içeriğidir. Örnek: 'gzip'.
'HTTP_ACCEPT_LANGUAGE'
Geçerli isteğin Accept-Language: başlığının içeriğidir. Örnek: 'tr'.
'HTTP_CONNECTION'
Geç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_REFERER'
Kullanı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_AGENT'
Geç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.
'HTTPS'
Eğer betik HTTPS protokolü ile sorgulanmışsa boş olmayan bir değer atanır.

Bilginize: IIS ile ISAPI kullanırken, eğer istek HTTPS protokolü ile yapılmamışsa, bu değerin off olacağına dikkat ediniz.

'REMOTE_ADDR'
Geçerli sayfayı görüntüleyen kullanıcının IP adresidir.
'REMOTE_HOST'
Geç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.

Bilginize: HTTP sunucunuz bu değişkeni oluşturmak için ayarlanmak zorundadır. Örneğin Apache'de httpd.conf içinde HostnameLookups On olmalıdır. Ayrıca gethostbyaddr() işlevine de bakınız.

'REMOTE_PORT'
Kullanıcının makinesinin HTTP sunucusu ile haberleşmek için kullandığı porttur.
'REMOTE_USER'
Kimliği kanıtlanmış kullanıcı.
'REDIRECT_REMOTE_USER'
İstek dahilen yönlendirilmişse kimliğİ kanıtlanmış kullanıcı.
'SCRIPT_FILENAME'

Geçerli betiğin mutlak yoludur.

Bilginize:

Eğer betik file.php veya ../file.php gibi göreli bir yolla komut satırından çalıştırılırsa, $_SERVER['SCRIPT_FILENAME'] kullanıcı tarafından belirtilen göreli yolu içerir.

'SERVER_ADMIN'
HTTP 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_PORT'
Haberleş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.

Bilginize: Apache 2 altında, fiziksel (gerçek) portu almak için UseCanonicalName = On'dan başka UseCanonicalPhysicalPort = On da tanımlamalısınız, aksi takdirde, bu değer sahte olabilir ve fiziksel port değerini döndürüp döndürmeyeceği belli olmaz. Güvenliliğin önemli olduğu içeriklerde bu değere güvenmek doğru değildir.

'SERVER_SIGNATURE'
Eğer etkinse, sunucu tarafından üretilen sayfalara eklenen, sunucu sürümünü ve sanal konak adını içeren dizgidir.
'PATH_TRANSLATED'
Sunucu 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.

Bilginize: PHP 4.3.2'den itibaren PATH_TRANSLATED değeri Apache 2'de Apache 1'in tersine SAPI altında örtük olarak belirtilmez. Apache 1'de bu değer Apache tarafından yerleştirilmediğinde bu değer SCRIPT_FILENAME sunucu değişkeni ile aynı olurdu. Bu değişiklik, PATH_TRANSLATED değişkeninin sadece PATH_INFO değişkeninin tanımlı olması durumunda var olmasını gerektiren CGI belirtimi ile uyum sağlamak için yapılmıştır. Apache 2 kullanıcıları PATH_INFO tanımlatmak için httpd.conf içinde AcceptPathInfo = On yapılandırmasını kullanabilirler.

'SCRIPT_NAME'
Geç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_URI'
Sayfaya erişim için belirtilen URI; örneğin, '/index.html'.
'PHP_AUTH_DIGEST'
Ö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_USER'
HTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından sağlanan kullanıcı adı atanır.
'PHP_AUTH_PW'
HTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından sağlanan parola atanır.
'AUTH_TYPE'
Apache 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_INFO'
PHP tarafından işlenmeden önceki özgün 'PATH_INFO'.

Sürüm Bilgisi

Sürüm: Açıklama
5.4.0 Uzun dizili kayıtlar kullanımdan kaldırıldığından dolayı $HTTP_SERVER_VARS artık kullanılmamaktadır.
5.3.0 $HTTP_SERVER_VARS kullanımını sağlayan register_long_arrays yönergesinin kullanımı önerilmemektedir.
4.1.0 $_SERVER ortaya çıkmıştır ve $HTTP_SERVER_VARS kullanımı önerilmemektedir.

Örnekler

Örnek 1 - $_SERVER örneği

<?php
echo $_SERVER['SERVER_NAME'];
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

www.example.com

Notlar

Bilginize:

Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

Ayrıca Bakınız