Php’de bizim tanımlamadığımız ve tanımlı olarak gelen değişkenlere öntanımlı değişkenler denir.
Genel olarak kullanacağımız değişkenlerimiz şunlardır.
1. Süper Küreseller
- $GLOBALS
- $_SERVER
- $_GET
- $_POST
- $_FILES
- $_COOKIE
- $_ SESSION
- $_ REQUEST
- $_ENV
2. $php_errormsg
3. $HTTP_RAW_POST_DATA
4. $http_response_header
5. $argc
6. $argv
1. SÜPER KÜRESELLER
Php kodlarının her yerinde kullanılabilen, evrensel , öntanımlı değişkenlere süper küresel
değişkenler denir. Php’nin bize sunmuş olduğu sabit değişkenlerdir. Php’de öntanımlı
değişkenlerin çoğu süper küreseldir.
$GLOBALS
Tanımladığımız bir değişkeni her yerde kullanabilmemizi sağlar. Globals değişkenleri
fonksiyonlar içerisindeki değişkenlere ulaşabilmek için veya farklı bir sayfadaki değişkenlere
erişebilmek için tanımlarız.
Not: Fonksiyon içinde yazılan kodlar başka fonksiyon içinde normal olarak kullanılmaz. Ama
$GLOBAL ile bu mümkün.
Örnek:
<meta
http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<?php
function test(){
$deger="Yerel";
echo 'Küresel alandaki değişken:
'.$GLOBALS["deger"]."<br/>";
echo 'Yerel alandaki değişken:
'.$deger."\n";
}
$deger ="Örnek";
test();
?>
|
Ekran Çıktısı:
Sunucu ile ilgili bilgilerin tutulduğu değişken türüdür.Bu değişken bir
dizi değişkenidir. Bilgiler bir dizi içerisinde tutulduğu için biz hangi
bilgiyi çekmek istiyorsak diziye o değeri girmemiz gerekmektedir. Dizideki
girdiler HTTP sunucu tarafından oluşturulur.
Not: $_SERVER değişkenimiz de herbirinin ayrı
ayrı anlamlarının olduğu indisler bulunmaktadr.
Örnek:
<meta
http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<?php
echo
$_SERVER['DOCUMENT_ROOT'];
echo "<br/>";
echo $_SERVER['GATEWAY_INTERFACE'];
echo "<br/>";
echo $_SERVER['HTTP_ACCEPT'];
echo "<br/>";
echo $_SERVER['HTTP_ACCEPT_ENCODING'];
echo "<br/>";
echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
echo "<br/>";
echo $_SERVER['HTTP_CONNECTION'];
echo "<br/>";
echo $_SERVER['HTTP_HOST'];
echo "<br/>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br/>";
echo $_SERVER['QUERY_STRING'];
echo "<br/>";
echo $_SERVER['REMOTE_ADDR'];
echo "<br/>";
echo $_SERVER['REMOTE_PORT'];
echo "<br/>";
echo $_SERVER['REQUEST_METHOD'];
echo "<br/>";
echo $_SERVER['REQUEST_URI'];
echo "<br/>";
echo $_SERVER['SCRIPT_FILENAME'];
echo "<br/>";
echo $_SERVER['SCRIPT_NAME'];
echo "<br/>";
echo $_SERVER['SERVER_ADDR'];
echo "<br/>";
echo $_SERVER['SERVER_ADMIN'];
echo "<br/>";
echo $_SERVER['SERVER_NAME'];
echo "<br/>";
echo $_SERVER['SERVER_PORT'];
echo "<br/>";
echo
$_SERVER['SERVER_PROTOCOL'];
echo "<br/>";
echo
$_SERVER['SERVER_SIGNATURE'];
echo "<br/>";
echo
$_SERVER['SERVER_SOFTWARE'];
echo "<br/>";
echo $_SERVER['PHP_SELF'];
echo "<br/>";
echo $_SERVER['REQUEST_TIME'];
echo "<br/>";
?>
|
Ekran Çıktısı:
Bir formdan gönderilen bilginin her
kullanıcı tarafından erişilebilmesi için GET metodu kullanılır.
Örnek:
<html>
<meta http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<form name="form1" method="get"
action="yaz.php">
Adı: <input type="text"
name="adi" /><br>
Soyadı: <input type="text"
name="soyadi" /><br>
<input
type=”text” name=”Gönder” />
</form>
</body>
</html>
|
İndex.php
dosyamızdan sonra yaz.php dosyamıza kodlarımızı yazalım.
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<?php
echo "<b>Adınız:</b>",$_GET["adi"],"<br>";
echo
"<b>Soyadınız:</b>",$_GET["soyadi"],"<br>";
?>
</body>
</html>
|
Bu
iki notepad++ dosyamızı c:wamp/www klasörümüze kaydedikten sonra WampServer simgemizden
localhost seçeneği ile çalıştırdığımızda açılacak olan web sayfamız aşağıdaki
gibi olacaktır.
Ekran Çıktıları:
Adı
ve Soyadı kısımlarını dolduralım.
Not: Method=”get” ifadesiyle bilgilerin GET
metodu ile gönderileceği belirtilmiştir. Aslında form yapılarında çoğu zaman
POST metodu kullanılır. Get metodu pek kullanılmaz. Burada sadece get metodu
ile bilgi göndermeye ve almaya örnek vermekteyiz.
Not: $_GET değişkenini kullandığımızda bütün
değişkenler isimleri ve değerleri url de görüntülenir. Yani şifte işlemleri ve
özel veri aktarımı için bu method güvenli değildir. Gönderilen bilgi miktarının
bir limiti vardır.(max:100 karakter gibi)
Bu değişken post metoduyla çekilen verilerin ele alınmasını sağlar. HTTP
POST metodunun değişken dizisinin bir elemanıdır.
POST
metoduyla gönderilen bilgilerin büyüklük sınırı yoktur ve kullanıcı tarafından
görülmez.
Örnek:
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<form action="action.php"
method="post">
<p>İsminiz: <input
type="text" name="isim" /></p>
<p>Yaşınız: <input
type="text" name="yas" /></p>
<p><input type="submit"
/></p>
</form>
</body>
</html>
|
İndex.php dosyasını yazdıktan sonra post değişkenimiz kullanacağımız action.php dosyasındaki kodlarımızı yazalım.
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
Merhaba
<?php
echo htmlspecialchars($_POST['isim']);
?>.
Siz
<?php
echo (int) $_POST['yas'];
?>
yaşındasınız.
</body>
</html>
|
Ekran Çıktıları:
Web
sayfasında da görüleceği gibi sağdaki pencerenin içinde ki işaretli olan
link kısmına baktığımız da $_GET değişkeninde ki gibi bilgiler gözükmeyerek sadece
dosyamızın adı görüntülenmektedir.
Bu değişkenimiz bir dosya yükleme değişkenidir. Seçtiğimiz dosyayı
gönderme yada başka bir klasöre yükleme yapabiliriz.
Örnek:
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<form action="gonder.php" method="post"
enctype="multipart/form-data">
<input/><br/>
<input type="file"
name="dosya" />
<input type="submit"
value="Gönder" />
</form>
</body>
</html>
|
İndex.php'den sonra gonder.php kodlarını yazalım.
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<?php
if(isset($_FILES['dosya'])) {
echo 'Dosya gönderilmiş';
} else {
echo 'Lütfen bir dosya gönderin';
}
?>
</body>
</html>
|
Ekran Çıktıları:
Dosyamızı
seçip Gönder butonuna tıkladığımızda sağdaki gibi ekran çıktımız olacaktır. Bu
örnekte sadece bir dosyanın gönderiip gönderilmediğini kontrol ettik.
$_FILES değişkenimizde birkaç
tane alt dizin bulunmaktadır.
# name: Gönderlen dosyanın adı
# type: Gönderilen dosyanın tipi
# tmp_name: Göndeilen dosyanın
geçici olarak barındığı adres
# size: Gönderilen dosyanın bayt
cinsinden boyutu
# error: Dosya gönderilirken
gerçekleşen hata kodu
İndex.php
dosyaızı değiştirmeden aşağıdki kodlarımızı gonder.php dosyasına yazalım.
Örnek:
<html>
<meta http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<?php
if(isset($_FILES['dosya'])){
$hata = $_FILES['dosya']['error'];
if($hata != 0) {
echo 'Yüklenirken bir hata
gerçekleşmiş.';
} else {
$boyut = $_FILES['dosya']['size'];
if($boyut > (1024*1024*3)){
echo 'Dosya 3MB den büyük olamaz.';
} else {
$tip = $_FILES['dosya']['type'];
$isim = $_FILES['dosya']['name'];
$uzanti = explode('.', $isim);
$uzanti = $uzanti[count($uzanti)-1];
if($tip != 'image/jpeg' || $uzanti
!= 'jpg') {
echo 'Yanlızca JPG dosyaları
gönderebilirsiniz.';
} else {
$dosya =
$_FILES['dosya']['tmp_name'];
copy($dosya, 'dosyalar/' .
$_FILES['dosya']['name']);
echo 'Dosyanız dosyalar klasörüne
upload edildi!';
}
}
}
}
?>
</body>
</html>
|
Ekran Çıktıları:
Not: Dosyamızı seçmeden önce www klasörüne dosyalar adında bir klasör oluşturmamız lazım ki upload işlemini klasöre gerçekleştirebilsin.Dosyamızı seçtikten sonra ekran görüntümüz aşağıdaki gibi olacaktır.
Dosya
yükleme işlemini başarılı bir şekilde olup olmadığını www klasörümüzde ki
dosyalar klasörüne bakıp anlayabiliriz.
Cookie’lerin (çerezlerin) yönetiminde kullanılır.
Girilen
sitelerin tarayıcılar üzerinde bıraktığı izlere cookie denir. Bu izler siteye
tekrar ziyaret edildiğinde yeniden gönderilerek bazı şeylerin yeniden hatırlanmasını
sağlar. Kullanıcı adı ve şifremizi gibi. Şimdi cookileri oluşturma, silme, kullanma ve değerini değiştirme işlemlerine
tek tek bakalım.
Cookie Oluşturma
Cookie
oluşturmak için setcookie(); fonksiyonunu
kullanırız. Bu fonksiyonda tarayıcıya gönderilecek olan değerin anahtarını ve
içeriğini belirttiğimiz gibi üçüncü paremetre olarak da ne kadar süre
tarayıcıda saklanacağını belirtiyoruz.
1.Örnek:
<?php
setcookie("cerez","Yeni
Cerezim");
?>
|
Yukardaki
gibi kodumuzu yazdığımızda son
parametreyi boş bıraktığımız için varsayılan olarak tarayıcı kapatıldığında
oluşturmuş olduğumuz çerezimiz silinecektir.
2.Örnek:
<?php
setcookie("cerez","Yeni
Cerezim", time() + (60*60*24));
?>
|
Yukarıdaki
gibi üçüncü değişkenimize şuan ki zamana saniye cinsinden 24 yani 1 gün eklemiş
oduk. Ve bir gün sonra siteye
girdiğimizde oluşturmuş olduğumuz çerezimiz gönderilmiyor olacaktır.
Cookie Silme
Cookie
silmek için sadece yapmamız gereken üçüncü parametremize geçmiş bir zaman
ekleyerek var olan çerezi silebiliriz.
3.Örnek:
<?php
setcookie("cerez","Yeni
Cerezim",time() - 3600);
?>
|
Örneğimizde
şuanki zamana 1 saat öncesini yazarak çerezi silmiş oluruz.
Cookie Kullanımı
Cookie
kullanımını bizim süper küresel olan $_COOKIE değişkenimiz
ile yaparız.
4.Örnek:
<?php
setcookie("cerez","Yeni
Cerezim",time() + (60*60*24));
echo $_COOKIE ['cerez'];
?>
|
Ekran Çıktısı:
Ekranda çerezimize verdiğimiz değer
görünecektir.
Cookie Değerini Değiştirmek
Ouşturmuz
olduğumuz çerezimizin değerini değiştirmek için de setcookie(); fonksiyonunu
kullanarak yaparız.
5.Örnek:
<?php
setcookie("cerez","Yeni
Cerezim",time() + (60*60*24));
setcookie("cerez","2.
Cerezim",time() + (60*60*24));
echo $_COOKIE ['cerez'];
?>
|
Ekran Çıktısı:
$_SESSION kullanımı genel olarak $_COOKIE
ile aynıdır ama teknik olarak farklıdır.
Session
aynı çerezlerde olduğu gibi $_SESSION global değeri ile okunur ama yazılması için çerezlerdeki gibi
fonksiyona ihtiyaç duyulmaz. Sessıon çerezlerde ki gibi son kullanma zamanını
biz belirlemeyerek tarayıcı kapatıldığında otomatik olarak silinir.
$_SESSION ile $_COOKIE Arasındaki Fark
Bir çerez
tanımladığımızda bu çerezin adı ve değeri taracıya açıkca gönderilir ve bu
değer istenilen süre boyunca tarayıcıda açık bir şekilde saklanır.
Session
da ise kaydedilen değer ve değerin adı tarayıcıya gönderilmez. Onun yerine PHPSESSID adında içinde uzun bir session id değeri bulunan
bir çerez tanımlanır ve bizim oluşturduğumuz sessionlar sunucuda saklanır ve
girenlerin gönderdiği PHPSESSID kimliğine göre kime ait oldukları bulunur ve
yeniden düzenlenir.
Session Oluşturma
Session
oluşturmasına ya da kullanımına başlamadan önce bir kere her sayfanın en
başında session_start(); fonksiyonunu kullanmak gerekir. Bu fonksion
session olayını kullanıma hazırlar ve olmazsa olmazdır.
1.Örnek:
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<?php
session_start();
echo $_SESSION['yeni']= 'Yeni Sessionım';
?>
|
Yukardaki
kodumuzda session kullanımını başlatarak session dizisinin yeni anahtarına Yeni
Sessionım değerini verdik. Kodu çalıştırdığımızda ise ekranda Yeni Sessionım yazacaktır.
Not: Oluşturmuş olduğumuz bu session kullanıcının
girdiği her sayfaya tekrar göndererek bir önceki sayfada yaptığı işlemleri,
kullanıcı adı ya da şifre gibi verileri yeniden hatırlamasını sağlar.
Session’a Dizi Atama
2.Örnek:
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<?php
session_start();
$_SESSION['ogrenciler']=array('Ahmet,.'Sevgi','Aslı','Mehmet');
?>
|
Yukardaki örnekte de anlaşılacağı gibi normal bir dizi
tanımlıyoruz ve tanımladığımız bu diziyi başka sayfalarda da çalıştırdığımızda
aynen dizi şeklinde kullanabiliriz.
Session Silme
Oluşturmuş olduğumuz sessionı silmek için unset(); fonksiyonunu kullanırız.
3.Örnek:
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<?php
session_start();
$_SESSION['ders']='Matematik';
unset($_SESSION('ders'));
?>
|
Yukardaki örneğimizde Matematik değerini verdiğimiz ders
anahtarlı sessionı oluşturduktan sonra unset(); fonksiyonu ile sildik.
Tüm sessionları silmek içinde aşağıdaki kodlarımızı
yazarız. Sessionların silindiğini kontrol etmek için session_destroy();
başına echo komutunu yazıp çalıştırdığımızda ekranda 1
sayısını yani başarılı bir şekilde tüm sessionlarımızı sildiğimizi anlarız.
4.Örnek:
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<?php
session_start();
session_destroy();
?>
|
Eğer herhangi bir session var mı yok mu diye kotrol etmek
için aşağıdaki kodlarımızı yazarız.
5.Örnek:
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<?php
session_start();
echo isset($_SESSION[['kontrol']);
?>
|
Yukarıdaki gibi kodlarımızı yazdığımızda $_SESSION içine
yazdığımız session varsa olumlu(1) yoksa olumsuz olarak döner.
$_GET, $_POST ve $_COOKIE değişkenlerini beraberinde bulundurur. Çok
gerekmedikçe kullanımı tavsiye edilmez.
Not : Bir formdan gelen verinin
hangi yöntemle geldiğini bilmediğimiz için $_GET yada $_POST değişkenlerini
kullanmak yerine $_REQUEST değişkenini kullanırız.
Örnek:
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<form action="gonder.php">
Adınız: <input type="text"
name="ad" />
Soyadınız: <input type="text"
name="soyad" />
Mesleğiniz: <input type="text"
name="meslek" />
<input type="submit"
value="Gönder">
</form>
</body>
</html>
|
İndex.php’den sonra gonder.php
kodlarını yazalım.
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<?php
echo "Sayın
".$_REQUEST["ad"]."
".$_REQUEST["soyad"]."<br>
Mesleğiniz
".$_REQUEST['meslek'];
?>
</body>
</html>
|
Ekran Çıktıları:
Açılan
penceremizde gerekli yerleri doldurduğumuzda penceremiz aşağıdaki gibi
olacaktır.
Açılan
penceremizde de anlayacağımız gibi url adresinde bilgilerimiz gözükmektedir. B
u nedenle $_REQUEST kullanımı güvenlik için pek tercih edilmez.
Ortam değişkenleridir. Php yorumlayıcısının çalıştığı
ortamdaki global namespace’idir.
$_ENV
global değişkeni sistem değişkenlerini tutmaya yarayan bir süper küresel
değişkendir. Platform özelliği, dosya yolu gibi bilgileri kullanmaya yarar.
Örnek:
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<?php
$_ENV['ad']= "Hasan";
echo "Kullanıcı adınız:
".$_ENV['ad'];
?>
</body>
</html>
|
Ekran Çıktısı:
2. $php_errormsg
Önceki hata iletisidir. $php_errormsg Php tarafından üretilen
son hata iletisinin metnini içeren bir değişkendir. Bu değişken sadece hatanın
oluştuğu alan içinde ve sadece track_errors ayar seçeneği açık ise (ön tanımlı
değeri kapalıdır) geçerlidir.
Örnek:
<html>
<meta http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<?php
@assert();
echo $php_errormsg;
?>
</body>
</html>
|
Ekran Çıktısı:
3. $HTTP_RAW_POST_DATA
Ham POST verisidir. POST ile aldığımız mesaj çok karmaşık
yada parçalı bir şekilde olabilir. Bunu $HTTP_RAW_POST_DATA ile çok güzel bir
şekilde gösterebiliriz.
4.
$http_response_header
HTTP yanıt başlıklarıdır. Bu dizi get_headers() işlevi
gibidir. http sarmalayıcı kullanılırken, $http_response_header http yanıt başlıklarından
oluşturulur.
Örnek:
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<?php
$http_response_header="Merhaba";
//file_get_contents("http://mesela.com");
var_dump($http_response_header);
?>
</body>
</html>
|
Ekran Çıktısı:
5.
$argc ve $argv
Php’de konsol uygulamalarında kullandığımız parametre
değişkenleri vardir. $argv dizisi ile verilen parametreleri, $argc ile
parametre sayısını alırız.
Örnek:
<html>
<meta
http-equiv="Content-Type"
content="text/html;charset=UTF-8"/>
<body>
<?php
$argc="Erzurum";
var_dump($argc);
$argv="Staj";
var_dump($argv);
?>
</body>
</html>
|
Ekran Çıktısı: