2 Temmuz 2015 Perşembe

PHP'de ÖNTANIMLI DEĞİŞKENLER

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ı:


  •   $_SERVER

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ı:

 



  •  $_GET
 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)
  • $_POST
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.
  • $_FILES
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
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
$_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.
  • $_REQUEST
$_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.
  •  $_ENV
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ı:









Öntanımlı değişkenlerimizi burada bitiriyoruz. Daha fazla bilgi için  http://be2.php.net/manual/tr/reserved.variables.php adresini ziyaret edebilirsiniz.


Hiç yorum yok:

Yorum Gönder