$_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'.
Örnekler
Örnek 1 - $_SERVER örneği
<?php
echo $_SERVER['SERVER_NAME'];
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
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.