• Forum vBulletin altyapısından Xenforo altyapısına geçirildi, bu sebeple eski şifreleriniz ile foruma giriş yapamayacaksınız, parolamı unuttum adımından mailiniz ile şifre sıfırlayarak giriş yapabilirsiniz.

    Üyeliklerinde geçerli bir mail adresi olmadığı için sıfırlama yapamayacak kullanıcılar forum kullanıcı adlarını ve yeni şifrelerini yazarak info@maxigame.org adresine şifre sıfırlamak istediklerine dair bir mail göndersinler şifrelerini sıfırlayıp mail adreslerini güncelleyeceğiz. Şifreniz sıfırlandıktan sonra foruma giriş yapıp tekrar istediğiniz gibi değiştirebilirsiniz.

PHP'ye Giriş

CottonCandy

Atlas Evren
Aileden
Aktiflik
K.Tarihi
26 Tem 2009
Mesajlar
1,087
Puanı
472
Konum
M.K.ATATÜRK
[RESIZE=950]
aEdr9R.jpg
[/RESIZE]

PHP sunucu taraflı (server side), HTML ile uyumlu bir betik dilidir. Daha önce kullandığım “programlama dili” ifadesi PHP için yüzde yüz açıklayıcı değildir. PHP, HTML de olduğu gibi bir derleyici tarafından derlenmez, sadece sunucudaki php programı tarafından yorumlanır. C bilen birisi için PHP öğrenmesi çok basit olan bir dildir, öyle ki dosya işlemleri gibi karışık konularda PHP, C’den çok daha basittir.
Yazdığınız PHP kodları hiçbir zaman sitenizin ziyaretçisine görüntülenmez. Ziyaretçi sayfanın kaynağını görüntülese bile göreceği sizin PHP kodlarınızın sunucu sistemdeki php programı tarafından HTML’ye çevrilmiş halidir. Aşağıdaki kod kümesini incelerseniz daha iyi anlayacağınızı sanıyorum (PHP’ye henüz bir giriş yapmadığım için kodları anlamayabilirsiniz, fakat yine de C’ye az da olsa aşina olanlar bir anlam çıkartacaktır).

Kod:
<?php
  printf(“Bu bir PHP dosyasıdır.<br>\n”);
  print(“Bu bir PHP dosyasıdır.<br>\n”);
  echo (“Bu bir PHP dosyasıdır.<br>\n”);
  echo “Bu bir PHP dosyasıdır.<br>\n”;
?>

Yukarıdaki dört kod satırıda ekrana “Bu bir PHP dosyasıdır.” yazdıracaktır. Ve web istemcinizden sayfanın kaynağına baktığınız zaman sadece


Bu bir PHP dosyasıdır.<br>
Bu bir PHP dosyasıdır.<br>
Bu bir PHP dosyasıdır.<br>
Bu bir PHP dosyasıdır.<br>


gibi bir içerik görürsünüz. Yazdığınız kodlar sunucu sistemdeki php programı tarafından normal HTML kodlarına çevrilmiştir ve ziyaretçi bu kodlardan başka herhangi bir içerik göremez.
Dikkat ettiyseniz sayfamızın kaynağındaki kodlar dört satır halinde yazılmış, eğer PHP programımızda her metinden sonra gelen “\n” karakterini kaldırsaydık sayfamızın kaynağındaki komutlar tek satıra yerleşirdi.


Fakat bu sayfanın ziyaretçiye görünen kısmını değiştirmediği için üzerinde fazla durulması gereken bir konu değil.
Bir diğer husus da kodlarımızda kullandığımız <br> etiketi. Evet PHP içinde doğrudan doğruya HTML etiketleri kullanabilmemiz bize çok büyük kolaylıklar sağlayacak. PHP dosyaları sunucu sistemde .php ya da .php3 uzantısı ile saklanır (.php3, PHP’nin 3. Sürümü için kullanılmaktadır). Dosyamızda PHP kodlarını kullandığımız yeri göstermek için <?php ?> ya da <? ?> etiket aralıklarını kullanırız. Bu etiketlerin kullanıldığı yerden itibaren sunucu etiket aralığındaki komutları php yorumlayıcısına gönderir, php yorumlayıcısı da bu kodları düz HTML kodlarına çevirir.


Denemelerinizi bir UNIX ya da türevi işletim sistemi üzerinde yapmanızı tavsiye ederim, çünkü PHP ile birlikte kullanılan bir çok işlev Windows altında çalışmamakta ya da sorun yaratmaktadır.
Elinizin altında PHP+MySQL desteği bulunan bir sistem olduğunu varsayarak bölüme başlıyorum.


Öncelikle PHP’nin yazım kurallarından söz etmek istiyorum. Daha öncede belirttiğim gibi PHP kodları <?php ?> ya da <? ?> etiketleri arasında kullanılır. Yazdığımız her komuttan sonra ; işareti kullanırız (C’ye benziyor demiştim ;)). Bir web sayfasında veya formdan gelen değişkenleri adlarının başına $ işaret koyarak sembolize ederiz ve değişken adlarında Türkçe karakter kullanamayız.


PHP ile Ekrana Yazı Yazma

PHP konu başlığında verdiğim örnekte olduğu gibi ekrana yazı yazmak için dört değişik yol kullanırız (en azından ben o kadar biliyorum!)



  1. printf(“Bu bir PHP dosyasıdır.<br>”);
  2. print(“Bu bir PHP dosyasıdır.<br>”);
  3. echo (“Bu bir PHP dosyasıdır.<br>”);
  4. echo “Bu bir PHP dosyasıdır.<br>”;
Yukarıdaki dört satırda ekrana “Bu bir PHP dosyasıdır.” yazacaktır. Dikkat ederseniz her komuttan sonra bir ; işareti kullanılıyor. Bu işareti kullanmamamız halinde php programı hata verecektir. Şimdi içinizde “Bu yazıyı HTML ile daha kısa bir kod kümesi ile yazmak mümkün!” diye düşünenler olacaktır (bende ilk başta öyle düşünmüştüm :-), fakat ilerde ekrana değişken ile gelen bilginin yazdırılmasını gördükten sonra sizde bu yazım şeklinin gereksiz olmadığını anlayacaksınız.
Aşağıdaki örnekte $deger adlı değişkene değer atayıp ekrana yazdırıyorum.


Kod:
<?php


/* Buralar yorum satırı*/
# Burası da tek satırlık yorum aralığı


$değer = "Bu değişkenin değeri";
echo $değer;


?>

Bu dosyayı yazıp ilk.php diye kaydettikten sonra web istemcinizin adres satırına http://localhost/ilk.php yazarsanız ekranda “Bu değişkenin değeri” yazısını göreceksiniz (Kullandığınız sunucunun ismi localhost ve ilk.php dosyasının da ana www dizininde olduğunu varsaydım).


PHP ile sadece metinsel işlemler değil, matematiksel işlemler de gerçekleştirebilirsiniz. Bunun için C programlama dilinde olduğu gibi toplama için +, çıkarma için -, çarpma için *, bölme için / ve kalan bulma için % sembolleri kullanılır.
İsterseniz birkaç örnek ile matematiksel işlemlere giriş yapalım.

Kod:
<?php
###########################
#  Maxigame.org /CottonCandy #
#         mat.php         #
###########################


# Değişkenler tanımlanıyor
$a = 10;
$b = 2;
$c = 3;


# Kullanılacak matematiksel işlevler tanımlanıyor
$toplam = ($a + $b + $c);
$carpim = ($a * $b * $c);
$bolum = ($a / $b);
$kalan = ($a % $c);


# Çıktılar ekrana yazdırılıyor
echo "Tanımlı değişkenlerin toplamı: <b>$toplam</b><br>\n";
echo "Tanımlı değişkenlerin çarpımı: <b>$carpim</b><br>\n";
echo "Birinci ve ikinci değişkenin bölmesi sonucu bölüm: <b>$bolum</b><br>\n";
echo "Birinci ve üçüncü değişkenin bölmesi sonucu kalan: <b>$kalan</b>";
?>

Yukarıdaki örnek, programlama ile daha önce uğraşmamış birisi için biraz karışık olabilir. Önce değişkenlere değer atanır ve belirli işlevler kullanılarak bu değerler istenilen işlemlerden geçirilerek farklı bir sonuç elde edilir. Tıpkı matematikte kullanılan işlevler gibi, belirli işlemler istenilen değişken değerine uygulanır.


Yani, y = f(x, w, z) = x + w + z gibi, bizde y yerine $toplam diye bir değişken ve x, w ve z yerine $a, $b ve $c gibi değişkenler kullandık. Matematikte kullanılan işlevlerden tek farkı kullanılan değişken tiplerinin farklı olması ve matematiksel işlemler dışında da işlemlerin yapılabiliyor olmasıdır.


Bizim örneğimizde bazı matematiksel değerlerin toplamı, çarpımı ve bölümü alındı. Bu matematiksel işlemleri istenilen amaç doğrultusunda uzatıp karmaşıklaştırmak mümkün.
Yazdığımız PHP dosyasının HTML kaynak kodu


  1. Tanımlı değişkenlerin toplamı: <b>15</b><br>
  2. Tanımlı değişkenlerin çarpımı: <b>60</b><br>
  3. Birinci ve ikinci değişkenin bölmesi sonucu bölüm: <b>5</b><br>
  4. Birinci ve üçüncü değişkenin bölmesi sonucu kalan: <b>1</b>
gibi düz HTML kodlarından ibaret olacaktır. Ziyaretçinin hiçbir şekilde bizim PHP kodlarımızı görme şansı yoktur. Kaynak kodundan kullandığımız \n karakteri HTML çıktımızda satırların tek bir satır gibi değil de alt alta yazılmış satırlar olarak oluşmasını sağladı. Bu gibi durumlarda kullanımı gerekli değilse de kullanımının gerekli olduğu durumlar kesinlikle vardır.


Birde bir önceki örneği dikkatli bir şekilde incelediyseniz orada değişkenin değerini verirken “ (tırnak işareti) kullanmama karşın son örnekte kullanmadım. Tırnak işareti kullanılmadığı zaman PHP değişkenimizin sayısal değer taşıyan bir değişken olduğunu anlayacaktır.


Diyelim ki elimizde iki tane metin bilgisi taşıyan değişken var. Bunlar $ad = "Fehmi Noyan" ve $soyad = "İSİ" olsun. Bu değişkenlerin değerlerini birleştirip tek bir değişkende saklamak mümkündür. Saklamak istediğimiz tek değişken $ad_soyad ise kullanmamız gereken komut kümesi


$ad_soyad = $ad . " " . $soyad;


gibi bir satırdır. Bu işlem için çok farklı birleştirme yolları olsa da bu kullanım birçok yerde işinizi görecektir.


Web Formundan Bilgi Almak


Buraya kadar anlattıklarım sadece bir giriş içindi (şimdiki aşama da daha işin başı, yani giriş bitmedi). Fakat sizinde bildiğiniz gibi dinamik bir sitede değişkenlerin değerleri kullanıcı tarafından sunucu sisteme yollanır. Bu iş için ya form yöntemi ya da adres satırından bilgi girişi yolu kullanılır. En yaygın ve kullanışlı olanı form yöntemidir.


Kod:
<! --- ad_soyad.html --- >
<html>
<head><title>Ad ve Soyad Bilgisi</title></head>
<body bgcolor="#ffffff" text="#000000">
<form action="ad_soyad.php" method="get">
Adınız: <input type="text" name="ad"><br>
Soyadınız: <input type="text" name="soyad"><br>
<input type="submit" value="Gönder">
</form></body></html>
<?
################
# ad_soyad.php #
################
 echo "Adınız $ad ve soyadınız $soyad.";
?>
Yukarıdaki örnek dosyaları yorum satırlarında belirtilen adlar ile yazıp kaydettikten sonra, istemcinizin adres satırına http://localhost/ad_soyad.html yazıp karşınıza çıkacak formu doldurun. "Gönder" düğmesine bastıktan sonra PHP dosyamız çalışacak ve bize istenilen çıktıyı verecektir. Burada dikkat etmeniz gereken nokta istemcinizin adres satırındaki bilgidir. Eğer ben formda adım için “Fehmi Noyan” soyadım içinse “ISI” (Türkçe karakter kullanmamak için büyük i kullanmadım) bilgilerini girersem adres satırında


http://localhost/ad_soyad.php?ad=Fehmi+Noyan&soyad=ISI


gibi bir satır görünecektir. Dikkat ederseniz form ile gönderilen bilgilerin name="..." kısmının PHP dosyamızdaki değişken adlarını ve adres satırındaki PHP dosyası ve ? karakterinden sonraki kısımların PHP dosyamıza gidecek değişkenlerin değerini verdiğini fark edeceksiniz.


HTML dosyamızda oluşturduğumuz web formunda kullandığımız <input> etiketi içindeki name="..." kodu bize o etiket ile gelen bilginin action=”...” kodu ile belirtilen dosyada aynı isimli değişken olarak kullanılacağını belirtir. Web formunu doldurmadan da, sadece adres satırına yukarıdaki satırı girerek de formumuza bilgi yollayabiliriz. Satırda PHP dosyamızın isminden sonra bir ? karakteri kullanılır, daha sonra her değişkenin adı ve değeri birbirinden & karakteri ile ayrılır. Bu yol ile web formlarından bilgi göndermek mümkündür ama pek kullanışlı değildir.


Formumuzda get yöntemini kullandığımız için adres satırında girdiğimiz bilgiler görüntülendi. Aynı HTML dosyasını formun bilgileri gönderme metodunu post olacak şekilde ayarlayıp tekrar deneyin. Bu sefer adres satırında girilen hiçbir bilgi olmayacaktır. Yani sadece
http://localhost/ad_soyad.php
gibi bir satır olacaktır. Ben örneklerimde bundan sonra post yöntemini kullanacağım.

Diziler

Diziler bazen kullanılması kaçınılmaz olan ve her PHP programcısının kullanımını bilmesi gereken elemanlardır. Adından da anlaşılacağı üzere, diziler bir tek değişkenin değeri içerisinde birden çok değer saklar. Mesela içerisinde haftanın günlerini barındıran bir dizi değişken


$hafta = array(“Pazartesi”, ”Salı”, ”Çarşamba”, ”Perşembe”, ”Cuma”, ”Cumartesi”);


şeklinde tanımlanabilir. Dikkat ederseniz haftanın son günü olan “Pazar” dizi içerisinde yer almıyor. Pazar’ı dizi içerisine dahil etmek için


$hafta[] = ”Pazar”;


şeklinde bir ifade kullanabiliriz. Böylece son belirtilen “Pazar” elemanı dizinin son elemanı olmuş olur.
Dizi içerisindeki bir elemanı ekrana yazmak için, mesela dizinin 3. elemanı,


echo $hafta[2];


komutu kullanılır. Dizinin 3. elemanı için neden “2” rakamını kullandık? Bunun sebebi dizilerin ilk elemanının 1. değil 0. eleman olmasıdır. Bir dizi değişkeninin eleman sayısı count() işlevi ile öğrenilebilir.


echo count($hafta);


ifadesi ekrana 7 rakamını basacaktır. Dizi değişkenleri ve bunlar üzerinde işlem yapan işlevler ile ilgili bilgiyi PHP Manuel’in “Array Functions” kısmında bulabilirsiniz.


Mantıksal İşleçler


Bir PHP dosyasında en çok kullanacağınız ifadeleri oluşturan mantıksal işleçleri önceden programlama mantığı almamış bir kişi için ilk etapta anlaşılması biraz zor gelebilir fakat bu bölümü anlatırken bu durumu da göz önünde bulundurdum ve olabildiğimce sade ve anlaşılır bir dil kullanmaya gayret gösterdim.


Bu etapta tekrar hatırlatmak istiyorum, PHP ile kullanılan mantıksal işleçleri C dili ile kullanılanların tamamen aynısıdır ve kullanım şekilleri arasında hiçbir fark yoktur. İlk önce kullanılan işleçlerinin hangileri olduğunu ve daha sonra bunların kullanım şekillerini anlatmayı daha uygun gördüm.



YbqZ92.png


Yukarıdaki işleçlerini mantıksal ifadelerde karşılaştırma ve verilen koşulun doğruluğunu sınama için kullanacağız. İlk iki işleç dışında, az çok matematik bilgisi olan birisi diğer işleçlerinin kullanım şeklini kestirmiştir. Aslında ilk ikisi de matematikte işlenmiş olan mantık konusunun bir parçasıdır.


Kullanacağımız ifadelere gelen bilgiler bilgisayar dilinde iki şekilde değerlendirilir. 0 ve 1, yani yanlış ve doğru. Kuracağımız tüm ifadeler bu iki değer çevresinde sınırlıdır.

DJBgAo.png


Yukarıda && ve || işleçlerinin aldıkları değerler doğrultusunda oluşturdukları değerleri yazdım. Bu karşılaştırma işleçlerini birazdan anlatacağım mantıksal ifadeler içerisinde kullanacağız.

PHP Komutları

if


if komutu bir ifadenin doğru olması halinde izleyen komut kümesini işletir. İngilizce anlamı “eğer” olan kelime üstlendiği görev bakımından da anlamı ile bir bütünlük içindedir.


Kod:
<?
################
#    if.php    #
################


$a = 5;
$b = 3;
if ( $a > $b )
 {  echo “a sayısı b  sayısından büyüktür.”; }
?>

Yukarıdaki kod parçası $a değişkenindeki değerin sayısal olarak $b dekinden büyük olması halinde komut kümesinde belirtilen kodu yerine getirip ekrana “a sayısı b sayısından büyüktür.“ metnini basacaktır. Aksi taktirde (yani $a’nın sayısal değeri $b’ninkinden küçük ise) hiçbir işlem yapılmadan komut kümesindeki kod atlanır.

if... else ...

Bu komutta if komutunda olduğu gibi belirtilen ifadenin doğru olması halinde if ile belirtilen komut kümesini işletir, ifadenin yanlış olması halinde ise else ile belirtilen komut kümesi işletilecektir.


Kod:
<?
###################
#   if_else.php   #
###################


$a = 2;
$b = 3;
 if ($a > $b) {
     echo “a sayısı b sayısından büyüktür.”;
 } else {
    echo “b sayısı a sayısından büyüktür.”;
 }
?>

Parantez içindeki mantıksal ifadenin doğruluğu halinde if komutunu izleyen komut kümesini (“{“ ve “}” işaretleri ile sınırlı bölge) işletilir. Yukarıda $a ile belirtilen değişkenin sayısal olarak değeri $b ile belirtilenden büyük olması halinde ekrana “a sayısı b sayısından büyüktür.” metni aksi taktirde, yani $a değişkeni sayısal olarak $b'den küçükse, ekrana “b sayısı a sayısından büyüktür.” metni basılacaktır. Komut kümesinde belirtilen kod sadece ekrana yazı yazma değil, her türlü işlem için düzenlenebilir.
while


Yine İngilizce anlamı “esnasında” olan kelime yaptığı görev itibari ile anlamına yakındır. Parantez içinde belirtilen koşul doğru olduğu sürece istenilen komut kümesini işletir. Aşağıdaki örnek ilk bakışta biraz karışık gelebilir fakat dikkatli ve adım adım takip ederseniz pek de karışık olmadığını anlayacaksınız.


Kod:
<html>
<head><title>HTML içinde kullanılan PHP</title>
</head>
<body bgcolor="#ffffff" text="#000000">


<?
################
#  while.php   #
################


$a = 1;
while($a < 7):
 echo “<h$a>Bu h$a ile yazılmış bir başlık.</h$a><br>\n”;
 $a = $a + 1;
 endwhile;
?>


</body>
</html>

Yukarıdaki örnek hem while döngüsünün kullanımına hem de HTML içinde PHP kullanımına güzel bir örnek oluşturuyor. Kullandığım while döngüsünü aşağıdaki gibi de yazabilirdim.


Kod:
<html>
<head><title>HTML içinde kullanılan PHP</title>
</head>
<body bgcolor="#ffffff" text="#000000">
Kod:
<?
################
#  while.php   #
################


$a = 1;
while($a < 7)
{
 echo “<h$a>Bu h$a ile yazılmış bir başlık.</h$a><br>\n”;
 $a++;
}
?>


</body>
</html>

Sonuç yine aynı olacaktır. Kullanım açısından bir fark yoktur hangisinin kullanılacağı programcıya kalmıştır fakat ben örneklerimde hep ikinci kullanımı tercih ediyorum.
Yukarıdaki örnekte yabancı olduğunuz bir kullanım $a++ ifadesidir (Bu kullanımın aynısı C’de de vardır) Bu ifade $a = $a + 1 ifadesi ile aynıdır (Programcılıkta çok kullanılan bir ifadedir fakat deneyimi olmayanlar biraz zorlanacaktır). Bunun anlamı,
”$a’daki değeri bir arttır ve sonra bu değeri $a’nın yeni değeri olarak ata” dır. Yani $a = 1 ise $a++’dan sonra $a = 2 olacaktır. Aynı şekilde $a--'de, “$a’nın değerini bir azalt ve bu değeri $a’nın yeni değeri olarak ata” dır.


Yukarıdaki örnekte ilk olarak $a değişkenine 1 değeri atanıyor ve bu <h$a> ifadesi ile bir HTML etiketine çevriliyor. $a = 1 değeri için bu ifade <h1>, $a = 2 için bu ifade <h2> ... diye değerler alır. while döngüsü ile $a’nın alabileceği en son değerin 6 olduğu belirtilmiştir ($a < 7, yedi olduğu an döngü son bulur!). $a’nın 7 değerini alması ile belirtilen koşul yanlış olur (yani 0) ve döngü işletilmez. Eğer $a++ ifadesi kullanılmamış olsaydı, program sonsuz döngüye girecekti bu da ekrana sonsuz kere

<h1> etiketi ile belirtilen metnin basılması demektir. (Aslında sunucu sistemdeki PHP ayar dosyasında öntanımlı olarak PHP dosyalarının maksimum çalışma süreleri 30 saniye olarak belirlendiği için sonsuz döngü sözcükleri tam olarak doğru değildir).
while döngüsünde koşul önce gözden geçirilir, daha sonra işlemler gerçekleştirilir.
do ... while
do...while döngüsü, while döngüsü ile aynı işleve sahiptir. Yalnız arada bir fark vardır. While döngüsünde koşul döngüye girilmeden kontrol edilir buna karşın do....while döngüsünde koşul döngünün sonunda kontrol edilir.


Kod:
<?
$a = 0;
do {
  print $a;
} while($a > 0);
?>
Yukarıdaki kod normal while döngüsü ile yazılmış olsaydı, yani aağıdaki gibi
<?
$a = 0;
while($a > 0) {
  print $a;
}
?>

ekrana hiçbir çıktı vermeyecekti. Halbuki ilk örnekte ekrana “0” basılacaktır. Do....while ile oluturulan bir döngü while ile de oluşturulabilir ve benim şahsi görüşüm, while döngüsünün kullanımı daha kolaydır. Tabi ki bu döngünün de kendine has kullanım alanları vardır ama ben şu ana kadar kendi yazdığım betiklerde bu tür döngüler için hep while döngüsünü kullandım.


for


for döngüsü de hemen hemen aynı işlevi görür. Kullanım şeklini, while döngüsündeki örnek ile aynı çıktıyı verecek bir örnek ile açıklamak istiyorum.


Kod:
<html>
<head><title>HTML içinde kullanılan PHP</title>
</head>
<body bgcolor="#ffffff" text="#000000">


<?
################
#   for.php    #
################


 for ($a = 1; $a < 7; $a++)
 {
  echo "<h$a>Bu h$a ile yazılmış bir başlıktır.</h$a><br>\n";
 }
?>
</body>
</html>

Yukarıdaki kod da while döngüsündeki ile aynı çıktıyı verir. for döngüsünde değişkenin başlangıç değeri ilk olarak yazılır, daha sonra koşul ve en sonunda ise değişken için işletilmesi gereken bölüm gelir. Yani kullanımın kalıbı
for

(ilk_değer;koşul;işlem)


şeklindedir.
Tabii benim kullandığım örnek tüm döngüler için geçerli, öyle durumlar ile karşılaşırsınız ki alternatifiniz olmaz yani sadece for ya da while döngüsünü kullanabilirsiniz. Nasıl olsa hepsi aynı işi yapıyor diye üstten bakıp geçmeyin, iyice kavrayın.


switch


switch döngüsü aslında iç içe geçmiş if döngüleridir. Fakat, kişisel deneyimlerime dayanarak söylüyorum, birçok if kullandığınız bir döngüde iş bazen gerçekten içinden çıkılmaz bir hal alıyor. Mesela bir web formu ile (drop-down menu ile) size bir değer gelecek. Siz bu değerin ne olduğunu anlamak istiyorsunuz. Bunun için menüde önceden tanımlı değerler arasında bir secim yapılır. İşte bu seçim için switch döngüsü kullanılır. Aşağıdaki dosyaları yorum kısımlarında belirtilen isimler ile kaydedin ve daha sonra istemcinizden menu.html dosyasını açın.


Kod:
<!-- menu.html adı ile kaydedin -->
<html>
  <head>
    <title>Menu</title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <form action="menu.php" method="post">
      <b>İşletim sisteminizi seçin</b><br>
      <select name=”os_type” size=”1”>
        <option value=”win”>Windows 9x</option>
        <option value=”winnt”>Windows NT</option>
        <option value=”linux”>Linux</option>
        <option value=”unix”>UNIX</option>
        <option value=”os2”>OS/2</option>
        <option value=”macos”>MacOS</option>
      </select>
      <input type="submit" value=”  Sorgula  “>
    </form>
  </body>
</html>
<?
// menu.php adı ile kaydedin


switch($os_type)
{
  case “win” :
     echo “Kullandığınız işletim sistemi Windows 9x”;
     break;
  case “winnt” :
     echo “Kullandığınız işletim sistemi Windows NT”;
     break;
  case “linux” :
     echo “Kullandığınız işletim sistemi Linux”;
     break;
  case “unix” :
     echo “Kullandığınız işletim sistemi UNIX”;
     break;
  case “os2” :
     echo “Kullandığınız işletim sistemi OS/2”;
     break;
  case “macos” :
     echo “Kullandığınız işletim sistemi MacOS”;
     break;
}
?>

Yukarıdaki örnek kullanıcıya kullandığı işletim sistemini soruyor ve gelen cevap doğrultusunda döngüde belirtilen kısmı işletiyor. Kullandığım break komutu programın o kısmının işletilmesi halinde döngüden çıkılmasını sağlar, yani kullanıcı işletim sistemin Linux olarak işaretlemişse Windows, WindowsNT ve en son Linux bölümü işletilir. Linux bölümündeki “Kullandığınız işletim sistemi Linux” metni ekrana basılır ve bir sonraki komut olan break işletilir, break komutunun işlemesi ile döngüden çıkılır ve böylece diğer değerler kontrol edilerek vakit kaybedilmez.


switch döngüsünde kullanılan ve benim şu örnekte kullanmadığım bir özelliği daha var: default seçeneği.
Bu seçenek diğer hiçbir seçim doğru olmadığı taktirde çalıştırılacak kısımdır. Bir örnek vermek gerekirse.


Kod:
<?
// menu.php adı ile kaydedin


$i = 5;
switch($i)
{
  case “2”:
     echo “Değeri 2”;
     break;
  case “3”:
     echo “Değeri 3”;
     break;
  default:
     echo “Değeri bilinmiyor”;
}
?>

Bu kod ekrana “Değeri bilinmiyor” yazacaktır. Çünkü siz $i değişkenine tanımlı olan 2 ve 3 değerleri dışında ne değer verirseniz verin bu iki koşul dışında kalan bölüm yani default ile tanımlı bölüm işletilecektir.
Bazı PHP İşlevleri


fgets() ve fread() işlevleri

u iki işlev yazma modunda açılmış bir dosyadan bilgi almak için kullanılır. Aralarında ufak bir fark vardır. fgets() işlevi metin dosyalarında kullanılır ve dosyayı satır satır okur. fread() işlevi ise dosyayı ikili kipte (bayt bayt) okur.


Kod:
<?
####################
#  dosya_oku.php   #
####################


$dosya = fopen(“./dosya.txt”, ”r”);
while (!feof($dosya))
{
  $satir = fgets($dosya,1024);
  echo “$satir<br>”;
}
fclose($dosya);
?>

Yukarıdaki PHP programı bulunduğumuz dizindeki dosya.txt adlı dosyayı okuma kipinde açıp dosyanın sonuna kadar (!feof kalıbını birazdan anlatacağım) satır satır okuma gerçekleştirir ve ekrana yazar. Dosyayı okuma işlemi bitince de dosyayı kapatıp programı sonlandırır. fgets ile kullandığım “1024” rakamı okunacak bir satırdan kaç bayt alınacağını belirtir. Aslında yukarıdaki program require() işlevi ile hemen hemen aynı işi yapar.
fputs() ve fwrite() işlevleri
Tahmin edeceğiniz gibi bu iki işlevde dosyaya bilgi yazmak için kullanılır. İkisi arasında bir fark yoktur. Yazma kipinde açılmış bir dosyaya bilgi girişi için kullanılırlar.


Kod:
<?
###################
#  dosya_yaz.php  #
###################
$metin = ”Burada herhangi bir metin olabilir.”;
$dosya = fopen(“./defter.txt”,”w”);
fwrite($dosya,$metin);
fclose($dosya);
?>

Yukarıdaki PHP dosyası $metin adlı değişkendeki bilgiyi $dosya ile belirtilen dosyaya yazacaktır. Bu işlem sırasında bulunduğumuz dizinde defter.txt adlı bir dosya varsa silinecek ve yeniden oluşturulacaktır. Eğer varolan dosyamıza ekleme yapmak istiyorsak kullanmamız gereken dosya açma komutu fopen(“./defter.txt”,”a”) şeklinde olmalıdır. Ekleme dosya sonunu yapılır.


feof


Bir dosyanın sonunun gelip gelmediğini kontrol eder. Daha önceki örneklerimden birinde kullanmıştım.
while (!feof($dosya)) ......


Oradaki kullanım DEĞİL mantıksal işleçi ile olduğu için kullandığım while döngüsünde dosya sonu olmayana kadar koşul doğru kabul edilip döngü sürdürülecektir.
PHP ile Dizin İşlemleri


opendir() işlevi


Adında da anlaşılacağı gibi bu işlev kendine parametre olarak verilen dizini açmak için kullanılır. Bulunduğumuz dizindeki “resimler” alt dizinini açmak için
opendir(”./resimler”);


gibi bir ifade kullanırız.


readdir() işlevi


Bu işlev ise açık olan bir dizinde okuma yapmamıza olanak sağlar. Yine bulunduğumuz dizindeki “resimler” altdizinini okumak için
$dizi=opendir(“./resimler”);
readdir(“$dizin”);
gibi bir komut kullanırız. İsterseniz dizinler ile ilgili iki işlevi bir örnek ile açıklayalım. Bu işlevin çalışabilmesi için bulunduğumuz dizinin içinde bir “abc” dizini olmalı ve kullanıcı yetkileri 705 yada 755 şeklinde (yani herkese okuma yetkisi) olmalıdır.


Kod:
<?


##################
#   dizin.php    #
##################


$i = 1;
$dizin_ac = opendir(“./abc”);
while ($dosya = readdir($dizin_ac))
{
  echo “Bu abc dizinindeki $i. eleman : $dosya<br>”;
  $i++
}


?>
Yukarıdaki PHP programı bulunduğumuz dizindeki “abc” dizinini açıp, içeriğini sıra ile ekrana basmaktadır.
ereg() ve eregi() işlevleri
ereg() ve eregi() işlevleri bir metin içerisinde verilen bir kelimeyi arar. eregi() işlevi ereg() işlevinden farklı olarak arama sırasında büyük-küçük harf ayrımı yapmaz.
Hazırladığınız bir web formunda kullanıcının doğru bir e-posta adresi girip girmediğini kontrol etmek için aşağıdaki gibi bir kod kullanabilirsiniz.
Kod:
<?
################
#   ereg.php   #
################
if(ereg(“@”,$eposta) && ereg(“.”,$eposta))
{
  echo “Kaydolduğunuz için teşekkürler!”;
}
  else
{
  echo “<font color="#f80000">Lütfen e-posta adresinizi doğru girin!</font>”;
  require(“uye_kayit.html”);
}


?>
ereg_replace() ve eregi_replace işlevleri
Bu işlevler de belirtilen metin içinde istenilen bir kelimeyi bulup değiştirmek için kullanılır. Yine eregi_replace() işlevinin ereg_replace() işlevinden farkı büyük-küçük harf ayrımı yapmamasıdır.
<?
######################
#  ereg_replace.php  #
######################
ereg_replace(“fni18444@gantep.edu.tr”, ”yeni_adresim@sunucu.com”, $metin);
?>

Diyelim ki 10-15 sayfalık bir yazı yazdım ve bu yazı içerisinde e-posta adresimi sıkça kullandım. Yazımı yazdıktan bir süre sonra e-posta adresim değişti. İşte yukarıdaki kod ile önceden yazdığım yazı içerisindeki eski adresimi yenisi ile değiştirebilirim.
md5() işlevi
md5() şifreleme için kullanılan bir işlevdir. İşleve parametre olarak verilen metnin uzunluğu ne kadar olursa olsun işlev bu metni 32bit ile şifreler ve geri dönüşümü yoktur. Yani md5 ile şifrelenmiş bir metni tekrar eski haline getirmek olanaksızdır (en azından şimdilik ;)). Peki bu ne işimize yarayacak? Karşılaştırma yaparken, mesela md5 ile şifrelenip veritabanına kaydedilmiş bir şifreyi kontrol etmek için, kullanıcıdan gelen şifreyi de md5 ile şifreleyip karşılaştırma yapmanız yeterli olacaktır. Md5 hakkında daha ayrıntılı bilgi için internette herhangi bir arama motorundan “RFC1321” aratmanız yeterli olacaktır.
unlink() işlevi


Bu işlev kendisine parametre olarak girilen dosyayı silmek için kullanılır. Kullanımı unlink(“dosya_adı”) şeklindedir.
mkdir() ve rmdir() işlevleri


Bu iki işlev de dizin oluşturma ve silme için kullanılır. mkdir() kendisine parametre olarak verilen bir dizini oluşturur ve rmdir() ise kendisine parametre olarak verilen dizini siler.
Tabii buraya kadar anlattığım dizin ve dosya işlemlerini gerçekleştirebilmeniz için o dosya ve dizin üzerinde kullanım hakkına sahip olmanız gerekmektedir. Aksi taktirde dosyaya ulaşımda sorun olduğuna dair bir hata mesajı ile karşılaşırsınız. İnternet'teki bir sunucudan istekte bulunan bir kullanıcı sunucu sistem tarafında “diğer” kullanıcı grubuna dahil edilir. Dosya erişim yetkileri bu özellik göz önünde bulundurularak ayarlanmalıdır.




Gözümden kaçanlar olmuştur normalde kendim anlatacaktım tüm bildiklerimi işe gideceğim için alıntı yaptım ve sormak istediklerinizi sorun işden gelince cevap veririm
 
Gayet hoş bir anlatım olmuş, başarılı buldum eline sağlık
 
PHP öğrenmeyi düşünüyorum fena olmayan c++ ve Java alt yapım var fakat internette araştırma yaptığımda HTML den başlanması gerektiğini savunanlar çok fazla. Sizin bu konu hakkında fikriniz nedir ?
 
PHP öğrenmeyi düşünüyorum fena olmayan c++ ve Java alt yapım var fakat internette araştırma yaptığımda HTML den başlanması gerektiğini savunanlar çok fazla. Sizin bu konu hakkında fikriniz nedir ?
Başlayanlar hep öyle başlamışlar bende öyle başladım html yetersiz kalınca merakla daha fazlasını istiyosun. Kesinlikle öğrencem diyen alsın bir kitap çalışsın.
 
Gayet güzel anlatılmış bir konu elinize sağlık.
 
Geri
Üst