$_SERVER
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
$_SERVER — 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.
İ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 komut satırı işlemcisi olarak çalışıyorsa
bu değişken betik adını içerir.
-
'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.
-
'REQUEST_TIME_FLOAT'
-
Mikrosaniye cinsinden isteğin başlangıç zamanı damgası.
-
'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.
-
'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:
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.