PHP kategorisindeki bu dersimizde süper global değişkenleri inceleyeceğiz. Peki bu süper global değişken nedir öncelikle bu konuya bir açıklık getirelim.
Süper Global değişkenler tanımlandığı sayfanın tamamından erişilebilen ve ayrıca farklı sayfalardan da ulaşılabilen değişken biçimleridir. Örnek olarak daha önceki dersimizde anlattığımız POST, GET ve FILES değişkenleri birer Süper Global Değişkendir. PHP dilinde 9 adet Süper Global değişken vardır. Bunlar;
Yukarıdaki listede gördüğümüz üzere tüm Süper Global değişkenlerimiz “$_” ifadesi ile başlıyor. GET, POST ve FILES değişkenlerini daha önceki derslerimizde detaylı şekilde açıklamıştık. Şimdi diğer Süper Global değişkenlerimize teker teker göz atalım.
$GLOBALS değişkeni lokalden global değişkenlere erişmek için kullanılır. Örneğin bir fonksiyon içerisinden, fonksiyon dışındaki bir değişkene erişmek için $GLOBALS[‘değişkenAdı’] şeklinde kullanılır.
Örnek:
Bir adet $num adında değişken tanımlayalım ve 15 değerini atayalım. ardından bir topla fonksiyonu oluşturalım ve fonksiyona gönderdiğimiz sayı ile $num değişkenini fonksiyon içerisinde toplayıp sonucu geri döndürüp ekrana yazdıralım;
1 2 3 4 5 6 |
$num = 15; function topla($sayi){ // fonksiyon değeri alır $sonuc = $sayi + $GLOBALS['num']; // fonksiyon dışındaki $num değişkeni ile toplar return $sonuc; // sonucu geri döndürür } echo topla(6); // fonksiyona 6 değerini gönder ve dönen sonuu ekrana yazdır |
Yukarıdaki işlemin sonucunda ekrana 21 değeri yazar.
Eğer yukarıdaki fonksiyon içerisinde $GLOBALS[“num”] değişkeni kullanmasaydık ve direkt $num olarak yazsaydık programımız çalışmayacaktı.
$_SERVER süper globali bize sunucu hakkında bir dizi bilgiler verir. Örneğin sunucunun IP adresini ekrana yazdırmakistersek $_SERVER süper globalini aşağıdaki gibi kullanabiliriz.
1 |
echo $_SERVER['SERVER_ADDR']; // Sunucunun ip adresini döndürür |
$_SERVER süper globali ile sunucudan çekebileceğimiz bilgilere buradan erişebilirsiniz: php.net
Genellikle oturum değişkeni tanımlamak için kullanılır. Örneğin bir kullanıcı sitemizi ziyaret ettiğinde sitemizde bir oturum başlatmış olur. Biz bu kullanıcıdan index sayfasında bir bilgi aldığımızı varsayalım. Bu bilgiyi kullanıcının diğer sayfaları ziyaret edip sitemizden çıkıncaya kadar elimizde tutmamız gerektiğini düşünelim. O halde imdadımıza $_SESSION süper globali yetişir. Yanı kullanıcının sitemizi ziyaret etmesinden, tarayıcı penceresini kapatıncaya kadar elimizde tutmamız gereken bilgileri bu değişkene aktararak kullanabiliriz.
Sözdizimi: $_SESSION[‘degiskenAdi’] = ‘atanacak değer’;
Session tanımlamadan önce her zaman session_start() fonksiyonu ile sessionları başlatmamız gerekmektedir.
Örneğin index ve ders adında iki adet sayfamız olsun. Index sayfasında kullanıcı adını alalım. Ardından ders.php sayfasında bu ismi kullanalım;
1 2 3 |
session_start(); // Sessionları başlattık $_SESSION['kullanici_adi'] = "Mehmet"; // "kullanici_adi" adında session tanımladık ve "Mehmet" değerini atadık echo "Hoşgeldin ".$_SESSION['kullanici_adi']; // Session'ı ekrana yazdırdık |
Yukarıda index sayfamızda “kullanici_adi” adında session tanımladık ve kullandık. Ekrana Hoşgeldin Mehmet yazdırdık.
Şimdi aynı session’ı ders.php sayfamızda kullanalım;
1 2 |
session_start(); // session'ı başlattık echo $_SESSION['kullanici_adi'].", bu sayfada dersleri görebilirsin"; // "kullanici_adi" adlı session'ı ekrana yazdırdık |
Yukarıdaki kodda ise ayrı bir sayfada kullanici_adi session’ımızı kullandık. Görüldüğü üzere index sayfamızda atadığımız değer ders sayfasında göründü.
Session’lara atadığımız değeri değiştirebiliriz ve oturum sona ermeden değişkeni silebiliriz;
1 2 3 |
session_start(); $_SESSION['kullanici_adi'] = "Halim"; // değişken değeri "Halim" oldu unset($_SESSION['kullanici_adi']); // değişkeni sildik |
Cookie bir diğer adıyla Çerez süper globali sitenin daha sonra kullanmak amacıyla kullanıcının tarayıcısına kaydettiği değişkenlerdir. Örneğin bir sitede kullanıcı adı ve şifrenin hatırlanması istenildiğinde site kullanıcının tarayıcısına bu bilgileri kaydeder ve bir sonraki oturumda bu bilgileri okuyup otomatik olarak doldurur.
Çerez tanımlamak için stcokie() fonksiyonu kullanılır. Bu fonksiyon temelde iki adet parametre alır. Bunlardan birincisi çerez adı, ikincisi ise çerez değeridir.
Sözdizimi:
Çerez tanımlama: setcockie(“çerezAdı”, “atananDeğer”);
Çerezi çağırma: $_COOKIE[“çerezAdi”];
Örnek olarak kullanıcının kullanıcı adını çerezlere ekleyelim ve bu çerezi ekrana yazdıralım;
1 2 |
setcookie('kullaniciAdi','Mehmet'); echo $_COOKIE['kullaniciAdi']; |
Çerezler Session’lar gibi bir sayfada tanımlandığında, oturum sonlanana kadar (kullanıcı tarayıcıyı kapatana kadar) sitenin tüm sayfalarından erişilebilir. Mesela index sayfasında tanımladığınız bir çerezi ders sayfasında kullanabilirsiniz. Ancak Session’lardan farklı olarak eğer istenirse tarayıcı kapatıldıktan sonra da belirlenen süre kadar tarayıcıda kayıtlı kalabilir.
Örneğin bir çerezin 30 gün boyunca tarayıcıda kayıtlı kalmasını istiyorsak kodlarımız aşağıdaki gibi olacak;
1 |
setcookie('kullaniciAdi','Mehmet', time() + 60*60*24*30); |
Yukarıdaki kodumuzda kullaniciAdi isimli bir çerez tanımladık ve Mehmet değerini atadık. Ardından time() + 60*60*24*30 değerini ekledik. Bunun anlamı çerezin 30 gün boyunca tarayıcıda saklanması demektir.
Bunun anlamı: time() – şu andan itibaren, 60 saniye, 60 dakika, 24 saat, 30 gün boyunca çerezi sakla demektir.
Çerezin diğer alabileceği değerler ise şu şekilde olacak;
1 2 |
setcookie('çerezAdi','atanacakDeğer', geçerlilikSüresi, 'etkinOlacağıDizin', 'etkinOlacağıSubdomain', güvenlik, yalnızcaHttp); |
Bunlara sırayla gözatmak gerekirse;
çerezAdi – Strin türü değer alır. Çerez çağırılırken kullanılır; $_COOKIE[‘çerezAdi’];
atanacakDeğer – String türü değer alır. Çereze atanan değerdir.
geçerlilikSüresi – Integer türü değer alır. Çerezin kullanım süresi.
etkinOlacağıDizin – String türü değer alır. Tanımlanan çerezin hangi klasör içerisindeki sayfalarda kullanılacağıdır.
etkinOlacağıSubdomain – String türü değer alır. Çerez hangi Subdomainlerde kullanılacağını belirtmek içindir.
güvenlik – Boolean türü (True – False) değer alır. True olursa çereze sadece HTTPS ile erişilmesini sağlar.
yalnızcaHttp – Boolean (True – False) türü değer alır. True olursa çereze sadece HTTP protokolü ile erişilmesini sağlar, javascript ile erişilmez.
$_REQUEST ve $_ENV süper globallerini ilerki derslerimizde ele alacağız.