28 Haziran 2016 Salı

Site Yapısı ve Float Özelliği

HTML KISMI

<!DOCTYPE html>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
      />
<title>Untitled Document</title>
<link href="stil.css" rel="stylesheet" type="text/css"/>
</head>
<body>

   
    <div id="genel">
        <header>BURASI HEADER</header>
        <div class="orta ">
            <div class="sol ">
                <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
                <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
                <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
                <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
                 <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
                <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
                 <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
                <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
                 <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
                <div class="kutu">
                    <h3>Ürün1</h3>
                    <p>Yinelenen bir sayfa içeriğinin okuyucunun dikkatini dağıttığı bilinen bir gerçektir. Lorem Ipsum kullanmanın amacı, sürekli 'buraya metin gelecek, buraya metin gelecek' yazmaya kıyasla daha dengeli bir harf dağılımı sağlayarak okunurluğu artırmasıdır. Şu anda birçok masaüstü yayıncılık paketi ve</p>
               <a href="#">Detaya git</a>
                </div>
            </div>
              <div class="sag   ">
                  <ul>
                      <li><a href="#">Liste1</a></li>
                    <li><a href="#">Liste1</a></li>
                     <li><a href="#">Liste1</a></li>
                </ul>
              </div>
             
              <div class="temizle"></div>
        </div>
        <footer>BURASI FOOTER</footer>
       
    </div>
 
       
</body>
</html>

CSS KISMI

#genel header{
   
    border-width:1px ;
        border-style:solid;
    border-color:red;
    padding:50px;
}

#genel div.orta{
   
    border:1px solid red;
    padding:10px;
}

#genel footer{
   
    border:1px solid blue;
    padding:20px;
}

div .orta div.sol{
   
    background-color: yellow;
    float:left;
    width: 900px;
}
div .orta div.sag{
   
   border:1px solid green;
   float:right;
   width:300px;
}
div .temizle{
    clear:both;
   
}
div .orta .kutu{
   
    background-color: pink;
    width:200px;
    float:left;
    margin:10px;
   
}

CSS CLEAR ÖZELLİĞİ

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
    <title>TODO supply a title</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style type="text/css">
body {
background-color: #b5bac0;
}
.urun{
    width: 326px;
    height: 360px;
    background-color: #2c6dbc;
    float:left;
}
.urun.farkli{
 
    background-color: aquamarine;
}
.urun.farkli2{
 
    background-color: bisque;
}
.alt-bilgi{
    background-color: deeppink;
    width: 900px;
    height: 200px;
    clear:both;
}
</style>
   
</head>
<body>
<div class="urun">BİRİNCİ ÜRÜN</div>
<div class="urun farkli">iKİNCİ ÜRÜN</div>
<div class="urun farkli2">ÜÇÜNCÜ ÜRÜN</div>

<div class="alt-bilgi">Buraya altbilgiler gelecek</div>
</body>
</html>

26 Haziran 2016 Pazar

Css'de Clear Kullanımı

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
      />
<title>Untitled Document</title>
<style>
    .anadiv{
     
        width:650px;
        border:2px solid red;
        padding:15px;
    }
    .oyuncek{
        width:100px;
        height:100px;
        background-color: blue;
        color:#fff;
        font:16px arial;
        text-align: center;
        float:left;
        margin-right:6px;
        margin-bottom: 5px;
    }
    .temizlesol{
   clear:left;
    }
</style>
</head>
<body>
    <div class="anadiv">
     
     <div class="oyuncek">OYUN</div>
     <div class="oyuncek">OYUN</div>
     <div class="oyuncek">OYUN</div>
      <div class="oyuncek">OYUN</div>
     <div class="oyuncek">OYUN</div>
     <div class="oyuncek">OYUN</div>
      <div class="oyuncek">OYUN</div>
     <div class="oyuncek">OYUN</div>
     <div class="oyuncek">OYUN</div>
       <div class="oyuncek">OYUN</div>
     <div class="oyuncek">OYUN</div>
      <div class="oyuncek">OYUN</div>
       <div class="oyuncek">OYUN</div>
        <div class="oyuncek">OYUN</div>
         <div class="oyuncek">OYUN</div>
          <div class="oyuncek">OYUN</div>
           <div class="oyuncek">OYUN</div>
            <div class="oyuncek">OYUN</div>
             <div class="oyuncek">OYUN</div>
              <div class="oyuncek">OYUN</div>
               <div class="oyuncek">OYUN</div>
                <div class="oyuncek">OYUN</div>
                 <div class="oyuncek">OYUN</div>
                  <div class="oyuncek">OYUN</div>
                   <div class="oyuncek">OYUN</div>
                    <div class="oyuncek">OYUN</div>
                     <div class="oyuncek">OYUN</div>
                   
       <div class="temizlesol"></div>
    </div>
 
 
 
     
</body>
</html>

Css'de Float Kullanımı 2

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
      />
<title>Untitled Document</title>
<style>
    .kirmizidiv{
     
        width:811px;
        border:3px solid red;
     
    }
     .yesildiv{
     
        width:529px;
        border:3px solid green;
        float:left;
    }
    .mavidiv{
     
        width:262px;
        border:3px solid blue;
        float:right;
    }
    .anaicerik{
        width:490px;
        height:600px;
         border:3px solid #666;
    }
   .yandiv{
      width:200px;
      margin-bottom: 15px;
      height:170px;
        border:3px solid #000;
    }
</style>
</head>
<body>
    <div class="kirmizidiv">
     
     
        <div class="yesildiv">
     
        <div class="anaicerik"></div>
       
        </div>
     
     
        <div class="mavidiv">
            <div class="yandiv"></div>
            <div class="yandiv"></div>
            <div class="yandiv"></div>
            <div class="yandiv"></div>
            <div class="yandiv"></div>
        </div>
     
     
        <div id="temizle" style="clear:left;"></div>
        <div id="temizle2" style="clear:right;"></div>
    </div>
 
 
 
   
     
</body>
</html>

Css'de Float Kullanımı

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
      />
<title>Untitled Document</title>
<style>
    .kutu{
     
        width: 100px;
        height:100px;
        border:1px solid #000;
        background-color:#666666;
        font:26px arial;
        color:#FFFFFF;
        margin-left:5px;
       float: left;
    }
</style>
</head>
<body>
    <div class="kutu">KUTU</div>
    <div class="kutu">KUTU</div>
    <div class="kutu">KUTU</div>
    <div class="kutu">KUTU</div>
   
     
</body>
</html>

25 Haziran 2016 Cumartesi

PHP ve GÜVENLİK

PHP ve GÜVENLİK
Ġlk konularda anlatıldığı üzere internetin iletiĢim
protokolü olan TCP/IP protokolü güvenlikten daha çk
verinin iletilmei amacına yönelik tasarlanmıĢtı. ĠĢte bu
yüzden web ortamında güvenlik inert yaygınlaĢtıkça
büyük sorun olmaya baĢladı. Çünkü çk çeĢitli sebeplerle
internet siteleri, buları yayınlayan web sunuculara
saldırılır oldu, o da yetmez gibi web sunuculardaki we
server programları, iĢletim sistemleri hedef tahtasına
kondu. Günümüzde
 Merakını gidermek ve öğrenmek
 Kendini test etmek
 Bir yerlerden okuduğu bir yöntemi yada kodu
denemek
 Yazılımı geliĢirenlere ―sizin ürününüzü kırdım, bunu
daha güvenli yapın, ben sizden daha akıllıyım‖
mesajı vermek
 KiĢisel egosunu tatmin etmek
 Yazılımların güvenlik açıklarına dikkati çekmek
 Edindiği sisteme sızma yollarını yada önemli
bilgileri para karĢılığı satmak
 Rakibine ait bilgileri ele geçirmek
Gibi çok çeĢitli sebeplerle sistem güvenliğine saldırı
olabilir. Üstelik sadece iyi niyetli olmayan kiĢilere karĢı
değil, ne yaptığını tam bilmeyen Web ziyaretçilerini de
düĢünmek ve PHP programlarının güvenliğini arttırmak
gereklidir.
Internet ve iyiniyet bir arada olmaz. Size tuhaf gelsede
içinde güvenlik açığı olan bir kodu yada programı ortaya
bırakırsanız birisi yada birileri bunu mutlaka
kullanacaktır.
Sunucu güvenliği de son derece önemlidir ancak bunu
sağlamak genellikle tasarımcının sorumluluğunda değil
hosting Ģirketinin sorumluluğundadır. Ancak sitedeki
kodların ve vasa veritabanının güvenliği haliyle siteyi
tasarlayanın sorumluluğundadır.
Zararlar ne türde olabilir;
 Sayfanız baĢa yerlere yönlendirilebilir
 Sayfalarınız silinebilir veya değiĢtirilebilir
 Sitedeki açık yardımıyla sunucu çökertilebilir
 Site veritabanlarında bulunan kredi kartı
numaraları ve telefon numaraları, email adresleri
gibi özel bilgiler baĢkalarının eline geçebilir
Bunun dıĢında birde insan faktörü ile hata yapan
ziyaretçilerin hatalarının kontrol edilmesi gerekir. Mesela
elektronik posta adresini yazmak isteyen kiĢi yanlıĢlıkla
@ yerine q yazabilir yada iki @ iĢaretiyle yazabilir, adresi
eksik yada hatalı yazabilir. Formu eksik doldurabilir. Bu
gibi durumlarda hatayı sonradan düzeltmek zaman
kaybına yol açar. Kimi zaman eksik verilmiĢ bir bilgi bu
bilgileri iĢleyecek olan diğer programda hataya yol
açabilir. Bu sebeple, özellikle Form yoluyla alınan
bilgilerin kontrol edilmesi ve doğrulanması önemlidir.
Form doğrulama iki yerde yapılabilir. Ziyaretçi yani
istemci tarafından yada sunucu tarafında. Kullanıcı
tarafındaki, yani ziyaretçiye göndereceğimiz HTML
sayfasının içinde yer alan kodlarla yapacağımız kontrol
ve doğrulama sunucuya bağlantı gerekmediği için tabiî ki
hızlı çalıĢacaktır.
Kullanıcı gönder düğmesini tıkladıktan sonra çok
beklemesi gerekmez. Ancak bildiğiniz gibi HTML kodları
herkesçe kolayca görülebilirler. Bu durumdan anlamamız
gereken konrol ve doğrulama iĢlemini yapan kodlarında
görüntülendiğidir. Bunları inceleyen kötü nietli ve bilgili
biri kodunuzun açıklarını kullanarak zararlı kod
gönderebilir. Bu kontrol iĢleminin sunucu tarafında
yapılması ise zaman, hız ve trafik geniĢliğinden kayıp
demek olsada güvenlik açısından daha etkindir.
Kullanıcı her gönder düğmesinde gönder düğmesini
tıkladığında sunucu tarafı verilen kodlara göre bilgileri
doğrular ve eksik kısımları bildirerek tekrar giriĢ ister. Bu
gerektiğinde 4-5 defa git-gel-doğrula iĢlemine yol açar
ama sonuçta önemli olan güvenliktir.
PHP ayrıca mevcut hemen hemen bütün sunucu kullanıcı
kimlik doğrulama protokolleri ile uyumludur; ve sunucu
yönetimi ile iliĢki kurularak daha karmaĢık kullanıcı
kimlik doğrulama yöntemleri uygulanabilir. Bu yöntemler
arasında Secure Socket Layer (SSL) yöntemlerini, ve
OpenSSL ve ModSSL teknikleri sayabiliriz.

Php'de Basit Sözlük Yapımı

Basit Sözlük
Yukardaki örnekte yine ufak bir değiĢiklik yaparak aynı
programı bu defa basit bir sözlük olarak kullanabiliriz.
Verilerin yine CSV formatında ve hazır olduğunu
varsayalım (internette hazır halde bir sürü kelime listesi
çeĢitli formatlarda bulunmaktadır. Dolayısı ile bu
uygulamayı Ģirket için bir sözlük olarak kullanmanız
mümkündür). AĢağıdaki örnek verileri inceleyecek
olursak;
yes;evet
no;hayır
evet;yes
hayır;no
name;ad,isim
ad;name
isim;name
bu yapıda bir veri ile hem Ġngilizce hem Türkçe sözlük
olarak aĢağıdaki 30-40 satırlık programı
kullanabileceğimizi görürüz. örnek koda geçelim;
<html>
<head>
<title>CSV arama</title>
<META Http-Equiv="Pragma" Content="no-cache">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-9" />
<meta name="keywords" content="Csv" />
</head>
<body>
<?
if (!$_POST):
{?>
<Form Action="<?$PHP_SELF?>" Method="POST">
<tr><td colspan=2 align=center style="fontcolor:
red;"> Basit Sözlük </td></tr>
<tr><td> Kelimeyi Giriniz </td> <td><input
type="TEXT" name="sozcuk"></td></tr>
<tr><td> <input type="SUBMIT" value
="ARA"></td></tr>
</table>
</form>
<?}
else :
$sozcuk=$_POST['sozcuk];
$dosya="dosya.csv";
$baglan=fopen($dosya,'r');
if (!$baglan)
{
echo "baglanti kurulmadı";
exit();
}
else
{
echo "tabloya baglandi <br>"; }
while (!feof($baglan))
{
$satir=fgetcsv($baglan,filesize($dosya),";");
//echo $satir[0]; okuyor mu kontrol için kullanabiliriz
if ($satir[0]==$sozcuk)
{
$varmi=true;
break;
}
}
if ($varmi)
{
echo "<b>$satir[0]</b> kelimesinin anlamı:
<b>$satir[1]</b>";
}
else {echo "kelime dosyada mevcut değil "; }
endif;
?>
</body>
</html>
Bu kodda da tek dosya içinde hem form hemde formu
iĢleyen kod verilmiĢtir. Program ilk kez çalıĢtığında
$_POST dizi değiĢkeni boĢ olacağından, programın form
kısmı ekrana verilmekte ve numarası aranan kiĢinin
girilmesi istenmektedir. Bilgi girilip butona tıklandığında
ise $_POST bu sefer dolu olacağından programın formu
iĢleyen kısmı yani bu ismi arayan kısım çalıĢacaktır.
Arayan kısımda ise sıra ile satırlar fgetcsv ile okup
parçalanmakta ve soldaki ilk bilginin yani parçalandıktan
sonra dizinin [0]. elemanının forma girilen bilgiye eĢit
olup olmadığı kontrol edilmektedir. EĢitlik sağlandığında
döngü kırılmaktadır aksi takdirde numara bulunsa bile
dosya bitene kadar döngü sürecektir.

Php'de Basit Telefon Rehberi Yapımı

Basit Telefon Rehberi
Yukardaki örnekte ufak bir değiĢiklik yaparak aynı
programı bu defa basit bir telefon rehberine çevirebiliriz.
Rehberin yine CSV formatında ve hazır olduğunu
varsayalım; aĢağıdaki örnek veriler ıĢığında
Ahmet;05335333355
Mehmet;0542542442
örnek koda geçelim;
<html>
<head>
<title>CSV arama</title>
<META Http-Equiv="Pragma" Content="no-cache">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-9" />
<meta name="keywords" content="Csv" />
</head>
<body>
<?
if (!$_POST):
{?>
<Form Action="<?$PHP_SELF?>" Method="POST">
<tr><td colspan=2 align=center style="fontcolor:
red;"> Telefon Rehberi </td></tr>
<tr><td> Ġsim giriniz</td> <td><input type="TEXT"
name="isim"></td></tr>
<tr><td> <input type="SUBMIT" value
="ARA"></td></tr>
</table>
</form>
<?}
else :
$isim=$_POST['isim'];
$dosya="dosya.csv";
$baglan=fopen($dosya,'r');
if (!$baglan)
{
echo "baglanti kurulmadı";
exit();
}
else
{
echo "tabloya baglandi <br>"; }
while (!feof($baglan))
{
$satir=fgetcsv($baglan,filesize($dosya),";");
//echo $satir[0]; okuyor mu kontrol için kullanabiliriz
if ($satir[0]==$isim)
{
$varmi=true;
break;
}
}
if ($varmi)
{
echo "<b>$satir[0]</b> isimli kiĢinin telefon numarası
: <b>$satir[1]</b>";
}
else {echo "numara bulunamadı"; }
endif;
?>
</body>
</html>
Bu kodda da tek dosya içinde hem form hemde formu
iĢleyen kod verilmiĢtir. Program ilk kez çalıĢtığında
$_POST dizi değiĢkeni boĢ olacağından, programın form
kısmı ekrana verilmekte ve numarası aranan kiĢinin
girilmesi istenmektedir. Bilgi girilip butona tıklandığında
ise $_POST bu sefer dolu olacağından programın formu
iĢleyen kısmı yani bu ismi arayan kısım çalıĢacaktır.
Arayan kısımda ise sıra ile satırlar fgetcsv ile okup
parçalanmakta ve soldaki ilk bilginin yani parçalandıktan
sonra dizinin [0]. elemanının forma girilen bilgiye eĢit
olup olmadığı kontrol edilmektedir. EĢitlik sağlandığında
döngü kırılmaktadır aksi takdirde numara bulunsa bile
dosya bitene kadar döngü sürecektir.

Php'de Kullanışlı Bir Örnek Kayıt Arama

KullanıĢlı Bir Örnek Kayıt Arama
Öğrenci Notlarını Webde Yayınlama
PHP ile birbirine benzer yapıda dizayn edilmiĢ ancak
günlük hayatta kullanılabilecek örnekler yapalım. Ġlk
örnek öğrenci notlarını web sitesinden yayınlamak olsun.
Öğrenci notlarının CSV formatında bir dosyada
tutulduğunu ve bu dosyanın hazır olduğunu varsayarak;
aĢağıdaki örnek veriler ıĢığında
542;62
543;78
544;45
545;52
örnek koda geçelim;
<html>
<head>
<title>CSV arama</title>
<META Http-Equiv="Pragma" Content="no-cache">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-9" />
<meta name="keywords" content="Csv" />
</head>
<body>
<?
if (!$_POST):
{?>
<Form Action="<?$PHP_SELF?>" Method="POST">
<tr><td colspan=2 align=center style="fontcolor:
red;"> Not arama</td></tr>
<tr><td> No</td> <td><input type="TEXT"
name="no"></td></tr>
<tr><td> <input type="SUBMIT" value
="ARA"></td></tr>
</table>
</form>
<?}
else :
$no=$_POST['no'];
//echo $no; deger aliyormu kontrol için
$dosya="dosya.csv";
$baglan=fopen($dosya,'r');
if (!$baglan)
{
echo "baglanti kurulmadı";
exit();
}
else
{
echo "tabloya baglandi <br>"; }
while (!feof($baglan))
{
$satir=fgetcsv($baglan,filesize($dosya),";");
//echo $satir[0]; okuyor mu kontrol için kullanabiliriz
if ($satir[0]==$no)
{
$varmi=true;
break;
}
}
if ($varmi)
{
echo "<b>$satir[0]</b> numaralı kiĢi :
<b>$satir[1]</b> almıĢtır";
}
else {echo "numara bulunamadı"; }
endif;
?>
</body>
</html>
Yukardaki kodda Ģimdiye kadar gördüğümüz bir çok bilgi
bir araya getirilmiĢtir. Her Ģeyden önce programda tek
dosya içinde hem form hemde formu iĢleyen kod
verilmiĢtir. Program ilk kez çalıĢtığında $_POST dizi
değiĢkeni boĢ olacağından, programın form kısmı ekrana
verilmekte ve notu aranan öğrenci numarasının girilmesi
istenmektedir. Bilgi girilip butona tıklandığında ise
$_POST bu sefer dolu olacağından programın formu
iĢleyen kısmı yani bu numarayı arayan kısım çalıĢacaktır.
Arayan kısımda ise sıra ile satırlar fgetcsv ile okup
parçalanmakta ve soldaki ilk bilginin yani parçalandıktan
sonra dizinin [0]. elemanının forma girilen bilgiye eĢit
olup olmadığı kontrol edilmektedir. EĢitlik sağlandığında
döngü kırılmaktadır aksi takdirde numara bulunsa bile
dosya bitene kadar döngü sürecek ve web sunucuya
adeta iĢkence çektirecektir.

24 Haziran 2016 Cuma

Php'de Dizilerle işlem Yapan Fonksiyonlar

Dizilerle ĠĢlem Yapan Fonksiyonlar
Php dilinde dizilerle iĢlem yapmak üzere geliĢtirilmiĢ bir
çok fonksion hazır gelmektedir. Bu fonksiyonlarla dizileri
birleĢtirmek, sıralamak veya bazı elemanlarını silmek
mümkündür.
array_merge() fonksiyonu- (Dizileri birleĢtirme)
Ġki veya daha fazla dizinin bütün elemanlarını
birleĢtirerek, ortaya yeni bir dizi çıkartır. array_merge()
iĢleminde en çok dikkat edilmesi gereken nokta
birleĢtirilen dizilerin değiĢmeden korunmuĢ olmasıdır.
Örnek:
<?
$dizi1 = array ("A" , "B" , "C" , "D");
$dizi2 = array ("E" , "F" , "G" , "H");
$dizison = array_merge ( $dizi1, $dizi2);
// döngü içinde yeni diziyi yazdıralım
foreach ( $dizison as $eleman2 )
{
print (" $eleman2 <br>");
}
?>
Ġkinci dizinin bütün elemanları, birinci dizinin
elemanlarının arkasına eklenmiĢtir. array_merge()
iĢlemi, çok-boyutlu iliĢkili dizilere de uygulanabilir; PHP
iki dizideki uyumlu-uyumsuz, yani birinde olan diğerinde
olmayan bütün anahtar+değer çiftlerini yeni dizide de
oluĢtur.
array_push() fonksiyonu–(Dizilere değiĢken ekleme)
Bir diziye yeni değiĢkenler eklemek için, array_push()
fonksiyonuna eklemenin yapılacağı dizinin adını ve yeni
değerleri yazarız. Örnek:
<?
$dizi1 = array ("A" , "B" , "C" , "D");
$dizison = array_push($dizi1, "E", "F", "G");
// döngü içinde yeni diziyi yazdıralım
foreach ( $dizi1 as $eleman2 )
{
print (" $eleman2 <br>");
}
?>
array_shift() fonksiyonu–(Dizinin ilk elemanını silme)
Dizi tipine sahip bir değiĢkenin ilk elemanını tümüyle
silmek için array_shift() fonksiyonu kullanılır. Bu
fonksiyona sadece birinci elemanı silinecek dizinin adını
vermek yeterlidir.
$silinen_deger = array_shift ($diziadi);
array_slice() fonksiyonu – (Diziden kopyalama)
Bir dizi-değiĢkenin bütün elemanları yerine belirli bir
bloğunu kullanmak gerekirse bunu array_slice()
fonksiyonu ile almak mümkündür. Bu fonksiyona kaynak
dizinin adı, kopyalamanın baĢladığı yer ve kaç adet
değiĢken alınacağı argüman olarak verilir.
<?
$dizi = array ( "A" , "B" , "C" , "D", "E" , "F" , "G" , "H");
$kopya = array_slice ($dizi , 2, 4);
?>
Burada, PHP'ye $kopya adlı yeni oluĢturulacak dizi tipli
değiĢkene, $dizi adlı dizinin 2‘nci değerinden itibaren (2
dahil) 4 değeri alıp yerleĢtirmesi bildirilmektedir. Orijinal
dizi aynen korunmaktadır. Elemanlar yeni yeni
oluĢturulan diziye kopyalanmaktadır
sort() ve rsort() fonksiyonları-(Dizileri sıralama)
Bir dizinin içindeki değerleri sıralamak için sort()
fonksiyonu kullanılır. Bu fonksiyon küçükten büyüğe
sıralama yapar. Bunu tersine çevirmek içinse rsort()
fonksiyonu (reverse yada revert) kullanılır.
Sıralama iĢleminde dikkat edilecek konu bu
fonksiyonların Türkçe uyumlu sıralama yapmamasıdır.
Ayrıca sıralanacak diziler birden fazla boyutlu ise bu
fonksiyonlar doğru sonuç vermez. Bunların yerine asort()
ve ksort () kullanılır.
asort() ve ksort() fonksiyonları-(ĠliĢkili dizileri sıralama)
Bu dizilerin normal dizilerden farkı değerlerinin birde adı
olmasıdır. Değerlerin adına anahtar (key- ksort
fonksiyonun adındaki k harfi buradan gelmektedir)
denir. Bu tip bir diziyi elemanların değerlerine göre
sıralamak için asort(), değerlerin anahtar adlarına göre
sıralanması isteirse ksort() kullanılır.
<?
$dizi=array(a1=>"Ali", a2=>"AyĢe" , a3=>"BüĢra" ,
a4=>"Betül");
asort ($dizi);
$dizi2=array(a1=>"Ali", a2=>"AyĢe" , a3=>"BüĢra"
,a4=>"Betül");
ksort ($dizi2);
?>
Program Durdurma Fonksiyonları
exit() fonksiyonu (kodun çalıĢmasını durdurmak)
Bir PHP fonksiyonunu istediğimiz anda durdurabiliriz.
Ancak genelde bu iĢlem belirli koĢulların sağlanması
durumunda yapılır. Kodun bir kontrolün sonucuna göre
kendisinden beklenen iĢi yapamaması halinde oracıkta
durdurulmasını exit() fonksiyonu sağlar. Bu fonksiyona
ekranda görüntülenmesini istediğimiz bir metni
parametre olarak verebiliriz. Eğer bu ifade bir metinse
ekrana basılır.
die() fonksiyonu (kodun çalıĢmasını durdurmak)
Bu fonksiyon teknik anlamda exit fonksiyonu için bir alias
olduğundan iĢlevleri aynıdır. "Öl!" anlamına gelen bu
fonksiyona ekranda görüntülenmesini istediğimiz bir
metni parametre olarak verebiliriz. Eğer bu ifade bir
metinse ekrana basılır.
eval() fonksiyonu (kodun çalıĢmasını durdurmak)
Bu fonksiyonda ilk ikisine benzer. Ancak aldığı parametre
PHP kodu ise bu php kodunu çalıĢtırır.
Bu fonksiyonlar genel itibarı ile önemli durumlarda
kurulacaktır. Örneğin bir MYSQL veritabanına bağlantı
kurulmadığında buradaki bir tablodaki kayıtları
listeleyemeyiz. Bu durumda die(‗Mysql bağlantısı
kurulamadı‘) fonksiyonun tabiî ki kullanacağız ancak
Ģimdilik kafa karıĢıklığı olmasın diye basit kullanım örneği
görmek daha mantıklı olacaktır. Örneğin aĢağıdaki kod
bir dosyayı açmaya çalıĢıyor ancak dosya açılında bir
sorun varsa kod deyim yerindeyse intihar ediyor. Dosya
açma fonksiyonu ilerde görülecektir. Ancak önemli olan
die() fonksiyonunun kullanım Ģeklidir.
<?php
$dosyaadi = fopen( "benimdosyam.txt" , 'a' ) or die
("Dosya açılırken bir sorun oluĢtu!") ;
?

Php'de Fonksiyon Kavramı ve Kategorilere Göre PHP Fonksiyonları

Fonksiyon Kavramı ve Kategorilere Göre PHP
Fonksiyonları
Fonksiyonlar bir kod blokunu otomatik olarak yazmak
üzere tasarlanmıĢ program parçacıklardır. Bir dilin
fonksiyon sayısının fazla olması yanında bunların iyi
organize edilmiĢ olmasıda önemlidir. Programlama
dillerinde normalde fonksiyonlar derleyici içine kodlanmıĢ
olurdu.
Ġlk olarak PASCAL dili ile bir yenilik geldi. Dilin sadece
sintaks yapısını tanımlayıp fonksiyonları harici
kütüphanelerden kullanmak. Böylece dillerin komut
setlerini geniletme olanağı getirilmiĢ oldu. Örneğin dilin
kendisinde olmayan bir fonksiyonu kendiniz yazıp bunu
PHP nin içinde hep varmıĢ gibi kullanabiliriz.
Çağrılan bir fonksiyon ya kendisinden beklenen iĢi yapar,
ya da kendisini çağıran iĢleme veya fonksiyona bir değer
sunar. Buna fonksiyondan dönen değer denir. Örneğin
bir dosyanın var olup olmadını test eden bir fonksiyon
yazdığımızı düĢünelim, dönen sonuç TRUE ise dosyanın
zaten var olduğunu gösterecek Ģekilde kodlayabiliriz.
False ise dosya yok anlamına gelecektir. (iĢin aslı bu
fonksiyonu yazmamıza gerek yoktur çünkü PHP dilinde
bu iĢi yapan hazır bir fonksiyon zaten vardır).
Fonksiyonları çeĢitli baĢlıklarda ele alacağız.
 DeğiĢkenlerle iĢlem yapan fonksiyonlar
 Program kodunu durduruma fonksiyonları
 Tarih Zaman bilgisiyle iĢlem yapan fonksiyonlar
 Matematiksel fonksiyonlar
Metin ĠĢleme fonksiyonları
 Veri ġifreleme fonksiyonları
 Düzenli Ġfade (Regular expressions) fonksiyonları
 Uzantı yönetimi
 Kendi fonksiyonlarımızı yazmak
 Kendisini çağıran, değiĢken, ve geri çağırımlı
fonksiyonlar
DeğiĢkenlerle ĠĢlem Yapan Fonksiyonlar
PHP dilinde değiĢkenler istenildiği anda
tanımlanabilmektedir. Öte yanda PHP dilinin büyük küçük
harf ayrımı yapmasada değiĢken tanımlanırken dikkatli
olunmasını gerektirir. Yine aynı Ģekilde eğer çok büyük
dizilerle çalıĢıyorsak bu dizilerin iĢi bitince hafızadan
atılması gerekir ki web sunucu hafıza boĢ yere dolup hızı
düĢmesin.
isset() fonksiyonu (değiĢkene değer atanmıĢ mı kontrol
etmek)
isset() fonksiyonu, PHP'nin bir değiĢkenin içinde değer
bulunup bulunmadığını kontrol etmesini sağlar. Eğer geri
dönen değer true ise bu değiĢkene bir değer atanmıĢ
demektir.
<?php
if (isset($sayi)) {
print( $sayi );
}
else {
print (―sayi degiskeni bir değer içermiyor‖);
}
?>
unset() fonksiyonu (değiĢkeni hafızadan atmak-yok
etmek)
unset() fonksiyonu varolan bir değiĢkeni yok eder.
Böylece bu değiĢkenin kullandığı alan boĢ hafıza
miktarına eklenir. Ġyi bir programlamada unset() ile
değiĢkenler yok edilmelidir. Çünkü bu web sunucuya
büyük rahatlık getirecektir.
<?php
if (isset($sayi)) {
echo ( $sayi );
}
else {
unset($sayi);
}
?>
empty() (DeğiĢken boĢmu)
Bu fonksiyon isset() fonksiyonunun tersidir. AĢağıdaki
Ģartlar oluĢursa true değer dönderir aksi tatirde ise false
sonuç üretmektedir.
 Bir değiĢkene henüz değer atanmamıĢsa
Değeri sıfır ise
 DeğiĢken ―‖ yani boĢ alfanümerik (null string) ise
empty() fonksiyonu true sonuç üretmektedir.
<?
$sayi = 10;
echo empty($sayi); // 0 azacak sayı boĢ değil 10
$isim = ""; // 1 yazacak isim boĢ
echo empty($isim);
?>
is_string(), is_integer(), is_double() fonksiyonları ile tip
tespiti
Parametreleri olan değiĢkenin tipine göre true yada false
sonuç dönderirler. is_string string tipi, is_integer()
tamsayılar ve is_double fonksiyonuda ondalıklı sayılar
için true değer üretir.
<?php
$a = 3.14;
//$a = ―Ali‖; // burası Ģimdilik yorum satırı
//$a = 14; // burası Ģimdilik yorum satırı
if (is_double($a)) {
print ("A ondalıklı sayıdır<br>");
}
if (is_string ($a)) {
print ("A String'dir<br>");
}
if (is_integer($a)) {
print ("A tamsayıdır<br>");
}
?>
Bu kod, tarayıcı penceresine değiĢkeni tipine göre ilgili
print ile tanımlanan metni yazdıracaktır. Bu program
parçası Browser penceresine sadece empty()
fonksiyonun doğru sonuç verdiği birinci echo() deyiminde
1 yazdıracaktır.
is_array() ve is_object fonksiyonları ise sırasıyla
değiĢkenin tipi dizi yada nesne ise true değer üretirler.
Burada bu konu hakkında detaya girilmeyecektir.
Bu fonksiyonları tümü ilerde göreceğimiz Kullanıcı
Verilerini Doğrulama konusunda iĢe yarayacaktır.
Örneğin kullanıcıya maaĢını soran bir kutucuğa kullanıcı
―bin ytl‖ yazarsa, doru yazması konusunda uyarılarda
bulunmak üzere yapaılacak kontrollerde bu
fonksiyonlardan yararlanılacaktır.
print_r () fonksiyonu
Bu fonksiyon parametre olarak aldığı değiĢken ve içeriği
hakkında bilgi verir. Bu değiĢken bir dizi ise dizinin
elemanlarıda buna dahildir.
<?php
$abc=456;
print_r($abc);
?>
Bu fonksiyon diziler konusunda daha detaylı
örneklenecektir.
DeğiĢken Tiplerini DönüĢtürme ve DeğiĢken Tipini
Öğrenme
PHP dili ile bir değiĢkenin değerini referans alarak baĢka
tipte yeni bir değiĢken tanımlamak mümkündür. Bir
değiĢkenin doğrudan doğruya kendisinin tipini değiĢtirme
iĢlemi ise settype fonksiyonu yapılır. Settype sonraki
konularda incelenecektir. AĢağıdaki kod ile type-casting
iĢlemi yapılarak yeni bir değiĢken tanımlanmıĢtır.
<?php
$ad = "Ġbrahim";
$sayi = (integer)$ad;
echo $sayi;
?>
Önce bir string değiĢken tanımlanmıĢ daha sonra ise bu
değiĢken referans alınarak sayi adında tamsayı bir
değiĢken dönüĢümü yapılmıĢtır. Burada dönüĢüm
ifadeleri olarak
 DeğiĢkenin tipinin mantıksal olması için BOOL
 DeğiĢkenin tipinin alfanümerik olması için STRING
DeğiĢkenin tipinin tamsayı olması için INTEGER
 DeğiĢkenin tipinin ondalıklı sayı olması için FLOAT
ifadeleri kullanılabilir.
Metin değiĢkenleri çevirirken çok dikkat etmek gereklidir.
Metin ifadeler sayıya çevirilirken baĢında sayı varsa
bunlar alınır, geri kalanlar yoksayılır. Eğer değiĢken sayı
ile baĢlamıyor ise çevrim sonucu 0 kabul edilir. Örneğin
yukardaki örnek kod 0 değerini verecektir.
gettype() fonksiyonu (DeğiĢken tipini alma)
Bir değiĢkenin değerinin türü hakkında bilgi almak için bu
fonksiyon kullanılabilir.
<?php
$sayi1 = 101;
print("Birinci değiĢkenin adı: \$sayi1<br>");
print("Değeri : "); print "$sayi1<br>";
print("Türü : "); print gettype( $sayi1 ) ;
//tamsayi/integer
print "<br>"; print "<br>";
$str1k = "Tuncay";
print "Ġkinci değiĢkenin adı: \$str1<br>";
print "Değeri : "; print "$str1<br>";
print("Türü : "); print gettype( $str1 ) ;
//alfanümerik/string
print "<br>"; print "<br>";
$pi = 3,14;
print "Üçüncü değiĢkenin adı: \$pi<br>";
print "Değeri : "; print "$pi<br>";
print("Türü : "); print gettype( $pi ) ;
//çift,ondalık sayı/double
print "<br>"; print "<br>";
$logical = true;
print "Üçüncü değiĢkenin adı: \$logical<br>";
print "Değeri : "; print "$logical<br>";
print("Türü : "); print gettype( $logical ) ;
//mantıksal/boolean
print "<br>"; print "<br>";
?>
PHP için mantıksal olarak doğru anlamına gelen True
Değeri 1 olarak varsayılmaktadır. PHP'de bir fonksiyon,
elde ettiği değer doğru ise sonuç olarak 1 değerini verir.
settype() fonksiyonu (değiĢekene bir tip atama)
Bu fonksiyon bir değiĢkenin kendisinin tipini değiĢtirmeye
imkan verir. Ancak dönüĢüm iĢlemi istemeyen
sonuçlarda üretebilir. Bu bakımdan değiĢkenlerin
değerlerine dikkat etmek gerekir.
http://alikoker.name.tr
HTML-CSS–PHP–MYSQL ve SQL Derleme : Ġbrahim Halil Kutluay- 2007-2013
244
<?php
$pi = 3.14;
print("DeğiĢkenin değeri : "); print "$pi<br>";
print("Türü : "); print gettype( $pi )
; //çift,ondalık/double
print "<br>"; print "<br>";
print "değiĢtirme iĢlemi:<br>";
settype( $pi, string ); //alfanümerik/string
print "Değeri : "; print "$pi<br>";
print "<br>"; print "<br>";
?>
Bu programı çalıĢtırdığımızda, ilk atadığımız değerin
ondalık bir sayıdır. Bu değerin türünü alfanümerik/string
olarak değiĢtirdiğimizde içeriğim korunduğunu
görüyoruz. Fakat tamsayıya döndürme iĢlemi yapılsaydı
PHP değerin tamsayı bölümünü alıp, ondalıklı kısmını
atacaktır. Daha sonra bu tamsayı değiken yeniden
ondalıklı sayıya çevrilese bile bu ondalık kısmı ilk
değeriyle elde etmek mümkün değildir. Mantıksala
dönüĢüm yapılır ise içeriği 0 olmayan tüm değerler True
olarak geri döner. 0 olanlar içinse False değerini verir.
 Ondalık sayılar tamsayıya çevrilirken ondalık kısmı
atılır (3.14 –>3)
http://alikoker.name.tr
HTML-CSS–PHP–MYSQL ve SQL Derleme : Ġbrahim Halil Kutluay- 2007-2013
245
 Tamsayılar ondalık sayıya çevrilirken .00 ondalık
eki getirilir. (3->3.00)
 Bir ondalıklı sayı tamsayıya çevrildikten sonra
tekrar ondalıklı sayıya çevrilse bile ilk ondalıklı
kısım geri getirilemez
 Boolean tipe çevrilen ve 0 ve null dıĢında bir değer
içeren tüm değerler true olarak dönerler.
<?
$dene=‖selam‖;
$bul=true;
$son=2000;
echo gettype($dene);//tip öğrenme iĢlemi, ekrana string
yazacaktır
settype($bul,string);//tip değiĢtirme iĢlemi, tipi stringe
cevirir
echo gettype($bul);//ekrana string yazacaktır
$tampon=(integer) $dene;//tip kopyalama iĢlemi tipi
integer‘e çevirir.
echo $dene;//ekrana 0 yazacaktır.
?>

Php'de Başka Bir Dosyayı İthal Etme

Başka Bir Dosyayı İthal Etme
PHP dilinde kod ithalini sağlayan dört fonsiyon vardır. Bu
fonksiyonlarla baĢka dosyalarda bulunan kodları o an
çalıĢan dosyaya ekleyebiliriz. Bu fonksiyonlara bir
bakalım;
include() fonsiyonu
Adı verilen dosyayı kodun içine orada imiĢ gibi ekler ve
çalıĢtırır. Dosya yoksa sadece bir uyarı verir ve kodun
geri kalanını çalıĢtırmaya devam eder. Include()
fonskyionu geriye bir değer dönderebilir.
require() fonksiyonu
require fonksiyonu iĢlev olarak include() ile temelde
aynıdır yani adı verilen dosyayı kodun içine orada imiĢ
gibi ekler ve çalıĢtırır. Include() ile olan farkı ise adı
verilen bu dosyanın bulunanaması durumunda görülür.
Require dosyayı bulamazsa programı ―öldürür‖. Require
(kelime anlamı gerekli demektir) dosyanın olmasını ―ġart
KoĢar‖ dosya yoksa kod çalıĢtırılmaz ta ki dosya yerine
konulana kadar. Require () geriye değer döndürmez.
include_Once ve require_Once
Bir liste oluĢturur ve dahil edilen dosyaların adını bu
listede tutarak her dosyanın sadece bir kere dahil
edilmesine izin verirler. AĢağıda ki örneği inceleyelim
<?php
print 'Birinci dosya foo\n';
include 'iki.php';
print 'Birinci dosya bitti\n';
?>
Buda ikinci dosyanın kodu:
<?php
print 'Kontrol ikinci dosyada \n';
?>
<?php
print 'Birinci dosya foo\n';
require 'iki.php';
print 'Birinci dosya bitti\n';
?>
<?php
print 'Birinci dosya foo\n';
include_once 'iki.php';
print 'Birinci dosya bitti\n';
?>
<?php
print 'Birinci dosya foo\n';
require_once 'iki.php';
print 'Birinci dosya bitti\n';
?>
Inclue ve Require kullanırken bu komutların iĢletim
sistemine göre değiĢik davrandıklarını unutmamak
gerekir. Çünkü Unix türevi iĢletim sistemleri (Linux,
Bsd,Sun solaris) Büyük-küçük harf ayrımı olan
sitemlerdir. Windows gibi davranmazlar. Örneğin
<?php
include 'dosya.php';
include 'Dosya.php';
include 'DoSya.php';
include 'dosYa.php';
?>
Yukardaki kod Windows iĢletim sisteminde adı geçen 4
dosyayıda aynı dosya olarak ele alır çünkü harf ayrımı
yoktur. Oysa Linux bir server üstünde ise bu 4 dosyada
ayrı dosyalar olarak aranacak ve bulunamazsa hata
verielcektir. Bu bakımdan altın kural dosya isimlerini her
zaman küçük harf olarak kullanmaktır.
Bazen include için parametre olarak döngü değerleride
kullanılabilir. Örneğin aĢağıdaki dosyada 1 den 99‘ a
kadar bir döngü ile dosyalar include () ile eklenecektir.
<?php
for ( $i = 1 ; $i <= 99 ; ++$i) {
include ("beniekle" . $i . ".x");
?>
include() ve türevlerindeki güvenlik açığı
include kullanırken dosya uzantılarına dikkat etmek
gerekir. Örneğin include edilecek dosya adını adres
satırından parametre olarak geçirdiğimizi farzedelim.
Dosya uzantısı da ―txt‖ olarak verilmiĢ olsun. Bu
durumda örneğin ―ekle.php?dosyaadi=beniekle.txt‖
değeri ile iĢlem yaptığımızı farzedelim. Dikkatli bir
kullanıcı adres satırına o dosya adını yazacak olursa txt
dosyanın içeriğini görür. Helede bu dosayada parola vs
bilgiler varsa tehlike çok daha büyük olabilir.
include() ile Kodun Yeniden Kullanımı
Mysql ile ilgili fonksionlar daha sonra görülecektir ancak
bu arada sadece mantığın anlaĢılması açısında bir örnek
vermekte gerek var. Bir okul programı düĢünelim.
Öğretmenler kaydedilir, listelenir, silinir. Keza öğrenciler,
dersler, okul bilgileri, notlar, devamsızlıklar içinde aynı
iĢlemler yaplıacaktır. Bu iĢlemler için veritabanına eriĢip
iĢlem yapılacak yüzlerce ayrı programcık gereklidir. Bu
kod parçalarının her birinde en az bir defa mecburen
Mysql‘e bağlanmak, daha sonra veritabanını seçmek için
gerekli kodlarda yazılmalıdır. Ġnclude olmadan tek çare
bu kodları gerekli her yerde tek tek yazmaktır. include()
kullanılır ise bu kod bir kere yazılır ve her yerde çağrılır.
ġimdi Ģunu diyebilirsiniz bu sonuçta iĢletilen kod satırını
düĢürmez. Bu konuda haklısınız evet include sonuçta
kodu orda imiĢ gibi alıp ilgili yere ekler. Ancak düĢünkü
Ģifre değiĢti bu durumda ne olacak ? include kullanan kiĢi
sadece ilgili dosyayı açıp değiĢtirecek ve tüm değiĢikliği
bitirecek, kodu here yere giren kiĢi ise tüm kodları
dolaĢıp değiĢiklikleri elle yapacak daha sonra acaba
unutulan bir yer varmı diye birde kontrol edecektir. Oysa
include ile sadece bir yerde bağlantı yeniden kuruluyor
ise iĢlem bitmiĢ demektir.
HEREDOC Nedir
Heredoc PHP içinde çok uzun metinleri zahmetsizce
yazmaya yarayan bir yetenektir. Heredoc ile uzun
metinler oluĢturulabilir, kendi metin sonu etiketimizi
oluĢturabiliriz. ġu kodu inceleyelim;
<?php
$metin = <<<son
Burada biraz PHP içinde metin örneği var.
Bu alanda tamamen özgürüz
bu alanda ―çift tırnak‖ yada ‗tek tırnak2 kullanmaktada
özgürüz
Artı $degiskenler gibi kullanımda cabası
Bu değiĢkenler iĢlem sırasında içerdikleri değeri
alacaklardır,
son kelimesini istediğiniz yere yazabilirsiniz. ġu anda
sonladırma etiketi o
ancak aĢağıdaki gibi değil:
son;
?>

23 Haziran 2016 Perşembe

Php'de Döngü Kavramı

Döngü Kavramı
Döngüler bir kod yada kod blokunun belirli Ģartlara göre
tekrar edilmesini sağlayan program parçalarıdır. ġöyle
düĢünelim. 1 den 100 ‗ e kadar sayıların toplamını
bulmak istiyoruz. Döngüler olmasa sırasıyla sayıları yazıp
toplayacaktık. Oysa döngüler ile bu iĢlemi çok daha
basit yapabiliriz. PHP dilinde iki tip döngü vardır. KoĢulun
durumuna göre tekrar eden While ve belirli sayıda tekrar
eden FOR döngüleri.
For Döngüsü
Bir kod satırını yada blokunu belirli sayıda tekrar eder.
<?php
for ($i = 1; $i < 100; $i = $i + 1) {
print "Sayı $i\n";
}
?>
Yukardaki örnekte 1 ile 100 arasındaki sayılar ekrana
yazdırılmaktadır. Dikat edilecek nokta ise koĢuldur. Bu
döngüle yazdırılan son sayı 99 dur.
<?php
// or dongusu iĢlemleri billi bir sayıda tekrarlar
// sayacı kendi artırıp eksilttiğinden sonsuz döngü riski
yoktur
/*for ( döngü değiĢkeni; koĢul ; artıĢ basamağı ) {
KoĢul doğru ise yapılacak iĢlere iliĢkin komutlar
} */
for ($sayac = 1; $sayac <= 7 ; $sayac++ ) {

// 1 den baĢlayarak 7 olana dek artır
print ("<font size= $sayac >");
print ("<b><p>Milli takım gittikçe
büyüyor!</b></p>");
print ("</font>");
}
?>
Yukardaki döngüde yazının büyüklüğü döngü ile birlite
artacaktır ve 7 olunca döngü sona erecektir. For döngüsü
sayıyı kendi artırdığından normal Ģartlar altında While
döngülerinde sonsuz döngü riskini barındırmaz. Ancak
kullanıcı adeta sabotaj yapar gibidöngünün içinde iken
döngü sabitine çıkıĢ değerinden küçük bir değer atarsa
döngü çıkıĢ değerine hiç gelemez ve sonsuz döngüye
girer. AĢağıdaki örneği deneyecek kadar gözünüz kara
ise en azından önce çalıĢmalarınızı kaydedin.
<?php
for ($sayac = 1; $sayac <= 7 ; $sayac++ ) {
// 1 den baĢlayarak 7 olana dek artır
print ("<font size= $sayac >");
print ("<b>Milli takım gittikçe
büyüyor!</b><br>");
print ("</font>");
// $sayac=3; // bu satır açıklama satırı
olmasaydı sonsuz döngüye girecekti.
}
?>
While Do Döngüsü
While döngüsü for döngüsünden farklı olarak önce bir
koĢulu kontrol edecek koĢul doğru ise döngü komutlarını
çalıĢtıracaktır. Örneğin ;
<?php
$sayac = 1;
while ( $sayac <= 7 ) {
print ("<font size= $sayac >");
print ("<b>Milli takım gittikçe
büyüyor!</b><br>");
print ("</font>");
$sayac ++; // bu iĢlem yapılmazsa program
sonsuz döngüye girer.
} ?>
Yukardaki gibi döngüler kodlanırken dikkat edilmesi
gereken noktalar vardır. Bunlardan en önemlisi ise koĢul
bir sayaç ise artırma iĢlemin unutulmamasıdır. Örneğin
yukarda döngüde sayaç değiĢkenini artırmayı unutmuĢ
olsaydık, sayaç asla 7 olamayacak ve program sonsuz
döngüye girecekti. Döngü içinde yanlıĢlıkla sayaca
koĢuldan büyük değer atasaydık, program döngüden o
anda çıkacaktı.
Do While Döngüsü
Do While döngüsü While döngüsünün tersi mantıkla
çalıĢır. Önce döngü blokunu çalıĢtırır daha sonra ise Ģartı
kontrol eder.
<?php
$sayac = 1;
do {
print ("<font size= $sayac >");
print ("<b>Milli takım gittikçe
büyüyor!</b><br>");
print ("</font>");
$sayac ++; // bu iĢlem olmazsa kodumuz sonsuz
döngüye girer
}
while ( $sayac <= 7 ) ;
?>
Yukardaki döngüyü incelediğinizde Ģunu göreceksiniz.
Sayaç değiĢkenine ilk atanan değer 100 olsa bile döngü
1 defa çalıĢıp daha sonra duracaktır. Do While
döngüsünün çalıĢma prensibi budur. Do while
döngüsünde While satırının sonunda noktalı virgül
olduğuna ―;‖ dikkat etmelisiniz. Aksi taktirde derleme
hatası alırsınız.
While ve Do While döngüleri özellikle dosyalarla ve
veritabanı tabloları ile iĢlem yaparken faydalıdır.
Örneğin, ―oku, iĢle, dosya sonuna gelince dur‖ yada
―dosya sonu değilse, oku, iĢle‖ Ģeklinde kullanılırlar ve
metin dosyalarının yada veritabanı tablolarının baĢından
sonuna iĢlem yapılacağı durumlarda iĢe yararlar.
For .. Each Döngüsü
Bir dizi yada küme değiĢkeninin sahip olduğu indisler
boyunca döngü kurulmasını sağlar. Örneğin ;
<?php
// for each dizi elemanları boyunca tekrarlar aslında
dizideki sayıyı bulup for ilede bu iĢlemi yapabiliriz
$adlar = array (
1=>"Ali",
2=>"Ömer",
3=>"Mehmet",
4=>"ihsan",
5=>"Ahmet",
6=>"Ġbrahim");
foreach ($adlar as $deger)
{echo $deger . "<br>";}
?>
Burada döngü dizinin elemanlarını sırasıyla ekrana
yazacaktır. Eğer isteseydik count() fonksiyonu ile dizinin
eleman sayısını bulup bu sayı kadar çalıĢacak for
döngüsü de kurabilirdik
<?php
// for each dizi elemanları boyunca tekrarlar Ģüphesiz
dizideki sayıyı bulup for ilede bu iĢelmi yapabiliriz
$adlar = array (
1=>"Ali",
2=>"Ömer",
3=>"Mehmet",
4=>"ihsan",
5=>"Ahmet",
6=>"Ġbrahim");
for ($i=1;$i <=count($adlar);++$i)
{echo $adlar[$i] . "<br>";}
?>
Döngüyü Kırmak için Break Komutu
Bazen durumun gerektirdiği üzere döngünün çalıĢmasını
kırmak gerekir. Bu durumlarda break komutu
kullanılmalıdır. Break komutunu daha önce switch
blokundada incelemiĢtik. Buradaki iĢlevi ise döngünün
artık tekrarlanmadan kırılmasıdır. Döngü kırılınca,
program döngünün bir sonraki satırından devam eder.
<?php
for ($sayac = 1; $sayac <= 100 ; $sayac++ ) {
// 1 den baĢlayarak 7 olana dek artır
print ("<font size= $sayac >");
print ("<b><p>Fenerbahçe gittikçe
büyüyor!</b></p>");
print ("</font>");
if ($sayac== 7){echo "sayac Ģu an 7 bu dongu
burada kırılacak"; break;}
// burada sayı 7 olunca dongu kırılacak kısaca
sayac asla 8 olamayacak
}
?>
Yukardaki döngüde döngü sayacına göre yazı büyüklüğü
verilmektedir. Ancak bu HTML de maksimum 7
olduğundan 7 olduğundan döngü kırılması sağlanmıĢtır.
Aslında döngüyü sadece 7 ye kadar da kurabilirdik ama
burada break komutunun iĢlevini görmek için bu Ģekilde
ayarlandı.
Yine aynı Ģekilde bir döngü boyunca kullanıcıdan bilgi
sorulduğunu düĢünün örneğin 200 defa. Kullanıcı sıkıldığı
anda belirli bir sayı girip döngüyü kırabilmelidir.
Döngüyü Devam Ettirme : Continue
Bazı durumlarda döngüyü kırmak yerine bir sonraki
duruma geçmek gerekir. Örneğin Ģöyle bir problem
düĢünün. Sırayla notları alacağız ve notlar 100‘ den
büyükse iĢlem yapmadan bir sonraki iĢleme geçeceğiz.
<?php
for ($sayi=1; $sayi <= ogrenci sayısı; $sayi++ ) {
if ( $puan >100 ) continue; // 100 den buyuk
not olmaz. Bir sonraki notu soracak
print ("$sayi,$puan");
print ("<br>");
}
?>
Döngü Ġçinde Döngü Kullanımı
Kodlamaya dikkat edilirse döngüler birbiri içinde
kullanılabilir. Dikkat edilmesi gereken konu gereksiz
iĢlemlerin döngü içine sokulmamasıdır. Ayrıca bu
döngüleri çinde Break komutunun kullanımda biraz daha
detaylıdır. Break burada kullanılırsa sadece en yakındaki
göngüyü kırar.
for ($i = 1; $i < 3; $i = $i + 1) {
for ($j = 1; $j < 4; $j = $j + 1) {
for ($k = 1; $k < 3; $k = $k + 1) {
print "I: $i, J: $j, K: $k\n";
}
}
}
Ekran görüntüsü Ģöyle olacaktır.
I:1,J:1,K:1
I:1,J:1,K:2
I:1,J:2,K:1
I:1,J:2,K:2
I:2,J:1,K:1
I:2,J:1,K:2
I:2,J:2,K:1
I:2,J:2,K:2
Yukardaki örneğe break komutunu eklersek;
for ($i = 1; $i < 3; $i = $i + 1) {
for ($j = 1; $j < 4; $j = $j + 1) {
for ($k = 1; $k < 3; $k = $k + 1) {
print "I: $i, J: $j, K: $k\n";
break;
}
}
}
Ekran çıktısı Ģöyle olacaktır:
I:1,J:1,K:1
I:1,J:2,K:1
I:2,J:1,K:1
I:2,J:2,K:1
Döngü ve Kontrol Bloklarında PHP ve HTML
Ġç içe Kullanım
PHP dili bizlere ekrana çıktı verme imkanı tanımıĢtır
ancak bunu gereksiz yere kullanmak sadece balyozla
sinek avlamaya benzer. Örneği incelediğimizde durum
daha iyi anlaĢılacaktır;
<?php
if ($a == $b) {
print "Devam edip giden kod satırları ";
print "Devam edip giden kod satırları ";
print "Devam edip giden kod satırları ";
...[devam]...
print "Devam edip giden kod satırları ";
print "Devam edip giden kod satırları ";
print "Devam edip giden kod satırları ";
}
?>
Burada yaptığımız hata Ģu; madem PHP ve HTML iç içe
yazılabiliyor o halde koĢul sağlandığından çalıĢan print
komutları yerine koĢul sağlandığından PHP blokundan
çıkıp HTML diline geçip ekrana yazıları öyle yazdırsak
nasıl olur ?
<?php
if ($a == $b) {
?>
Devam edip giden kod satırları
Devam edip giden kod satırları
Devam edip giden kod satırları
[….devam…..]
Devam edip giden kod satırları
Devam edip giden kod satırları
Devam edip giden kod satırları
<?php
}
?>
ġimdi hem kodumuz aynı iĢi yapıyor hem kod daha
okunur halde üstelikte PHP gereksiz yere ekrana Ģunu
yazdırağım diye uğraĢmıyor.

Php'de if komutu

if komutu
Doğadaki her Ģey sebepler – sonuçlar üzerine kuruludur.
Örneğin gök gürlüyorsa - yağmur yağacak, benzin
yoksa-araba duracak gibi. Programlarda bunun gibi
koĢullara göre farklı iĢlemler yapmak üzere tasarlanırlar.
Örneğin alıĢveriĢ yaptınız, aldığınız Ģey ; ekmek ise KDV
%1, temizlik maddesi ise %18, lüks tüketim ise %25,
temel gıda ise %8 olarak hesaplanacaktır. Burada
program mantığıda Ģu olmalıdır.
Kontrole baĢla
Eğer alınan ekmek ise KDV %1 hesapla
Eğer ekmek değilse kontrol et
temel gıda ise KDV % 8 hesapla
Eğer temel gıda değilse kontrol et
PHP programında if deyimi bunu sağlar. Kelime anlamı
eğer olan if deyimi ile programımızı karar almaya zorlar
ve bu duruma göre değiĢik kısımların yürütülmesini
sağlarız. If PHP dilinin ayrılmıĢ kelimelerinden (reserved
words) birisidir. (Nerdeyse tüm dillerde if reserved word
olup karĢılaĢtırma için kullanılır)
if ( koĢullar ) {
koĢullar doğru ise yapılacak iĢlere ait komutlar
}
elseif (diğer koĢullar) {
diğer koĢullar doğru ise yapılacak iĢlere ait komutlar
}
else {
diğer her durumda yapılacak iĢlere ait komutlar
}
PHP, if ifadesinde verilen koĢulu doğru olarak hesaplarsa,
ifadeye ait ilk süslü parantezin içindeki komutları
çalıĢtırır; bu Ģartlar doğru değilse, elseif deyimi ile
verebileceğimiz baĢka bir grup koĢulun doğru olup
olmadığını sınayabiliriz. Bu koĢullar yerine geliyorsa,
PHP, elseif bölümündeki komutları çalıĢtırır. Eğer tüm
koĢullar sağlanmadığı takdirde çalıĢtırılmasını istediğimiz
komutlar varsa onlarıda else bölümünde belirtiriz. if
koĢulu doğru değilse, koĢula ait komutları es geçer ve
varsa elseif deyiminin koĢullarını test eder; elseif bölümü
yok fakat else bölümü varsa bu bölümdeki komutları
çalıĢtırır. Deyimde else bölümü de yoksa, PHP koĢul
sağlanmadığında if komutundan bir sonraki komuta
geçerek programı iĢletmeye devam eder.
<?php $yasi = 10;
if ( $yasi == 10 ) {
echo ("yaĢınız 10 çocuksunuz. ‖);
}
elseif ($yasi == 18 {
echo ("yaĢınız 18. gençsiniz");
}
elseif ($yasi == 35 {
echo ("yaĢınız 35 yolun yarısındasınız");
}
else {
echo ("Bu if blokunda sadece 10,18 ve 35
değerleri kontrol edilmektedir!");
}
?>
if komutundan sonra elseif yada else ifadesi kullanılacak
diye bir zorunluluk yoktur.
if ( $sifre == "" ) { echo ("Parola girmediniz.
Lütfen parola giriniz. ― }
Yukardaki if komutunda sifre değeri boĢ ise program
uyarı verecek boĢ değilse hiç bir Ģey yapmadan bir
sonraki komuta geçerek devam edecektir.
$vize1 = 35;
$final1 = 75;
if ($vize1 >= 60 && $final1 >= 60) {
print ("Geçti!");
}
else {
print ("Kaldı!");
}
if-endif Kullanımı ve PHP ile HTML Kodunu Ayırma
PHP dilinde if kullanımın baĢka bir Ģekilde if-endif
Ģeklindeki kullanımdır. Bu Ģekilde bir kullanımla kod
blokları bibirinden ayrılır. Bu özellikle grup çalıĢmalarında
önemlidir. Çünkü bir kiĢi HTML kodu yazarken diğer PHP
üzerinde çalıĢabilir. AĢağıdaki örneği ―ifendif.php‖ adıyla
kaydedelim ve kodu deneyelim.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<html>
<head>
<title>if endif Form deneme</title>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1254">
</head>
<body>
<?
$islem=$_POST[‗islem‘];
$ad=$_POST[‗ad‘];
$soyad=$_POST[‗soyad‘];
if ($islem == 1): ?>
Merhaba <b><? echo ucfirst($ad) . " " . ucfirst($soyad)
?></b>,<br>
Siteye hoĢgeldiniz.
</body>
</html>
<? exit; ?>
<? endif; ?>
<form action="ifendif.php" method="post">
<input type="hidden" name="islem" value="1">
Kendinizi tanıtın lütfen ?
<table>
<tr><td>Adınız:</td><td><input type="text"
name="ad"></td></tr>
<tr> <td>Soyadınız:</td><td><input type="text"
name="soyad"></td></tr>
<tr><td colspan=2><input type="submit"
value="Gönder‖></td></tr>
</table>
</form>
</body>
</html>
Yukarda örnekte görüldüğü gibi aynı php sayfası iĢlem
değiĢkeni tanımsız ise bir form görüntülemekte ve bu
formun submit kısmında ise kod kendini yeniden
çağırmakta. Ancak form kısmında iĢlem değiĢkeni değer
aldığından bu defa karĢılama mesajı görünür. Ancak exit
komutu kullanımına özellikle dikkat edilmelidir. Aksi
takdirde form görüntülenecektir. Buna benzer bir
kullanımı if else ile de sağlamak tabiî ki mümkündür.
Endif
If blokunun sonlandığını göstermektedir. Yukarıdaki
örnekte kullanımı verilmiĢtir.
switch komutu
If komutunun yazılıĢa dikkat ettiyseniz elseif ve else
deyimleri kullanıldığı zaman programın ardı ardına birden
çok kontrole girmesi gerekir. Bu tip iĢlemleri
hızlandırmak için PHP‘de birde switch kontrol bloku
kullanımı getirilmiĢtir. Switch blokundan çıkıĢ için break
(kır) komutu kullanılır. Örnek kodu bir inceleyelim;
<?php
$Name = "Ahmet";
if ($Name == "Ali") {
print "Adınız Ali \n";
} else {
if ($Name == "Veli") {
print "Adınız Veli \n";
} else {
if ($Name == "Ahmet") {
print "Adınız Ahmet \n";
} else {
if ($Name == "Mehmet") {
print "Adınız Mehmet \n";
} else {
print "Adınızı bilmiyorum!\n";
}
}
}
}
?>
Gördüğünüz gibi gerekirse isim değerini tespit için tüm
kontroller yapılmak zorundadır. ĠĢte bunu önlemek için
Switch kullanılırsa hem kodumuz daha okunur hale gelir
hemde kontroller hızlanır.
switch ( değiĢken ) {
case KOġUL-1 ; KoĢul-1 doğru ise yapılacak
iĢlemler
break;
case KOġUL-2 ; KoĢul-2 doğru ise yapılacak
iĢlemler
break;
case KOġUL-3 ; KoĢul-3 doğru ise yapılacak
iĢlemler
break;
case KOġUL-4 ; KoĢul-4 doğru ise yapılacak
iĢlemler
break;
......................
......................
default:
diğer durumların tümünde yapılacak iĢlemler
}
break komutunu kullanmak zorunlu değildir. Ancak break
kullanılmazsa koĢullardan birisi sağlanmıĢ ve iĢletilmiĢ
bile olsa PHP diğer koĢullarıda kontrol etmeye devam
edecek daha da garibi varsa default blokunuda
çalıĢtıracaktır. Bu sadece zaman israfı demek
olduğundan break komutunun kullanılması programımıza
hız kazandıracaktır.
ġimdi ilk örneğimizi yeniden yazalım;
$Name = 'Ahmet;
switch($Name) {
case "Ali": print "Adınız Ali \n"; break;
case "Veli": print "Adınız Veli \n"; break;
case "Ahmet": print "Adınız Ahmet \n"; break;
case "Mehmet": print "Adınız Mehmet \n"; break;
default: print "Adınızı bilmiyorum!\n";
}
switch ( $KDV ) {
case 1 ; echo ("ekmek <br>") ; break;
case 8 ; echo ("Temel gıda <br>") ; break;
case 18 ;echo ("genel ürünler <br>") ; break;
case 25; echo ("lüks tüketim <br>") ;break;
default: echo ("böyle bir KDV oranı
tanımlanmamıĢtır <br>") ;
}
PHP bu kodu yürütürken KDV adlı değiĢkenin değerini
kontrol edecektir. Değeri 1 ise ilk koĢul gerçekleĢecek ve
kodumuz ekrana ―ekmek‖ yazacak ve break ifadesini
gördüğü için switch blokundan komple çıkarak swicth
blokundan sonraki ilk komutla yoluna devam edecektir.
Break komutu olmasaydır. 8,18, ve 25 olma durumlarıda
gereksiz yere kontrol edilecek, daha sonrada hiç alakası
yokken default blokunu çalıĢtırıp ekrana ekrana birde
―böyle bir KDV oranı tanımlanmamıĢtır‖ yazıp öylece
çıkacaktı. Bu bakımdan switch kullanılırken uygun
yerlerde bra komutlarının kullanılması gereklidir
diyebiliriz.
Tek KoĢula Göre Ġki Sonuç - Üçlü Operatör
(Ternary Operatör)
Bir değiĢkenin değerini sadece tek bir koĢul için kontrol
etmek için switch blokunu uzun uzadıya kodlamak
gerekmez. Bu iĢlemi soru ve iki nokta üstüste iĢaretleri
(? ... :) olarak yazılan operatör ile yapabiliriz. Örneğin,
sayfadaki ziyaretçi parolasını girdiyse bir hoĢ geldin
mesajı girmediyse bir uyarı görüntülemek istiyoruz.
$ikaz = ($sifre == "" ) ? "Parolanızı giriniz lütfen" :
"Sayfamıza hoĢgeldiniz " ;
echo ($ikaz);
Burada ikaz değiĢkeninin içeriği sifre değiĢkenine bağlı
olarak atanacaktır. ġifre boĢ ise ilk kısım, değilse
teĢekkür mesajı atanacaktır. Zaten bu operatöre Ternary
denmesinin sebebi üç parametre birden almasıdır. KoĢul,
doğru ise sonuç, yanlıĢ ise sonuç değerleri.
<?php $yasstr = ($yas < 18) ? 'çocuk‟ :
'yetiĢkin‟;
?>

Php'de Operatörler

Operatörler
Operatörler kullanıldıkları dile, atama, aritmetik iĢlemler
ve karıĢılatırma gibi yetenekler kazandıran sembollerdir.
PHP dilinde en çok kullanılan operatör ―=‖ operatörüdür.
Değer atamak için kullanılır. PHP getirdiği yazım
kolaylıklarından biriside hem atama hem iĢlem
yapılabilmesidir. Örneğin:
print ( $Fiyat = 1000 ) ;
ifadesinde olduğu gibi, bir fonksiyonun içinde de hem
atama iĢlemi yapılabilir; hem de iĢlem yürütülebilir.
PHP'nin aritmetik, birleĢik-atama (combined assigment),
birleĢtirme, karĢılaĢtırma ve mantıksal sınama
operatörleri vardır.
Aritmetik Operatörler:
+ Toplama 6+5 = 11
- Çıkartma 6-5 = 1
/ Bölme 6/5 = 1.2
* Çarpma 6*5 = 30
% Kalan
(Modulus)
6%5 = 1
Aritmetik iĢlemleri gerçek sayılarla yaptığımız gibi,
tuttuğu değer sayı olan değiĢkenlerle de yapabiliriz.
Daha önce, PHP'de değiĢken tanımlarken ve bunlara
değer atarken sayı olan değiĢkenleri tırnak iĢareti
kullanmadan, alfanümerik değiĢkenleri ise tırnak içinde
yazdığımızı hatırlayacaksınız. Bu, geleneksel hale gelmiĢ
olan bir programcılık alıĢkanlığıdır. PHP, tırnak
kullanmasanız da bir değiĢkenin sayı olup olmadığını
anlar; daha sonra bu değiĢkenlerle aritmetik iĢlem
yapabilir. PHP ayrıca rakamla baĢlayan alfanümerik
değiĢkenleri sayı olarak kullanmaya kalktığınızda, bu
değerin baĢındaki bütün rakamları sayı olarak kabul
eder. PHP açısından harf veya iĢaretle baĢlayan
alfanümerik değiĢkenlerin sayı olarak değeri sıfırdır.
Örnek:
$a = 6;
$b = "22/A"
print ($a + $b)
sonuç olarak 28'i verecektir; veya
$a = 6;
$b = "a/22"
print ($a + $b)
sonuç olarak 6 çıkacaktır. Bu küçük örnekler, PHP ile
program yazarken hangi değiĢkenin ne sonuç vermesi
gerektiğini dikkatle düĢünmek zorunda olduğunuzu
göstermiĢtir sanırım. Bir kiĢinin maaĢı ile baba adını
toplamak istemezsiniz doğal olarak ama bununla birlikte
elimizde bir kiĢinin adı ve soyadı ayrı değiĢkenler halinde
ise, bunları birbirine ekleyerek (concatenation) ortaya
yeni bir alfanümerik değiĢken çıkartabiliriz:
<?php $ad = "Ġbrahim Halil";
$soyad = "Kutluay";
$adi_soyadi = $ad . " " . $soyad;
print ("<br>");
print ($adi_soyadi);
print ($ad . "'nın soyadı " . $soyad . "'dir.")
?>
Gördüğünüz gibi alfanümerik değiĢkenleri ekleyerek yeni
bir değiĢken elde edebilmenin yanında, değiĢkenlerin
değerlerinide birbirlerinin sonuna eklememizde mümkün.
Son satırdaki araya konula nokta iĢaretiyle (.) bu iĢlem
yapılmaktadır. Bu iĢlemciyle sadece değiĢkenlerin
değerlerini değil sıradan metin değerlerinide birbirine
ekleyebiliriz:
<?php print ("Ġlim Çinde bile olsa; " . "..." . "arayıp
bulunuz..! ")
?>
BirleĢik Atama Operatörleri
Bu kodlama sistemi PHP diline C dilinde alınmıĢ kodlama
tekniklerindendir. Normalde bir çok dilde örneğin A
değiĢkeninin değerini 10 artır denildiğinde A=A+10
Ģeklinde kodlanır. ġüphesiz bu kod PHP içindede
geçerlidir. Ancak istenirse aĢağıdaki tabloda görüldüğü
gibi birleĢik-atama iĢlemide yapılabilir.
İşlem
ci
Örnek Anlamı
+= $a += 25 $a = $a + 25
-= $a -= 25 $a = $a – 25
/= $a /=25 $a = $a / 25
*= $a *= 25 $a = $a * 25
%= $a %= 25 $a = $a % 25
.= $a .=
"metin"
$a = $a"
metin"
Bu iĢlemi zihnimizde, "A değiĢkeninin mevcut değerine
25 ekle, çıkan sonucu A değiĢkenin yeni değeri yap!"
Ģeklinde canlandırabiliriz.
Bir Arttırmak veya Azaltmak için
Değerleri sadece 1 arttırmak veya azaltmak için PHP, bir
kolaylık sağlar:
$sayi++ veya ++$sayi: $sayi‘nin değerini 1
arttırır;
$sayi-- veya --$sayi: $sayi‘nin değerini 1
eksiltir.
++ veya -- iĢaretinin değiĢken adından önce veya sonra
olmasına göre artırma yada eksiltme iĢleminin önceliği
değiĢir. ĠĢaretler değiĢkenin adından önce ise PHP önce
değiĢkenin değerini bir arttırır veya eksiltir, sonra bu
yeni değeri iĢleme katar; iĢaretler değiĢken adından
sonra ise, PHP değiĢkenin o andaki değerini iĢleme
kadar, sonra değeri bir arttırır veya eksiltir.
Kontrol Blokları ve KarĢılatırma Operatörleri
Kontrol blokları programlama dilleri açısından olmazsa
olmaz ögelerdendir. Çünkü bir programın koĢullara
uygun olara değiĢik iĢler yapabilmesi için kod
yazılabilmesini sağlarlar. PHP dilinde kontrol blokları
oluĢturmak için if ve switch kullanılır. Ancak if ve switch
için olmazsa olmazĢarn aĢında karĢılaĢtırma operatörleri
gelir. ġimdi bunları görelim.
KarĢılaĢtırma Operatörleri
PHP'nin karĢılaĢtırma yapması için kullandığımız
iĢlemciler iĢlem iĢaretinin sağı ve solundaki değerleri
veya değiĢkenlerin değerlerini iĢaretin belirttiği
karĢılaĢtırmayı yaptıktan (öncelik sırasına göre) sonra
ortaya ya doğru (true) ya da yanlıĢ (false) sonucunu
çıkartırlar. Söz gelimi, değeri 26 olan değiĢkenin 25'ten
büyük olup olmadığını sınarsak, sonuç doğru; 25'ten
küçük olup olmadığını sınarsak sonuç yanlıĢ çıkacaktır.
PHP'nin karĢılaĢtırma iĢlemcileri Ģunlardır:
İşlemci Örnek Örnek $a=26 ise:
== eĢitse $a ==
25
YanlıĢ/False
!= eĢit değilse $a != 25 Doğru/True
=== aynı ise $a ===
25
YanlıĢ/False
> büyükse $a > 25 Doğuru/True
< küçükse $a < 25 YanlıĢ/False
<= küçükse veya
eĢitse
$a <=
25
YanlıĢ/False
>= büyükse veya
eĢitse
$a >=
25
Doğru/True
PHP'nin karĢılaĢtırma iĢlemcileri hem tam ve ondalık sayı
türü değerlerle, hem de alfanümerik değerlerle
kullanılabilir. KarĢılatırma ve kontrol ifadeleri hem zaman
bu kadar basit olmaz. Örneğin bir kiĢinin ehliyet
alabilmesi için hem Trafik, hem Motor hemde Ġlkyardım
derslerinin tümünden 70 veya üzerinde not alması
gerektiği gibi.
Motor 70 - Trafik 70 – Ġlkyardım 69 = kalır
(yanlıĢ/false)
Motor 79 - Trafik 80 – Ġlkyardım 90 = geçer
(doğru/true)
PHP dilinde iki veya daha fazla koĢulu birden kontrol
edeceksek araya aĢağıdaki tablodaki operatörlerden
birisini koymak gerekir.
PHP'de bu karĢılaĢtırmayı iki grubun arasına koyduğumuz
iĢaretlerle yaparız. Operatörlerin iĢlem önceliği kuralı
burada geçerlidir.
İşlemci Adı Anlamı Örnek
|| Veya sol veya sağ
doğru
Doğru ||
yanlıĢ =
doğru
Or Veya sol veya sağ
doğru
Doğru ||
yanlıĢ =
doğru
&& Ve sol ve sağ
doğru
Doğru ||
yanlıĢ =
yanlıĢ
And Ve sol ve sağ
doğru
Doğru ||
yanlıĢ =
yanlıĢ
Xor ġartlıveya
Sadece sol
veya sağ doğru
Doğru ||
yanlıĢ =
doğru
! Değil sol veya sağ
yanlıĢ
Doğru ||
yanlıĢ =
doğru
Dikkatinizi çektiyse "veya" ve "ve" sınamaları için tabloda
iki operatör bulunmaktadır. Ve için (and ve &&), Veya
için (or ve ||). Yukarıda operatörlerin önceliğinden
bahsetmiĢtik. Bu çiftlerin amacı önceliği değiĢtirmektir.
Bu konuyu biraz açmamız gerek. PHP‘ de en yüksek
öncelik her zaman ―!‖ operatörünündür. Daha sonra ise
parantez içine alınmıĢ ifadeler gelir. Çünkü öncelikle bu
iĢaretin değeri hesaplanmalıdır ki kontrol edilecek
değerler ortaya çıksın. Öte yandan mantığa göre ―and‖
operatörü ―or‖ operatöründen önceliklidir. Yani bir
cümlede hem ―and‖ hem ―or‖ kullanılmıĢ ise önce ―and‖
kontrol edilerek ifade iĢlenmeye baĢlanır. Bunun
önceliğini değiĢtirmek için ―or‖ yerine ―||‖ kullanılır ise bu
defa ―||‖ ifadesi ―and‖ operatöründen önce kontrol
edilecektir.
Burası biraz karıĢık gibi gelsede iĢlemcinin mantığı bu
yöndedir. Onun için en uygun Ģey birden fazla koĢul
olduğu zaman hangi koĢul önce iĢlenecekse o koĢulu
parantez için almaktır. Parantez açma kapama sırası çok
önemlidir. O bakımdan geliĢmiĢ bir editör iĢinizi
kolaylaĢtırabilir. Çünkü günümüz editörleri parantezleri
uygun sırada ayrı renklerde bile gösterebilir.
ĠĢlem Önceliği Sıralaması
2. ++ ve --
3. / * %
4. + -
5. < <= => >
6. == === | =
7. &&
8. ||
9. = += -= /= %= .=
10. and
11. xor
12. or

Php'de Nesneler (Objects) ve Sabit Değerler

Nesneler (Objects)
NYP yani Nesneye Yönelik Progamlama programlama
dünyasında çığır açan bir tekniktir. Ġngilizce OOP olarak
ifade edilir ve Objet Oriented Programming kelimelerinin
baĢ harflerinden oluĢur. Bu teknik ortaya çıktığında
geleneksel programlamaya alıĢkın olanlar önce tereddüt
etsede nesneler kısa sürede programcılar için
vazgeçilmez oldular. Tanımlarsak, nesne, kendi
değiĢkenleri ve çalıĢtıracağı komutlardan oluĢan
fonksiyonları ile bir bütündür. Nesneyi bir kere
tanımladıktan sonra istediğimiz kadar örneğini
oluĢturabiliriz. Bir nesnenin yapacağı iĢten, o nesnenin
metodu diye söz ederiz. Nesneler birbirinin atası olabilir.
Birden fazla nesne bir araya gelerek yeni bir nesne
oluĢturabilirler.
Windows iĢletim sistemi tamamen NYP ile yazılmıĢtır.
Pencereler birer nesnedir. Pencere nesneleri ise, baĢlık
çubuğu, pencelere alanı, durum satırı, sol ve sağ üst
köĢelerdeki düğmelerden oluĢmuĢtur. Gene aynı Ģekilde
Windows pencelerinde gördüğünüz bilgi giriĢ kutuları
düğmeler vs her Ģey bir nesnedir.
Nesneler Ġleri programlama konusu olduğundan örnekler
sonra iĢlenecektir. Ancak bast bir örnek vermek için ;
<?
class nyp{
function yazdir($str){
echo "Merhaba\n";
echo "değiĢken : $str\n";
}
}
$deneme= new nyp();
$a="rastgele bir metin değeri";
$deneme -> yazdir($a);
?>
bu programı çalıĢtırdığımızda ekrana
Merhaba
Değişken : rastgele bir metin değeri
yazacaktır.
Konu baĢında belirtildiği gibi bu basit bir örnektir. $a ile
$str farklı olması sizleri ĢaĢırtmasın. Ġleriki konularda bu
olay daha net ĢekillenmiĢ olacaktır.
Sabit Değerler - Constants
Ġster Web, ister Web-dıĢı amaçlı olsun, bir programın
bazen baĢından sonuna kadar aynı değeri taĢıması
istenen bir değere ihtiyacınız olabilir. Tabiî ki bu iĢlem
için bir değiĢken kullanmakta mükündür. Ama yanlıĢlıkla
değiĢkene değer atarsanız ölümcül hatalar yapabilrsiniz.
Örneğin liste kodu yazdığımızı düĢünelim; matbu forma
baskı yaptıracağız, form 20 satırlık ve yine 20 satırdan
oluĢan bir sürü baĢka formumuzda var. Programın içinde
bir değiĢken tutup bu sayı 20 olunca yeni form
takılmasını isteyebiliriz. Ama ilerde formlar 30 satır
olursa tüm o 20 sayılarını bulup 30 yapmamız gerekir.
Bu iĢlem için $satirsayisi diye bir değiĢken kullanıp,
içeriğini 20 olaak kullanmayı düĢünürsek eğer ilerde
sadece bu sayının 30 yapılması yetecektir. Bu daha akılcı
bir iĢlemdir. Ancak buradada bir sorun var. Ya bu
değiĢikliği yanlıĢlıkla kod içinde yaparsak ? Sonuçta bu
bir deiĢken ve değer atamayada açık durumda. ĠĢte
bunun için satirsayisi diye bir sabit tanımlayıp buna
değer atabiliriz. Böylece hem bir değiĢiklikle tüm
satirsayisi değerlerini güncellemiĢ olacağız, hemde kod
içinde bu değeri yanlıĢlıkla değiĢtirmenin önüne geçmiĢ
olacağız. Üstelikta yanlıĢlık aynı isimde bir sabit daha
oluĢturmaya kalkınca PHP iĢlemi yapmayacaktır.
PHP'de sabit değerler, Script boyunca değiĢmeden kalır.
Sabit değerler, değiĢkenlerden farklı Ģekilde oluĢturulur.
Bunun için PHP'nin define() fonksiyonunu kullanırız. Bu
fonksiyonun yazım kuralı Ģöyledir:
define ("SABIT_ADI", değeri);
Burada SABIT_ADI yerine, tanımlamak istediğimiz sabit
değere vereceğimiz isim, değeri yerine de sabitin
taĢımasını istediğimiz değeri yazarız. Örnek:
<?php $tutar = 125;
define ( "KDV", 18);
$TL_Tutar = $tutar+(($tutar * KDV)/100);
print ($TL_Tutar);
?>
Burada tanımladığımız KDV sabit-değeri, tıpkı bir
değiĢken gibi kullanılabilir. Ticari bir kod içinde bu KDV
değeri yüzlerce iĢlemde geçebilir. Bunun değerinin elle
kodlanması yerine bu Ģekilde kullanılması bizi hatalardan
koruyacaktır. Diyelimki KDV 18 den 10 ‗a düĢtü.
Yapmamız gereken sadece DEFINE satırındaki 18
değerini 10 yapmak olacaktır. Kodun geri kalanı anında
KDV oranını 10 olarak kullanacaktır.
Sabit değer ile aynı ismi taĢıyan değiĢken oluĢturmak
mümkündür; ancak aynı ismi taĢısa da PHP bir sabit ile
bir değiĢkeni (birinin adının önünde $ iĢareti bulunduğu
için) karıĢtırmaz. TanımlanmıĢ olan bir sabiti yeniden
oluĢturamayız; ama buna teĢebbüs ettiğimizde PHP hata
vermez. Bir sabit değerin oluĢturulmuĢ olup olmadığını
defined() fonksiyonu ile anlayabiliriz:
<?php
$tutar = 125;
if (defined( "KDV" )) {
echo ("Sabit değer daha önce
tanımlanmıĢtı.<br>");
}
define ( "KDV", 18);
$TL_Tutar = $tutar+(($tutar * KDV)/100);
print ($TL_Tutar);
?>
PHP'nin kullanılmaya hazır bir kaç sabit değeri vardır.
True (doğru) değeri 1 olan, False (yanlıĢ) ise değeri sıfır
sayısı veya boĢ alfanümerik olan iki sabittir. Diğer
sabitler ise Ģunlardır:
 __FILE__ : O anda çalıĢmakta olan PHP dosyasının
adı
 __LINE__ : Bu ifadenin yer aldığı satırın sayısı
 PHP_VERSION: PHP'nin sürümü;
 PHP_OS: PHP'nin çalıĢtığı iĢletim sistemi;
 PHP_VERSION : PHP'nin sürümü (Ġki kelimenin
arasında bir alt-çizgi var);
Bunlara ek olarak, E_ERROR, E_WARNING, E_NOTICE ve
E_PARSE Ģeklinde hata durumunda hatanın çeĢitli
özelliklerini bildiren sabit değerleri de kullanabiliriz. PHP
hakkında çok daha geniĢ bilgiyi phpinfo() fonksiyonunu
çağırarakk alabilirsiniz.
Buradaki değiĢkenler iĢletim sistemine ve web server
programına görede değiĢirler. Ġlerde bunlar detaylıca
incelenecektir.

PHP'de Diziler(Array)

Diziler (Array)
Diziler aynı tipte birden çok değiĢkeni zincirleme olarak
barındıran değiĢkenlerdir. Buna neden ihtiyaç duyulurki
derseniz, örneğin meyveleri iĢleyen değiĢkenlere
ihtiyacımız olsun. Yapmamız gereken $elma, $armut gibi
her meyveyi sıra ile tanımlamak. Bu iĢe kodlamada
zorluk ve sıkıntı demektir.
1. Bu meyveleri ekrana yazdıralım diyecek olursak
tek tek elle yazmak zorundayız.
2. Bu meyve isimlerini sıralayalım desek yapacak
hiçbir Ģeyimiz yok
3. Meyve isimlerini bir sırada iĢleyelim dersek elimiz
kolumuz bağlı
Dizilerde ise bu konular sıkıntı olmaktan
çıkmaktadır.ġimdi bir örnekle hem meyveleri içeren bir
dizi tanımlayalım hemde bu diziyi ekrana yazdıralım.
<?php
// for each dizi elemanları boyunca tekrarlar Ģüphesiz
dizideki sayıyı bulup for ilede bu iĢlemi yapabiliriz
$meyve = array (
1=>"elma",
2=>"armut",
3=>"ayva",
4=>"Ģeftali",
5=>"üzüm",
6=>"nar");
foreach ($meyva as $deger) {echo $deger .
"<br>";}
?>
Yukardaki döngüde koyu harflerle yazılan kısım tüm
meyveleri ekrana yazan koddur. Üstelik tek bir
fonksiyonlar bu diziyi artan yada azalan Ģekilde
sıralamamızda mümkün. ġimdilik döngünün nasıl çalıĢtığı
konusuna girmeyeceğiz. Bu ilerde iĢleyeceğimiz bir konu.
Ancak ilerde bu konuya tekrar geniĢçe yer verilecektir
Çok Boyutlu Diziler
<?php
$meyve = array (
array ( adi => "elma", renk => "kırmızı"),
array ( adi => "karpuz", renk => "kırmızı"),
array ( adi => "ayva", renk => "sarı"),
array ( adi => "nar", renk => "pembe"),
);
print $meyve [0][adi]; // meyve dizisinin ilk elemanının
adi bilgisini yaz… ―elma‖

?>
Dizi Tanımlama Kuralları
 Diziler tanımlanırken süslü parantez değil, normal
parantez kullanılır
 Herbir elemanın değerlerinin sonunda virgül
konulur.
 Dizi çok boyutlu ise bunları tırnak içine alarak
yazmak gerekir.
<?php
$a[0] = "abc";
$a[1] = "def";
$a[1] = $f; # tek boyutlu tanımlama
$a[1][0] = $f; # iki boyutlu tanımlama
?>

PHP ile Ekrana Çıktı Verme

PHP ile Ekrana Çıktı Verme
echo() fonksiyonu-(Ekrana yazdırma)
PHP dilinde ekrana bir Ģey yazdırmanın bir çok yöntemi
vardır. En çok kullanılan yöntem echo fonksiyonudur.
ġimdi belkide dünyanın en çok yazılan kodu olan
―merhaba dünya‖ uygulamasını PHP ile yazalım. Çift
tırnak ile tek tırnak kullanımı arasında fark vardır. Tek
tırnak yazılırsa ekrana yazılacak metin içinde değiĢken
kullanılamaz. Daha doğrusu değiĢkenlerin değeri yerine
adı ekrana yazdırılır.
<?php
echo ―merhaba dünya‖;
?>
<?php
echo ‗merhaba dünya‘; // bu örnek doğru
echo ―merhaba dünya‖ // bu örnek doğru
echo ―merhaba dünya $adi‖; // bu örnek doğru
echo ‗merhaba dünya $adi‘; // bu örnek kod olarak
doğru ama ekrana adı değiĢkenini değil kendisini
// yazacak
?>
Ekrana tek br değiĢken veya metin yazdırılacaksa sadece
―?‖ de kullanmak mümkündür.
print() fonksiyonu – (Ekrana Veri Yazma)
Print fonksiyonuda ekrana echo gibi çıktı vermek
amacıyla yazılmıĢ bir fonksiyondur. Genel kullanımıda
aynıdır.
<?php
print ―merhaba dünya‖;
?>
Doğruluğunu test etme imkanı bulamadım ama echo
fonksiyonun genel olarak print fonksiyonundan daha hızlı
çalıĢtığını iddia eden makaleler okudum. Gerçektende
echo daha çok kullanım alanına sahip.
Escape Kodlar
Tek veya çift tırnak içine de alsak, PHP, bir değiĢken
adını gördüğü zaman onun yerine o değiĢkenin tuttuğu
değeri yazar. PHP bunu, değiĢken adının baĢındaki $
görerek yaparak. $ iĢareti gibi PHP için özel anlamı olan
iĢaretlerin iĢlenmesini önlemek ve bu iĢaretleri düz metin
saymasını sağlamak için bu iĢaretlerin önüne ters-bölü
iĢareti koyarız. Buna o karakteri kurtarma veya
ESCaping denir. PHP'nin anlamlı iĢaretleri ve bunların
ESCape-yazılıĢı Ģöyledir:
\' Tek tırnak
\" Çift tırnak
\\ Ters-bölü
\$ Dolar iĢareti
\n Yeni Satır (New Line)
\r Satır BaĢı (Return)
\t Sekme (Tab) karakteri
Bu iĢlemi daha iyi anlatmak için Excelden bir örnek
yararlı olur. Bazen Excel‘de bir sayının metin olarak ele
alınması istenir. Excel‘i buna zorlamak içinde o değerin
baĢına ‗ karakteri konulur. ESCape kodlar iĢte bu iĢlemi
yaparlar. PHP bu kodları görünce değiĢkeni iĢlemek
yerine metin olarak varsayar.
DeğiĢken Nedir ?
DeğiĢkenler tüm programlama dillerinde karĢımıza
çıkacak bir konudur. Genel olarak tüm dillerde
standartlarda aynıdır. Örneğin tüm programlama
dillerinde değiĢken adı rakam ile baĢlayamaz kuralı
vardır. Neden değiĢken kullanırız diyecek olursanız cevap
çok basittir; sadece programcının iĢini kolaylaĢtırmak
için.
Bilgisayarın RAM hafızasını bir Excel sayfası gibi
düĢünebiliriz. Bilindiği gibi orada her satır hücrenin
kesiĢmesine bir hücre denir ve A1 gibi birde hücre adresi
alır. CPU larda buna benzer bir teknikle hafızayı
adresleyerek kullanırlar.
Örneğin siz $maas =2000; dediğinizde PHP bilgisayarın
RAM hafızasında xxxx:xxxx gibi bir adresi ayırmakta
kendisi için buraya sembolik olarak ―maas‖ adini
vermektedir. Aslında xxxx:xxxx değeri sadece bir
ifadedir.
Günümüzde 64 bitlik iĢlemci ile çok daha karıĢık hale
gelmiĢtir. Hele birde binary yani sadece 1 ve 0 lardan
oluĢan adresleri düĢünürsek bunların adreslerini ve neyi
temsil ettiğini hatılamak adeta imkansızdır. Dolayısı ile
biz ―maas‖ degiskenine bakmak istediğimizde ise
karĢımıza onun temsil ettiği adresteki bilgi gelmektedir.
Böylece programı kiĢi adres ezberlemek yada hatırlamak
zorunluluğundan kurtulmaktadır.
DeğiĢkenleri adının önüne $ iĢareti koyarak tanımlarız:
$ad;
$syd;
$Ay1;
DeğiĢkenler, harf, veya alt çizgi (_) ile baĢlayabilirler; bu
karakterleri ve rakamları içerebilirler; ama içinde boĢluk
veya diğer iĢaretler bulunamaz. PHP değiĢkenleri her
türlü değeri tutabilirler: bir değiĢkenin adının yazılıĢ Ģekli
onun tutabileceği değerin niteliğini belirlemez.
Dolayısıyla, "$adi" değiĢkenin değeri "Tuncay" da olabilir,
"1255" de olabilir. PHP'de genellikle değiĢkenleri değerini
atayarak belirleriz:
$adi = "Tuncay";
$soyadi = "ġanlı";
$a123 = 123;
DeğiĢkenler, kullanıldıkları yerde, taĢıdıkları değerin
kullanılmasını sağlarlar. Örneğin $adi değeri ―ALĠ‖
bilgisini içeriyor ise PHP bu değiĢkeni gördüğü yerde
değiĢkenin içerdiği ―ALĠ‖ bilgisini kullanacaktır:
print $adi;
komutu, eğer değeri "Tuncay" ise tarayıcı penceresine
"Tuncay" kelimesini yazdırır. PHP'de özel bir değiĢkene
değiĢken adı olarak kullanılacak değerleri de atayabiliriz:
$adi = "Tuncay";
$degisken = "adi";
print $$degisken;
Burada Browser penceresine yine "Tuncay" kelimesi
yazılacaktır; çünkü PHP $degisken adlı değiĢkenin "adi"
adlı değiĢkeni tuttuğunu bilecek ve iki Dolar iĢaretini
görünce, $degisken'in değerini değil, onun tuttuğu
değiĢkenin değerini yazacaktır. Bu, size Ģu anda karıĢık
görünebilir. Daha sonra döngüleri gördüğümüzde bu
tekniği bir satırlık kod ile yüzlerce değeri yazdırmakta
kullanacağız. Bu teknik Ģöyle de kullanılabilir:
$degisken = "adi";
$$degisken = "Tuncay";
print "$adi";
print $$degisken;
print "${$degisken}";
print "${'adi'}";
Buradaki dört "print" komutu da Browser'a "Tuncay"
kelimesini yazdıracaktır. PHP'de bir değiĢkenin tuttuğu
değer, bir baĢka değiĢkene atanabilir. Bu ya duragan, ya
da dinamik olarak yapılır. Durağan yöntemde:
$birinci_degisken = "Nurcan";
$ikinci_degisken = $birinci_degisken;
$birinci_degisken = "Tülay";
print $ikinci_degisken;
Kimi zaman iki değiĢken arasındaki değer alıĢ-veriĢi
sürekli olsun istenebilir. PHP, buna, ilk atama sırasında &
iĢareti kullanırsak izin verir. Aslında bu iĢlem bir hiledir.
Çünkü yapılan iĢlem iki değiĢkeninde hafızadaki aynı
adresi göstermesi sağlanmaktadır:
$birinci_degisken = "Nurcan";
$ikinci_degisken = &$birinci_degisken;
$birinci_degisken = "Tülay";
print $ikinci_degisken;
Buradaki "print" komutu ise Browser penceresine "Tülay"
kelimesini yazdıracaktır. Çünkü iki değiĢken arasındaki
değer alıĢ-veriĢi birinci değiĢkenin tuttuğu değeri
değiĢtirmeden önce halde, ikinci değiĢkene birinci
değiĢkenin değerini dinamik olarak atamıĢ olduk. Atama
iĢlemi sırasında & iĢareti kullandığımız için, birinci
değiĢkenin değeri değiĢtiğinde ikinci değiĢkenin de değeri
değiĢecektir.
DeğiĢken Türleri
PHP, değiĢkenlere, tiplerine göre farklı miktarda hafıza
alanı ayırır. O yüzden etkin bir programcı için veri tipinin
doğru tespiti çok önemlidir. (bu olay Veritabanı
tasarımında çok daha önemlidir). Ayrıca PHP, diğer bütün
programlama dilleri gibi belirli veri türleri ile sadece
belirli iĢlemleri yapabilir. Örneğin, ancak iki sayı arasında
aritmetik iĢlemler yapılabilir ama iki metin değiĢken
aritmetik olarak toplanamaz; ancak içerdikleri değerler
ardarda eklenebilir. Ne var ki, PHP sizin aritmetik
toplama mı, yoksa ardarda ekleme mi yapmak
istediğinizi bilmek durumunda değildir. (PHP'ye
'muazzam dil' dedik; içinde yapay zekâ var demedik!)
Dolayısyla değerleri 5 ile 6 olan iki değiĢkeni topladığınız
zaman ortaya 11 yerine 56 çıkarsa, kabahati PHP'de
değil, değiĢkenlere veri atayan kiĢide (büyük bir ihtimalle
kendinizde) aramalısınız.
PHP açısından yedi tür değer vardır:
 Tamsayı (Integer): 5,124, 9834 gibi (-
2147483647 ile 2147483647 arası sayılar)
 Çift (Double): 3,567 gibi
 Alfanümerik (String): "Deniz" gibi
 Mantıksal (Boolean): doğru (true)/yanlıĢ (false)
gibi
 Nesne (Object)
 Dizi (Array)
 Resources (Kaynak)
Kaynaklar aslında PHP değiĢkeni olmayan Sql sorguları,
yada bir dosyadan yğklenen resim gibi kaynaklardır.
DeğiĢkenlerden farklı genellikle olarak iĢleri bitince yok
edilmeleri gereklidir. Böylece verimli bir hafıza kullanımı
sağlanır.
<?php
$str = "12";
$int = 20;
print $mystring + $myinteger;
?>
Alfanümerik DeğiĢkenlerin Ġçeriğine Dizi Olarak
EriĢme
Alfanümerik değiĢkenlerin PHP‘de özel bir kullanım Ģekli
daha vardır. Bu notasyon Pascal ve C dilindede olan bir
kullanım Ģeklidir. Gerçi Pascalda 0. byte uzunluk ifade
eder ama önemli olan kullanım mantığıdır. Bu yöntemler
bir alfanümerik değiĢkenin içeriğine harf harf eriĢmek
mümkündür.
http://alikoker.name.tr
HTML-CSS–PHP–MYSQL ve SQL Derleme : Ġbrahim Halil Kutluay- 2007-2013
197
<?php
$str1 = "Kelam, Ġbrahim?";
$str1{0} = "S";
$str1{14} = "!";
print $str1;
?>
Yukarda gördüğünüz kullanımda öncelikle bir alfanümerik
değiĢken oluĢturuluyor. Daha sonra ise bu değiĢkenin ilk
harfi değiĢtiriliyor ve en sonundada metnin en son
karakteri değitirilip ekrana yeni hali yazılıyor.