Kategoriler
PHP

PHP’de Ön Tanımlı Değişken (Super Globals)

PHP programlama dilinin geliştiriciler için önceden tanımladığı bazı ön tanımlı değişkenler mevcuttur. Bu ön tanımlı değişkenlere Super Globals denir. Dış kaynaklı değişkenlerden, yerleşik ortam değişkenlerine, son hata iletisinden elde edilen başlıklara kadar geniş bir alanda kullanımları vardır. PHP’de 8 adet ön tanımlı değişken vardır. Bunları aşağıdaki tabloda açıklamaya çalıştım.

Super GlobalAçıklama
$GLOBALSAtanacak olan değişken için kapsama/etki alanını değiştirmekte kullanılır. Bu sayede global bir değişkene localden, localdeki bir değişkene de globalde ulaşabilmeyi mümkün kılar.
$_SERVERHTTP sunucusu tarafından oluşturulan, sunucu ve işletim sistemi ortamı bilgilerine ulaşabilmeyi sağlar. Üretilen değerler HTTP sunucusu ve yapılandırmalarına göre farklılık gösterebilir.
$_GETURL üzerinden gelen verilere ulaşabilmeye olanak sunar. Genellikle URL üzerinden gelen isteklerin ve form işleme işlemlerinin yapılmasında kullanılır.
$_POSTİstek gönderim etiketleri aracılığı ile gelen verilere ulaşabilme imkanı tanır. Genellikle kapalı yöntemle gelen istekler ve form verilerinin işlenmesinde kullanılır.
$_REQUESTHem URL üzerinden hem de istek gönderim etiketleri aracılı ile gelen verilere ulaşabilme imkanı tanır. $_GET ve $_POST süper evrensellerinin yaptığı işleri $_REQUEST süper evrenseli tek başına yapar.
$_FILESHTTP sunucusuna gönderilen yükleme isteği sırasında, yüklenmek istenen dosyanın verilerine ulaşabilmeyi sağlar.
$_COOKIEHerhangi bir kullanıcının web tarayıcısına yerleşmiş olan çerez verilerine ulaşabilmeyi sağlar.
$_SESSIONHerhangi bir kullanıcı için oturum tanımlama ve tanımlanmış oturum verilerine ulaşmayı sağlar.

$GLOBALS

$GLOBALS ön tanımlı değişkeni global bir alanda oluşturulmuş bir değişkene yerel bir alandan erişmeyi sağlar. Aynı zamanda yerel bir alanda tanımlanmış bir değişkene de global alandan erişime olana tanır.

Yerel alanda tanımlanmış bir değişkene global alandan erişim sağlamak için yerel alanda $GLOBALS ön tanımlı değişkeni kullanılarak değişken tanımlanmalıdır.

function yerel_alan_fonksiyonu(){
    $GLOBALS["DegiskenAdi"] = "Değişkenin Değeri";
}
yerel_alan_fonksiyonu();

echo $DegiskenAdi;

yukarıdaki örneğin farklı bir kullanımı da aşağıdaki gibidir.

function yerel_alan_fonksiyonu(){
    $GLOBALS["DegiskenAdi"] = "Değişkenin Değeri";
}
yerel_alan_fonksiyonu();

echo $GLOBALS["DegiskenAdi"];

Bunlar yerelde alanda oluşturulmuş değişkenlerin global alanda kullanımına örnekti. Örneklerden görebildiğiniz gibi yerel alanda $GLOBALS["DegiskenAdi"] olarak tanımladıktan sonra global alanda $GLOBALS["DegiskenAdi"] ya da $DegiskenAdi olarak erişebiliyorum.

Global alandaki bir değişkene yerel alandan erişebilmek için $GLOBALS ön tanımlı değişkenli versiyonunu kullanmak zorundayım.

$adiSoyadi = "Muhammet ŞAFAK";

function yerel_alan_fonksiyonu(){
    echo $GLOBALS["adiSoyadi"];
}
yerel_alan_fonksiyonu();

$_SERVER

PHP’de ön tanımlı değişkenler arasında en geniş işleve sahip olanı $_SERVER süper evrenselidir. Sunucu hakkında bir çok bilgiye bu ön tanımlı değişken ile erişebiliriz. Hemen her projede kendine bir kullanım yeri bulur. Yine de sunucunun işletim sistemi ve yapılandırılmasına bağlı olarak her sunucu bunları sunmak zorunda değildir.

Aşağıdaki tabloda $_SERVER ön tanımlı değişkeni ile erişebileceklerinizin bir listesi bulunuyor. Bu listeyi hemen ezberlemek zorunda değilsiniz. Zamanla kullandıkça zaten farkında olmadan ezberleyeceksiniz. 🙂

INDEXAçıklama
PHP_SELFÇalıştırılan betiğin, belge kök dizinine göreli dosya adını verir. /path/self.php gibi.
GATEWAY_INTERFACESunucunun desteklediği CGI belirtiminin sürümünü içerir; ‘CGI/1.1‘ gibi.
SERVER_ADDRBetiğin çalıştığı sunucunun IP adresini döndürür.
SERVER_NAMEBetiğin çalıştığı sunucunun adını döndürür.
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ünü döndürür; HTTP/1.1 gibi
REQUEST_METHODSayfaya erişim için kullanılan istek yöntemini döndürür; GET, HEAD, POST, PUT gibi
REQUEST_TIMEİsteğin başlangıç zamanını döndürür
REQUEST_TIME_FLOATİsteğin başlangıç zamanını microtime cinsinden döndürür.
QUERY_STRINGSorgu dizgesi, sayfaya erişirken kullanılabilir.
DOCUMET_ROOTGeç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. iso-8859-9, utf-8 gibi.
HTTP_ACCEPT_ENCODINGGeçerli isteğin Accept-Encoding: başlığının içeriğidir. gzip gibi.
HTTP_ACCEPT_LANGUAGEGeçerli isteğin Accept-Language: başlığının içeriğidir. tr, en gibi
HTTP_CONNECTIONGeçerli isteğin Connection: başlığının içeriğidir. Keep-Alive gibi
HTTP_HOSTGeçerli isteğin Host: başlığının içeriğidir.
HTTP_REFERERVarsa kullanıcının tarayıcısını geçerli sayfaya gönderen sayfanın URL adresidir. Bu kullanıcı tarayıcısı tarafından belirtilir. Her tarayıcı bunu belirtmez ve bazıları HTTP_REFERER değiştirmeyi bir özellik olarak sunar. Yani bu bilgiye güvenilmez.
HTTP_USER_AGENTGeçerli isteğin User-Agent: başlığının içeriğidir. Bu sayfaya erişen tarayıcıyı ifade eden bir dizgedir. Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 gibi bir yapısı vardır.
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.
REMOTE_USERKimliği kanıtlanmış kullanıcı.
REDIRECT_REMOTE_USERİstek dahilen yönlendirilmişse kimliği kanıtlanmış kullanıcı.
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. Ön tanı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.
REQUEST_URISayfaya erişim için belirtilen URI; /index.html gibi
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_USERHTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından sağlanan kullanıcı adı atanır.
PHP_AUTH_PWHTTP 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 isiminin ardından bir sorgu dizgesi olsa bile bu gösterilmez. Örneğin betik http://lvh.me/php/info.php/some/stuff?foo=bar adresinde çalışıyorsa; /some/stuff döndürülür.
ORIG_PATH_INFOPHP tarafından işlenmeden önceki özgün PATH_INFO

Örnek kullanımı şu şekildedir;

echo $_SERVER["PATH_INFO"];

$_GET

URL üzerinden geçerli betiğe aktarılan değişkenlerden oluşan bir ilişkisel dizi. Dizinin yalnızca GET isteklerinden değil, bir sorgu dizesindeki tüm isteklerden oluşturulduğunu unutmayın.

<?php
echo "Merhaba " . $_GET['isim'] . "!";
?>

yukarıdaki gibi bir PHP dosyası oluşturup http://localhost/index.php?isim=Muhammet adresinden çağırdığımızı varsayarsak aşağıdaki çıktıyı üretecektir.

Merhaba Muhammet!

Bu işlem genellikle GET metodu ile gönderilmiş form verilerine erişim için kullanılır.


$_POST

HTTP isteklerinde Content-Type olarak multipart/form-data veya application/x-www-form-urlencoded kullandığında HTTP POST yöntemi kullanılarak geçerli betiğe aktarılan ilişkisel değişken dizisidir.

Bir örnek oluşturabilmek için aşağıdaki HTML kodları ile basit bir form oluşturalım. Ve örneğin kullanıcının adını girmesini isteyelim.

<form method="POST" action="gonder.php">
    <input type="text" name="adiniz" placeholder="Adınızı girin!" />
    <input type="submit" value="Gönder" />
</form>

şimdi gonder.php diye bir dosya oluşturup aşağıdaki kodları giriyoruz. (Dosya adı form etiketi içerisinde action tanımlanmasına gonder.php yazdığımız için bu şekilde.)

<?php
echo "Hoşgeldin, " . $_POST['adiniz'];
?>

Bu işlem genellikle POST metodu ile gönderilmiş form verilerine erişim için kullanılır.


$_REQUEST

$_REQUEST ön tanımlı değişkeni hem $_POST hem $_GET hem de $_COOKIE ön tanımlı değişkenleri gibi çalışır. Genellikle kullanılması tavsiye edilmez ancak bazı durumlarda işe yarar olabilir.

Örneğin bir arama sayfasında kullanıcıdan alacağınız veriyle arama işlemini yapacaksınız. Kullanıcı bunu Post ya da Get metodu ile gönderebilsin istiyorsunuz. İşte burada ihtiyacınız olan ön tanımlı değişken $_REQUEST oluyor.

Kullanım şekli ise $_GET ve $_POST ile birebir aynıdır.

echo $_REQUEST['anahtar_adi'];

$_FILES

En kısa tanımı ile HTTP üzerinden POST yöntemi kullanılarak geçerli betiğe yüklenmek istenen dosya ya da öğeye ait bilgilerin tutulduğu bir dizidir.

Kullanıcının sisteme resim, döküman vs gibi dosyalar yüklemesi gerektiği durumlarda kullanılır.

<form enctype="multipart/form-data" action="yukle.php" method="post">
    <input type="file" name="inputName" />
    <input type="submit" value="Yükle" />
</form>

Yukarıdaki form kullanıcının seçtiği bir dosyayı inputName adında PHP betiğimize yani sunucumuza gönderecektir.

print_r($_FILES['inputName']);

Yukarıdaki komut ile gönderilen dosyaya ait bilgileri bir dizi şekilde görebilirsiniz. Bu diziye ait INDEX’leri aşağıdaki tabloda görebilirsiniz.

INDEXAçıklamaÖrnek
nameİstemcinin makinesindeki dosyanın asıl adıdır.$_FILES['inputName']['name']
typeEğer tarayıcı bu bilgiyi sağladıysa dosyanın MIME türüdür. image/gif gibi ancak bu değer PHP tarafından kontrol edilmez. Kullanıcı farklı bir dosyayının MIME türünü farklı bir dosyaya tanımlayabilir. Yani buna güvenmemelisiniz.$_FILES['inputName']['type']
sizeYüklenen dosyanın bayt cinsinden boyutudur.$_FILES['inputName']['size']
tmp_nameYüklenen dosyanın sunucuda saklandığı sıradaki geçici dosya adıdır.$_FILES['inputName']['tmp_name']
errorDosyanın yüklenmesinde bir hata oluştuysa, hata kodunu verir.$_FILES['inputName']['error']

PHP ile dosya yükleme işlemleri daha sonra farklı bir başlık altında detaylandırabilirim.


$_COOKIE

Geçerli betiğe HTTP Çerezleri üzerinden aktarılan bütünleşik bir değişken dizisidir.

$_COOKIE['cerezAdi'];

$_SESSION

Geçerli betikte kullanılabilecek oturum değişkenlerini içeren bir ilişkisel dizidir.

$_SESSION['oturumAdi'];

PHP programlama dilinin geliştiriciler için önceden tanımladığı bazı ön tanımlı değişkenler mevcuttur. Bu ön tanımlı değişkenlere Super Globals denir. Dış kaynaklı değişkenlerden, yerleşik ortam değişkenlerine, son hata iletisinden elde edilen başlıklara kadar geniş bir alanda kullanımları vardır. PHP’de 8 adet ön tanımlı değişken vardır. Bunları aşağıdaki tabloda açıklamaya çalıştım.

Super GlobalAçıklama
$GLOBALSAtanacak olan değişken için kapsama/etki alanını değiştirmekte kullanılır. Bu sayede global bir değişkene localden, localdeki bir değişkene de globalde ulaşabilmeyi mümkün kılar.
$_SERVERHTTP sunucusu tarafından oluşturulan, sunucu ve işletim sistemi ortamı bilgilerine ulaşabilmeyi sağlar. Üretilen değerler HTTP sunucusu ve yapılandırmalarına göre farklılık gösterebilir.
$_GETURL üzerinden gelen verilere ulaşabilmeye olanak sunar. Genellikle URL üzerinden gelen isteklerin ve form işleme işlemlerinin yapılmasında kullanılır.
$_POSTİstek gönderim etiketleri aracılığı ile gelen verilere ulaşabilme imkanı tanır. Genellikle kapalı yöntemle gelen istekler ve form verilerinin işlenmesinde kullanılır.
$_REQUESTHem URL üzerinden hem de istek gönderim etiketleri aracılı ile gelen verilere ulaşabilme imkanı tanır. $_GET ve $_POST süper evrensellerinin yaptığı işleri $_REQUEST süper evrenseli tek başına yapar.
$_FILESHTTP sunucusuna gönderilen yükleme isteği sırasında, yüklenmek istenen dosyanın verilerine ulaşabilmeyi sağlar.
$_COOKIEHerhangi bir kullanıcının web tarayıcısına yerleşmiş olan çerez verilerine ulaşabilmeyi sağlar.
$_SESSIONHerhangi bir kullanıcı için oturum tanımlama ve tanımlanmış oturum verilerine ulaşmayı sağlar.

$GLOBALS

$GLOBALS ön tanımlı değişkeni global bir alanda oluşturulmuş bir değişkene yerel bir alandan erişmeyi sağlar. Aynı zamanda yerel bir alanda tanımlanmış bir değişkene de global alandan erişime olana tanır.

Yerel alanda tanımlanmış bir değişkene global alandan erişim sağlamak için yerel alanda $GLOBALS ön tanımlı değişkeni kullanılarak değişken tanımlanmalıdır.

function yerel_alan_fonksiyonu(){
    $GLOBALS["DegiskenAdi"] = "Değişkenin Değeri";
}
yerel_alan_fonksiyonu();

echo $DegiskenAdi;

yukarıdaki örneğin farklı bir kullanımı da aşağıdaki gibidir.

function yerel_alan_fonksiyonu(){
    $GLOBALS["DegiskenAdi"] = "Değişkenin Değeri";
}
yerel_alan_fonksiyonu();

echo $GLOBALS["DegiskenAdi"];

Bunlar yerelde alanda oluşturulmuş değişkenlerin global alanda kullanımına örnekti. Örneklerden görebildiğiniz gibi yerel alanda $GLOBALS["DegiskenAdi"] olarak tanımladıktan sonra global alanda $GLOBALS["DegiskenAdi"] ya da $DegiskenAdi olarak erişebiliyorum.

Global alandaki bir değişkene yerel alandan erişebilmek için $GLOBALS ön tanımlı değişkenli versiyonunu kullanmak zorundayım.

$adiSoyadi = "Muhammet ŞAFAK";

function yerel_alan_fonksiyonu(){
    echo $GLOBALS["adiSoyadi"];
}
yerel_alan_fonksiyonu();

$_SERVER

PHP’de ön tanımlı değişkenler arasında en geniş işleve sahip olanı $_SERVER süper evrenselidir. Sunucu hakkında bir çok bilgiye bu ön tanımlı değişken ile erişebiliriz. Hemen her projede kendine bir kullanım yeri bulur. Yine de sunucunun işletim sistemi ve yapılandırılmasına bağlı olarak her sunucu bunları sunmak zorunda değildir.

Aşağıdaki tabloda $_SERVER ön tanımlı değişkeni ile erişebileceklerinizin bir listesi bulunuyor. Bu listeyi hemen ezberlemek zorunda değilsiniz. Zamanla kullandıkça zaten farkında olmadan ezberleyeceksiniz. 🙂

INDEXAçıklama
PHP_SELFÇalıştırılan betiğin, belge kök dizinine göreli dosya adını verir. /path/self.php gibi.
GATEWAY_INTERFACESunucunun desteklediği CGI belirtiminin sürümünü içerir; ‘CGI/1.1‘ gibi.
SERVER_ADDRBetiğin çalıştığı sunucunun IP adresini döndürür.
SERVER_NAMEBetiğin çalıştığı sunucunun adını döndürür.
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ünü döndürür; HTTP/1.1 gibi
REQUEST_METHODSayfaya erişim için kullanılan istek yöntemini döndürür; GET, HEAD, POST, PUT gibi
REQUEST_TIMEİsteğin başlangıç zamanını döndürür
REQUEST_TIME_FLOATİsteğin başlangıç zamanını microtime cinsinden döndürür.
QUERY_STRINGSorgu dizgesi, sayfaya erişirken kullanılabilir.
DOCUMET_ROOTGeç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. iso-8859-9, utf-8 gibi.
HTTP_ACCEPT_ENCODINGGeçerli isteğin Accept-Encoding: başlığının içeriğidir. gzip gibi.
HTTP_ACCEPT_LANGUAGEGeçerli isteğin Accept-Language: başlığının içeriğidir. tr, en gibi
HTTP_CONNECTIONGeçerli isteğin Connection: başlığının içeriğidir. Keep-Alive gibi
HTTP_HOSTGeçerli isteğin Host: başlığının içeriğidir.
HTTP_REFERERVarsa kullanıcının tarayıcısını geçerli sayfaya gönderen sayfanın URL adresidir. Bu kullanıcı tarayıcısı tarafından belirtilir. Her tarayıcı bunu belirtmez ve bazıları HTTP_REFERER değiştirmeyi bir özellik olarak sunar. Yani bu bilgiye güvenilmez.
HTTP_USER_AGENTGeçerli isteğin User-Agent: başlığının içeriğidir. Bu sayfaya erişen tarayıcıyı ifade eden bir dizgedir. Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 gibi bir yapısı vardır.
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.
REMOTE_USERKimliği kanıtlanmış kullanıcı.
REDIRECT_REMOTE_USERİstek dahilen yönlendirilmişse kimliği kanıtlanmış kullanıcı.
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. Ön tanı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.
REQUEST_URISayfaya erişim için belirtilen URI; /index.html gibi
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_USERHTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından sağlanan kullanıcı adı atanır.
PHP_AUTH_PWHTTP 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 isiminin ardından bir sorgu dizgesi olsa bile bu gösterilmez. Örneğin betik http://lvh.me/php/info.php/some/stuff?foo=bar adresinde çalışıyorsa; /some/stuff döndürülür.
ORIG_PATH_INFOPHP tarafından işlenmeden önceki özgün PATH_INFO

Örnek kullanımı şu şekildedir;

echo $_SERVER["PATH_INFO"];

$_GET

URL üzerinden geçerli betiğe aktarılan değişkenlerden oluşan bir ilişkisel dizi. Dizinin yalnızca GET isteklerinden değil, bir sorgu dizesindeki tüm isteklerden oluşturulduğunu unutmayın.

<?php
echo "Merhaba " . $_GET['isim'] . "!";
?>

yukarıdaki gibi bir PHP dosyası oluşturup http://localhost/index.php?isim=Muhammet adresinden çağırdığımızı varsayarsak aşağıdaki çıktıyı üretecektir.

Merhaba Muhammet!

Bu işlem genellikle GET metodu ile gönderilmiş form verilerine erişim için kullanılır.


$_POST

HTTP isteklerinde Content-Type olarak multipart/form-data veya application/x-www-form-urlencoded kullandığında HTTP POST yöntemi kullanılarak geçerli betiğe aktarılan ilişkisel değişken dizisidir.

Bir örnek oluşturabilmek için aşağıdaki HTML kodları ile basit bir form oluşturalım. Ve örneğin kullanıcının adını girmesini isteyelim.

<form method="POST" action="gonder.php">
    <input type="text" name="adiniz" placeholder="Adınızı girin!" />
    <input type="submit" value="Gönder" />
</form>

şimdi gonder.php diye bir dosya oluşturup aşağıdaki kodları giriyoruz. (Dosya adı form etiketi içerisinde action tanımlanmasına gonder.php yazdığımız için bu şekilde.)

<?php
echo "Hoşgeldin, " . $_POST['adiniz'];
?>

Bu işlem genellikle POST metodu ile gönderilmiş form verilerine erişim için kullanılır.


$_REQUEST

$_REQUEST ön tanımlı değişkeni hem $_POST hem $_GET hem de $_COOKIE ön tanımlı değişkenleri gibi çalışır. Genellikle kullanılması tavsiye edilmez ancak bazı durumlarda işe yarar olabilir.

Örneğin bir arama sayfasında kullanıcıdan alacağınız veriyle arama işlemini yapacaksınız. Kullanıcı bunu Post ya da Get metodu ile gönderebilsin istiyorsunuz. İşte burada ihtiyacınız olan ön tanımlı değişken $_REQUEST oluyor.

Kullanım şekli ise $_GET ve $_POST ile birebir aynıdır.

echo $_REQUEST['anahtar_adi'];

$_FILES

En kısa tanımı ile HTTP üzerinden POST yöntemi kullanılarak geçerli betiğe yüklenmek istenen dosya ya da öğeye ait bilgilerin tutulduğu bir dizidir.

Kullanıcının sisteme resim, döküman vs gibi dosyalar yüklemesi gerektiği durumlarda kullanılır.

<form enctype="multipart/form-data" action="yukle.php" method="post">
    <input type="file" name="inputName" />
    <input type="submit" value="Yükle" />
</form>

Yukarıdaki form kullanıcının seçtiği bir dosyayı inputName adında PHP betiğimize yani sunucumuza gönderecektir.

print_r($_FILES['inputName']);

Yukarıdaki komut ile gönderilen dosyaya ait bilgileri bir dizi şekilde görebilirsiniz. Bu diziye ait INDEX’leri aşağıdaki tabloda görebilirsiniz.

INDEXAçıklamaÖrnek
nameİstemcinin makinesindeki dosyanın asıl adıdır.$_FILES['inputName']['name']
typeEğer tarayıcı bu bilgiyi sağladıysa dosyanın MIME türüdür. image/gif gibi ancak bu değer PHP tarafından kontrol edilmez. Kullanıcı farklı bir dosyayının MIME türünü farklı bir dosyaya tanımlayabilir. Yani buna güvenmemelisiniz.$_FILES['inputName']['type']
sizeYüklenen dosyanın bayt cinsinden boyutudur.$_FILES['inputName']['size']
tmp_nameYüklenen dosyanın sunucuda saklandığı sıradaki geçici dosya adıdır.$_FILES['inputName']['tmp_name']
errorDosyanın yüklenmesinde bir hata oluştuysa, hata kodunu verir.$_FILES['inputName']['error']

PHP ile dosya yükleme işlemleri daha sonra farklı bir başlık altında detaylandırabilirim.


$_COOKIE

Geçerli betiğe HTTP Çerezleri üzerinden aktarılan bütünleşik bir değişken dizisidir.

$_COOKIE['cerezAdi'];

$_SESSION

Geçerli betikte kullanılabilecek oturum değişkenlerini içeren bir ilişkisel dizidir.

$_SESSION['oturumAdi'];

Yazar Muhammet ŞAFAK

1992 İstanbul doğumluyum. 2008 yılından beri profesyonel olarak PHP geliştiriyorum. Her ne kadar ağırlıklı olarak PHP üzerinde çalışsam da C, C++, Python, Java programlama dillerini de kullanıyorum.

Bir Cevap Yazın