Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Fonksiyonlar ve Küresel Değişkenler

Benzer bir sunumlar


... konulu sunumlar: "Fonksiyonlar ve Küresel Değişkenler"— Sunum transkripti:

1 Fonksiyonlar ve Küresel Değişkenler

2 Fonksiyonlar Amacı: Belli bir işlemi yapıp sonucu döndürmektir.
Tıpkı matematikteki gibidir. Örnegin F(b,a,c)=b2-4*a*c. Belli bir algoritma geliştirilir., fonksiyon içerisinde verilen parametreler (b,a,c) yardımıyla istediğimiz yerde çağrılarak istenilen işlemi yapan yapılara fonksiyon denir.

3 Fonksiyonlar function fonskiyonismi(varsaparametreler) {
/* burada fonksiyon çağrıldığında çalışacak olan komut satırları*/ return dönecekolandeğer; //eğer birşey dönecekse } Not: Birden fazla parametre varsa bunlar virgül ile birbirlerinden ayrılmalıdır.

4 Fonksiyonlar Örnek: Eğer formülümüzü fonksiyona dönüştürürsek -->
Formülümüz: F(C)=Cx Eğer formülümüzü fonksiyona dönüştürürsek --> F yi bulmak için C yi bilmeliyiz (girmeliyiz) ve sonra C yi 1.8 ile çarpıp çıkan sonuca 32 eklemeliyiz. <?php function F($c) { $sonuc=($c*1.8)+32; return $sonuc; } ?>

5 Fonksiyonlar <?php function F($c) { $sonuc=($c*1.8)+32; } ?>
return $sonuc; } ?> Burada fazladan bir değişken kullanılmıştır. Eğer istersek şu sekilde de yazılabilir: return (($c*1.8)+32);

6 Fonksiyonları çağırmak
<?php function F($c) { $sonuc=($c*1.8)+32; return $sonuc; } $x=F(42); echo "42 Celsius $x Fahrenheit eder.<br/> "; echo '55 Celsius '.F(55). ' Fahrenheit eder. '; ?>

7 Fonksiyonlarda return
<?php function F($c) { $sonuc=($c*1.8)+32; return $sonuc; echo 'Merhaba'; } echo F(52); ?> Yukarıdaki örnekte ekranda Merhaba mesajını hiç göremezsiniz. Return komutu PHP için bir nevi çıkış (exit) dır. Fonksiyon içerisinde yapılacak en son işlemdir. Sonrasına hiç bakılmaz. Örnekteki fonksiyon içerisinde echo komutu kullanmak kendi başına bir hatadır. Sebebi fonksiyonun amacına ters düşmesidir. Hiçbir zaman bir fonksiyon değeri direk yazdırmaz. Sadece sonuç döndürür.

8 Fonksiyonlarda değişken kavramı.
İki çesit değişken vardır. «Yerel» ve «Küresel». Küresel (global) değişkenler: Fonksiyon dışında tanımlanan bir değişken fonksiyon içerisinde tanımlı değildir. Yani PHP dilinde tüm değişkenler aslında yereldir. Küresel olarak kullanmak istediğimiz değişkenleri önce fonksiyonun dışında tanımlayıp daha sonra fonksiyon içerisinde global komutu ile kullanmalıyız.

9 Global Değişkenler Örnek: <?php $a=8; function ekle() {
return ($a+2); } echo ekle() ?> Sonuç: > Ekranda sadece 2 gözükecektir Örnek: <?php $a=8; function ekle() { global $a; return ($a+2); } echo ekle() ?> Sonuç: > Ekranda sadece 10 gözükecektir Global komutu yeni değişken yaratma fonksiyon dışında yaratılanı kullan anlamına gelir.

10 Global değişkenler Örnek: <?php $a=8; function ekle() { global $a;
return ($a+2); } echo ekle() ?> Sonuç: > Ekranda sadece 10 gözükecektir Örnek: <?php $a=8; function ekle() { return ($GLOBALS['a']+2); } echo ekle() ?> Sonuç: > Ekranda sadece 10 gözükecektir $GLOBALS bir değişken dizinidir. Bu dizin dütün değişkenleri bünyesinde barındırır. Yukarıdaki iki örnek bi,rbirlerine denktir. [] içerisinde $ olmamasına dikkat edin.

11 Global Değişkenler Örnek: <?php, $a=8; function ekle() { global $a;
$a=$a+2; return $a; } echo ekle(). '-'.$a; ?> Sonuç: > Ekranda sadece gözükecektir. Yani $a nın değeri değişmiştir.

12 Global Değişkenler Örnek: <?php, $a=8; function ekle() { $a=2;
return $a; } echo ekle(). '-'.$a; ?> Sonuç: > Ekranda sadece 2-8 gözükecektir. Yani fonksiyon dışındaki $a ve fonksiyon içindeki $a birbirlerinden farklı iki değişkendir.

13 Fonksiyonlarda static değişkenler
Fonksiyon içinde tanımlanan değişkenler fonksiyona her çağrı yapıldığında yeniden yaratılır ve fonksiyonun bitiminde bu değişkenler yok edilir. Tanımladığımız bir fonksiyon içerisinde kullandığımız bir değişkenin değerini, aynı fonksiyonu ikinci kez çağırdığımızda değişkenin değerini kaldığımız yerden kullanmak istiyorsak static komutu kullanılır.

14 Fonksiyonlarda static değişkenler
<?php function sayacoku() { static $sayac=0; $sayac++; return $sayac; } echo sayacoku(); ?> Burada sayacoku her defasında farklı bir artan sıralı değeri sonuç olarak gönderecek. 1,2,3 gibi. Eğer static komutunu silersek sayacoku her defasında aynı değeri 1 i sonuç olarak gönderecek.

15 Küresel Değişkenler PHP de öntanımlı olarak gelen küresel değişkenler (değişken dizinleri) bulunmaktadır. Bunlar $GLOBALS, $_SERVER, $_GET, $_POST, $_REQUEST, $_COOKIE, $_FILES, $_SESSION dır. Her birinin farklı bir amacı bulunmaktadır. Sırasıyla öğrenelim.

16 $GLOBALS Oluşturduğumuz bütün değişkenler aslında GLOBALS küresel değişkeninde tanımlanır. <?php $x=5; echo $GLOBALS[' x ']; ?> Sonuç: 5 --> ekrana yazdırılır.

17 $_SERVER PHP ile sunucu(server) ve kullanıcı(client) arasında bir takım bilgileri elde etmemizi sağlar. 'PHP_SELF': Çalıştırılmakta olan betiğin, belge kök dizinine göreli dosya adıdır. Örneğin, adresindeki bir betik için $_SERVER['PHP_SELF'] değeri /dnm.php/foo.bar olacaktır. '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. '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', 'POST' gibi. 'REQUEST_TIME': İsteğin başlangıç zaman etiketidir. PHP 5.1.0'dan beri mevcuttur. 'QUERY_STRING': Sorgu dizgesi, sayfaya erişirken kullanılabilir.

18 $_SERVER '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 ,*,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 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.

19 $_SERVER '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. 'REMOTE_PORT': Kullanıcının makinesinin HTTP sunucusu ile haberleşmek için kullandığı porttur. 'SCRIPT_FILENAME': Geçerli betiğin mutlak yoludur. '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. '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.

20 $_SERVER 'SCRIPT_NAME':Geçerli betiğin yolunu içerir. Kendi kendilerini göstermesi gereken sayfalar için kullanışlıdırlar. 'REQUEST_URI': Sayfaya erişim için belirtilen URI; örneğin, '/index.html'. 'PHP_AUTH_DIGEST': Apache altında bir modül olarak Ö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': Apache veya IIS (PHP 5 üzerinde ISAPI) altında modül olarak 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': Apache veya IIS (PHP 5 üzerinde ISAPI) altında modül olarak 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: Bu durumda $_SERVER['PATH_INFO'], /some/stuff değerini içerecektir. 'ORIG_PATH_INFO': PHP tarafından işlenmeden önceki

21 $_SERVER Örneğin: Yukarıdaki örnek şuna benzer bir çıktı üretir:
<?php echo $_SERVER['SERVER_NAME']; ?> Yukarıdaki örnek şuna benzer bir çıktı üretir: $_SERVER ile mesela sadece şu IP aralığından görülebilecek sayfalar yaratabiliriz.

22 $_GET HTTP get değişkenleri bu küresel değişkende tutulur. Web sayfalarımızın adres satırında değer taşıma durumlarında bu küresel dizisi kullanılır. <?php $x=$_GET['y']; if ($x!= ' ') echo ' y nin değeri '.$x. ' dir '; else echo ' y nin değerini girmediniz '; ?> Bu dosyayı a.php diye kaydedip. Çalıştırdığımızda else kısmı çalışacaktır ekranda ' y in değerini girmediniz ' yazacaktır. Fakat a.php?y=5 diye çalıştırırsak, ekranda ' y in değeri 5 dir ' mesajı belirecektir.

23 $_POST POST metodu ile sayfaya gönderilen verileri almamıza yaran küresel değişkendir. Örneğin: <?php if (isset($_POST['submit'])) { echo " Merhaba {$_POST['adi']} {$_POST['soyadi']} "; } else ?> <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> <table border="1"> <tr> <td>Adı:</td><td><input type="text" name="adi"/></td></tr> <tr> <td>Soyadı:</td><td><input type="text" name="soyadi"/></td></tr> <tr> <td colspan="2"><input name="submit" type="submit" value="Gönder"></td></tr> </table/> </form> Her çalıştırmada POST dizini içerisinde submit değişkeni olup olmadığına bakılır. İlk çalıştırmada bu değişken yoktur. Formu doldurup tekrar gönder tuşuna basınca formdan alınan bilgiler yine aynı sayfaya gönderilecek (PHP_SELF) . Bu sefer script yeniden yüklenirken if denetlemesi doğru olacak ve forma girilen isim yazdırılacaktır.

24 $_COOKIE Geçerli betiğe HTTP Çerezleri üzerinden aktarılan bütünleşik bir değişken dizisi. İstemci (client) tarafta yaratılan küçük dosyalar içerisinde tutulan ve sadece yaratıldığı web adresi tarafından okunabilen değişkenlerdir. Amacı genellikle sadece ziyaretçileri tanımaktır. <?php if (!$_COOKIE['isim']) setcookie('isim', 'Emre',time()+3600); // cookie yaratılır // cookie nin adı isim değeri Emre ve geçerlilik süresi 1 saattir. else echo $_COOKIE['isim']; // cookie deki değier okunur ?> Cookie (çerezler) daha sonra detaylı olarak incelenecektir.

25 $_REQUEST Sırayla $_GET,$_POST ve $_COOKIE küresel dizinlerinin değerlerini içerisinde barındıran evrensel bir dizi değişkenidir. Yani slayt 22,23 ve 23 deki $_GET, $_POST ve $_COOKIE yazılan yerleri $_REQUEST olarak yazabiliriz. Örneğin slayt 22 deki $_GET['x'] yerine $_REQUEST['x'] yazılabilir.

26 $_FILES Form yoluyla kullanıcıdan herhangi bir dosyayı server’e aktarmak istediğimizde $_FILES küresel dizi değişkeni kullanılır. <?php if (isset($_FILES["dosya"])) { echo "<pre>"; print_r($_FILES); echo "</pre>"; } ?> <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data"> Dosya:<input type="file" name="dosya"/><br/> <input type="submit" value="Gönder"/> </form> print_r bir dizindeki bütün elemanların yazdırılmasını sağlar. Bu scriptin sonucu bir sonraki slaytta verilmiştir.

27 $_FILES Array ( [dosya]=> Array [name]=>x.txt
[type]=>application/octet-stream [tmp_name]=> /tmp/adlfkgh.txt [error]=>0 [size]=>356 ) Burada: name: yüklenen dosyanın adı type: türü tmp_name: yüklenen dosyanın geçici yeri ve adı size: bayt cinsinden boyutu error: yüklemede hata varsa kodu FILES daha sonra detaylı olarak incelenecektir.

28 Ornek Dosya Aktarimi Yukle.php <?php
if (!isset ($_FILES["dosyam"])) die("Dosya bulunamadi"); if($_FILES["dosyam"]["error"]!=0) die("Dosya aktarimi basarisiz."); if($_FILES["dosyam"]["type"]!="image/pjpeg") die("Sadece jpg dosyasi gonderebilirsiniz"); $dosyaYeriveAdi='./resimler/'.basename($_FILES["dosyam"]["name"]); $sonuc=move_uploaded_file($_FILES["dosyam"]["tmp_name"],$dosyaYeriveAdi); if ($sonuc==true) { echo "Dosya basari ile aktarildi<br/>"; echo "<img width=\"20\" height=\"20\" src=\"".$dosyaYeriveAdi."\">"; } else die("Yazma sikintisi var"); ?> Dosyaat.html <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="yukle.php" method="post" enctype="multipart/form-data"> Dosya:<input type="file" name="dosyam"/><br/> <input type="submit" value="Yukle"/> </form> </body> </html>

29 $_SESSION Amacı: Değişkenleri bir sayfadan diğerine aktarabilmek, kullanıcıları sayfa değişimi yaparken tanıyabilmek. Sessionyaz.php dosyasında isim adında bir session değişkeni oluşturuyoruz. Bu session değişkenşinin bilgisi ancak ve ancak aynı oturum boyunca (browser’i kapamadan) linki tıklayıp veya adres satırından sessionoku.php dosyasını çalıştırdığımızda isim session değişkeninin değerini okuyabiliriz. sessionyaz.php <?php @session_start(); // eger otomatik başlatılmamışsa hersayfadaki ilk komut olarak yazılmalıdır. $_SESSION['isim']='Emre'; ?> <a href="sessionoku.php"> tıklayın isim değişkeninin değeri diğer sayfada görünsün.</a> sessionoku.php echo $_SESSION['isim'];


"Fonksiyonlar ve Küresel Değişkenler" indir ppt

Benzer bir sunumlar


Google Reklamları