Php Dersleri – Form İşlemleri

Merhaba arkadaşlar Mobilhanem.com için hazırladığımız php derslerimizde bu ders Form İşlemleri nasıl yapılır bunları öğreneceğiz. Dikkatinizi çektimi bilmiyorum ama bu güne kadarki derslerimizde kullanıcıdan hiçbir veri almadık ve genellikle kullanıcıdan veri almadan çalışan bir program olmaz. Peki biz php de kullanıcıdan nasıl veri alacağız? İşte tam bu noktada formlar devreye giriyor ve hayatımızı kolaylaştırıyorlar 🙂 Php yi tek başına bilmemiz bir anlam ifade etmez arkadaşlar Php direk olarak kullanıcıdan bir veri alamadığı için HTML deki form elemanlarını kullanır. Ben Html bildiğinizi varsayarak derslerimi anlatacağım. Bilmeyen arkadaşlar bu adresten tüm form elemanlarına bakabilirler.

Form İşlemleri

Php de formlar GET ve POST olmak üzere ikiye ayrılır. İkiside temelde aynı işlevi yapar aralarındaki tek fark GET işleminde gönderdiğimiz veriler görünürken POST işleminde bu veriler görünmez. Örneğin GET ve POST ile login ekranı yapalım ve aralarındaki farkı görelim.

GET işlemi kullanılarak gönderilen form örneği:

<form action="" method="GET">
<table>
	<tr>
		<td>Kullanıcı Adı:</td>
		<td><input type="text" name="kullanici_adi" /></td>
	</tr>
	<tr>
		<td> Şifre:</td>
		<td> <input type="password" name="sifre" /></td>
	</tr>
	<tr>
		<td></td>
		<td style="text-align:right;"><button type="submit"> Giriş Yap</button> </td>
	</tr>
</table>

	
</form>

Ekran Görüntüsü:

Yandaki görselde de göründüğü gibi get işlemi kullanarak veri gönderdiğimizde gönderdiğimiz veriler adres çuuğunda görünür.

 

 

POST işlemi kullanarak form örneği:

<form action="" method="POST">
<table>
	<tr>
		<td>Kullanıcı Adı:</td>
		<td><input type="text" name="kullanici_adi" /></td>
	</tr>
	<tr>
		<td> Şifre:</td>
		<td> <input type="password" name="sifre" /></td>
	</tr>
	<tr>
		<td></td>
		<td style="text-align:right;"><button type="submit"> Giriş Yap</button> </td>
	</tr>
</table>

	
</form>

Ekran görüntüsü:

Post işleminde ise form ile gönderdiğimiz veriler adres çubuğunda görünmez. 

 

 

 

 

GET Methodu

Formdan GET işlemi ile gelen verileri Php de $_GET küresel değişkeni ile alırız.

Küresel değişkenler Php tarafından tanımlı değişkenlerdir.

$_GET bize bir dizi olarak formdan gelen değişkenleri verir. İstedğimiz bir form elemanının değerine ise $_GET[“degisken_name_degeri”]  şeklinde form elemanının name değeri ile ulaşırız. Yukarıdaki login formundan gelen değişkenleri GET ile alacak olursak:

<?php
if($_GET) {
	print_r($_GET);
	echo "<br/> Kullanıcı Adı:".$_GET["kullanici_adi"];
}


?>

<form action="" method="GET">
<table>
	<tr>
		<td>Kullanıcı Adı:</td>
		<td><input type="text" name="kullanici_adi" /></td>
	</tr>
	<tr>
		<td> Şifre:</td>
		<td> <input type="password" name="sifre" /></td>
	</tr>
	<tr>
		<td></td>
		<td style="text-align:right;"><button type="submit"> Giriş Yap</button> </td>
	</tr>
</table>

	
</form>

Php kısmını anlatacak olursak:

  • öncelikle GET değişkeni varmı yani butona basılıp değişkenler gönderilmiş mi kontrol ettik.
  • Eğer gönderilmiş ise $_GET dizisini ekrana yazdırdık.
  • $_GET dizisine ait kullanici_adi keyine sahip verinin değerini yani $_GET[“kullanici_adi”] nin değerini yazdırdık.

GET işlemleri genellikle sayfadan sayfaya veri taşımak için kullanılır çok nadir olarak form da method=”GET” şeklinde kullanırız.

örneğin: Hepinizinde karşılatığı haberler.php?id=5 şeklinde bir link yapısı olduğunu düşünürsek haberler.php sayfasına id=5 değişkenini göndermiş oluyoruz ve bu değişkeni haberler sayfasında $_GET[“id”] şekline alarak kullanıyoruz.

POST Methodu

Post işlemide get işlemi ile aynı mantıkta çalışır. ve kürsel değişken olarak $_POST değişkenini kullanır.  Post işlemi yapmak için html tarafındaki form etiketinin method kısmına POST yazmamız gerekir. Login formunu POST işlemi ile yapacak olursak:

<?php
if($_POST) {
	print_r($_POST);
	echo "<br/> Kullanıcı Adı:".$_POST["kullanici_adi"];
}


?>

<form action="" method="POST">
<table>
	<tr>
		<td>Kullanıcı Adı:</td>
		<td><input type="text" name="kullanici_adi" /></td>
	</tr>
	<tr>
		<td> Şifre:</td>
		<td> <input type="password" name="sifre" /></td>
	</tr>
	<tr>
		<td></td>
		<td style="text-align:right;"><button type="submit"> Giriş Yap</button> </td>
	</tr>
</table>

	
</form>

Yine Php kısmına bakacak olursak:

  • Öncelikle bir post işlemi varmı kontrol ediyoruz. (Butona basılmış mı kontrolü)
  • Eğer post işlemi var ise $_POST dizisini ekrana yazdırıyoruz.
  • Daha sonra $_POST[“kullanici_adi”] şeklinde dizinin elemanını yazdırıyoruz.

Post methodu GET methoduna göre daha güvenli olduğu için genelde form işlmelerinde POST methodu kullanılır. Tabi formun güvenliğinden yine biz yazılımcılar sorumluyuz.

Genellikle web sitesi açıklarının baş gösterdiği yerler formlardır. Bu yüzden formun güvenliğini çok iyi bir şekilde sağlamak zorundayız.

Güvenli bir şekilde login işlemi yapabilen bir form oluşturalım ve form üzerinden biraz konuşup dersimizi bitirelim.

Güvenli Şekilde Form Oluşturmak

Kullandığımız fonksiyonları açıklayacak olursak:

  • addslashes($degisken) parametre olarak aldığı değişkenin içerisinde eğer tırnak varsa bu tırnak işaretini pasifleştirir. örneğin: Erzurum’da diye bir veri gelirse bu veriyi Erzurum\’da ya çevirir. Bu işlemi yapmamızın nedenini veri tabanı gördüğümizde daha iyi anlayacaksınız.
  • trim($degisken) değişkenin sağ ve solundaki boşlukları siler.
  • empty($degisken) değişkenin boşmu dolumu olduğunu kontrol eder.
  • isset($degisken) değişken varmı yokmu kontrol eder.
<?php
// bizim belirlediğimiz kullanıcı adı ve şifre
$_kullaniciAdi = "vehbiakdogan";
$_sifre = 1234;

if(isset($_POST["giris_yap"])) {
	$kullaniciAdi = addslashes(trim($_POST["kullanici_adi"]));
	$sifre = addslashes(trim($_POST["sifre"]));
	// kullanıcı adı ve şifreyi aldık tek tırnak ve sağ-sol daki boşluklardan arındırdık.
	if(empty($kullaniciAdi) || empty($sifre)) { // kullanıcı adı veya şifreden biri boş ise bilgi ver
		echo "Kullanıcı adı veya şifreniz boş.";
	}else if($_kullaniciAdi != $kullaniciAdi || $_sifre != $sifre) { // kullanıcı adı veya şifreden biri hatalı ise bilgi ver
		echo "Kullanıcı adı veya şifre hatalı.";
	}else { // başarıyla giriş yap.
		echo "Tebrikler Başarıyla Giriş Yaptınız.";
	}
}


?>

<form action="" method="POST">
<table>
	<tr>
		<td>Kullanıcı Adı:</td>
		<td><input type="text" name="kullanici_adi" /></td>
	</tr>
	<tr>
		<td> Şifre:</td>
		<td> <input type="password" name="sifre" /></td>
	</tr>
	<tr>
		<td></td>
		<td style="text-align:right;"><button type="submit" name="giris_yap"> Giriş Yap</button> </td>
	</tr>
</table>

	
</form>

Kodun içerisinde detaylı açıklamaları yaptık arkadaşlar. ve artık güvenli bir şekilde login olabiliriz.  6. satırda özellikle $_POST[“giris_yap”] ı kontrol etmemizin sebebi sayfamızda birden fazla form varsa hangi formun post edildiğini hangi formun butonuna basıldığını kontrol ederek anlayabilmemiz adına yaptık.

 

Evet arkadaşlar bir dersimizin daha sonuna geldik. Bir sonraki dersimiz  Php Dersleri – GET ve POST Örnekleri dersimizde görüşmek üzere 🙂

 

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm php dersleri için tıklayınız..

 

 

 

10

Vehbi Akdoğan

Erzurum Atatürk Üniversitesi Bilgisayar Mühendisliği Mezunu
Web & Android Developer
#erzurumspor

6 Yorum

  • Ürünler isimli bir sayfamız var, içeriğinde 3 adet ürün listelenmiş diyelim. A B C isimli ürünlerin altında da bilgi al yazıyor.B ürünü için bilgi almak üzere, ilgili butona tıklayınca iletişim formunun “konu” bölümüne otomatik olarak “B ürünü” yazsın istiyorum.Nasıl bir yol önerirsiniz? Teşekkürler

  • Hocam merhaba yazı harika olmuş elinize emeğinize sağlık.
    Bir bot yapmaya çalışıyorum ilk defa php kullanıyorum. Kod aşağıdaki hocam
    Bu kodun üstüne bir text kutusu koyup entera basıldığında https://siteadresi.com/icerik.html yerine bu kutuya yazdığım linkten veriyi getirsin istiyorum. Yardımcı olma imkanınız varsa sevinirim.

    <?php
    $veri=file_get_contents('https://siteadresi.com/icerik.html&#039;);
    preg_match_all('@(.*?)@si’,$veri,$baslik);
    echo $baslik[0][0];
    ?>

  • merhaba,
    ben forma resim ekletiyorum ama resim seçilmeyince default olarak db ve klasöre bir resim kaydedilsin istiyorum bunu nasıl yapabilirim?

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?