Yazılım Yazarı Menu

Permalink:

Formdan Veri Çekme Fonksiyonları, $_POST ve $_GET ile Veri Çekme

Merhaba arkadaşlar,
Bu dersimizde artık php’nin kullanıcıyla etkileşimini sağlayan ana unsurlara geliyoruz.
Bu ilerleme için gerideki birkaç bilgiyi hatırlamanız gerekmektedir.

Gerekenler;

  • Html Form Oluşturma
  • Html Form Elementleri
  • Html Form Özellikleri

Eğer ben bunları unuttum diyorsanız bunlar size web programlama da lazım olacak temel bilgilerdir, hemen şuraya tıklayarak bu konuyu tekrar edip sonra bu konuya dönmeniz daha sağlıklı olur.

Eğer hatırlıyorsanız devam edebiliriz.

$_POST komutu bizim POST ile gönderilmiş formlarımızda ki gönderilen verileri okumamızı sağlar.

POST metodu kullanılan bir form ile gönderilen veriyi PHP’de $_POST komutu ile alırız ve işleme sokarız.

$_POST komutunun kullanımına giriş yapacak olursak;

$_POST["cekilecek_input_name"];

Verileri gönderirken inputlara name atıyorduk, kullanıcı formumuza bir değer girip bunu gönderdiği zaman bu name’ler üzerinden o inputa girilen değere ulaşıyoruz.
Mesela kullanıcıya ad ve soyad sorduğunuzu ve;

  • Adı için atadığınız inputun name’ini = ismi
  • Soyad’ı için atadığınız inputun name’ini = soyismi

yaptığınızı düşünürsek kullanıcı adını ve soyadını girip formu gönderdiği zaman biz bunları php ile ;
<?php
$_POST["ismi"];
$_POST["soyismi"];
?>

Şeklinde alırız. Bunları ekrana yazdırmak istersek direkte yazdırabiliriz bir değişkene atayıpda yazdırabiliriz;
<?php
echo $_POST["ismi"];
echo $_POST["soyismi"];
$adi = $_POST["ismi"];
$soyadi = $_POST["soyismi"];
echo $adi;
echo $soyadi;
?>

Bu sayede kullanıcıdan aldığımız verileri sadece ekrana yazdırmayız, bu verileri veritabanına kaydetme gibi işlemler yaparız bunlara ilerleyen konularda değindiğimizde görecebileceksiniz.
Şuanlık ekrana yazdırmayı bilmeniz gerekiyor.

Not: Kodları localhost’ta deniyorsanız size bir hata gelebilir, bu hata oluşturduğunuz html formun üstünde çıkar, bu hatayı önemsemeyiniz, hatanın gelme sebebi henüz formunuz POST edilmediğinden ve $_POST[“ismi”]; $_POST[“soyismi”]; gibi komutlarımız bize bir değer döndürmeyecek bu hata karşımıza çıkacaktır.
Bunu çözümünü tabiki Denetim Fonksiyonları konumuzda işleyeceğiz. O zaman bu hataya ve çözümüne daha detaylı deyineceğiz. Hosting üzerinde çalışanlar için zaten bir problem yok. Kodlar sağlıklıdır bu php yapılandırmasıyla ilgili doğal bir hata hatta hata demek doğru değil, uyarıdır.

Html formda kullandığımız iki tür method vardı hatırlayınız;

  • POST: Verileri arkadan, göstermeden gizli gönderir.
  • GET: Verileri url üzerinden gönderir.
    Örn: http://yazilimyazari.com/index.php?ismi=ali&soyismi=öz gibi.

Şuan POST ile gönderilen verilerin nasıl alınacağını ve yazdıralacağını gördük. Sıra geldi;

GET ile Gönderilen Verilerin $_GET Komutuyla Alınması

Get ile gönderilen verilerde tıpkı $_POST komutunda olduğu gibi $_GET ile komutuyla alınırlar yani;

$_GET["cekilecek_input_name"];

Yukarıda oluşturduğumuz formu yine kullanalım.Bu sefer formumuzun method özelliği POST değil GET olacak tabikii.
<?php
echo $_GET["ismi"];
echo $_GET["soyismi"];
$ad = $_GET["ismi"];
$soyad = $_GET["soyismi"];
?>

Form oluşturmayı hatırlamayanlar ve kodları test etmek isteyenler için form kodlarıyla birlikte vermek gerekirse;
<!DOCTYPE html>
<html>
<body>
<?php
$ad = $_GET["ismi"];
$soyad = $_GET["soyismi"];
echo $ad;
echo $soyad;
?>
<form action="" method="get">
Adınız: <input name="ismi"/>
Soyadınız: <input name="soyismi"/>
<input type="submit" value="Gönder">
</form>
</body>
</html>

<!DOCTYPE html>
<html>
<body>
<?php
$ad = $_POST["ismi"];
$soyad = $_POST["soyismi"];
echo $ad;
echo $soyad;
?>
<form action="" method="post">
Adınız: <input name="ismi"/>
Soyadınız: <input name="soyismi"/>
<input type="submit" value="Gönder">
</form>
</body>
</html>

İyi günler.
Yazılım Yazarı

(13691) kez okundu.

            • Furkan

              Php’de veri tabanına kayıtlı yaşı 20-30 olanları nasıl sildirebilirim ?

              • Yazılım Yazarı

                mysql bağlantısını yaptıktan sonra aşağıdaki sorguyu çalıştırırsanız, kayıtları siler yanlız yaş alanı tabloda neyse ona göre düzenleyin.
                mysql_query("DELETE FROM tabloadiniz WHERE yas > 20 AND yas < 30");

            • Furkan

              Teşekkür ederim :)

            • Mert Köseoğlu

              Veri tabanına bir veri en güvenli şekilde hangi fonksiyonlar kullanılarak eklenir ?

              • admin

                Eğer php 5.0 ve üstü sürümlerden bahsediyorsak güvenli ve hızlı alternatifleri daha çok olan PDO yapısı ile sorgular çalıştırılmalıdır. Bunun yanı sıra ister mysql fonksiyonlarıyla isterse pdo ile olsun eğer (select * from tablo where id=’$_GET[“id”]’) tarzı bir kullanım varsa dışarıdan sorgumuza dahil ettiğimiz her türlü verinin string olduğundan emin olmamız gerekir bu bizi SQL Injection açıklarına karşı korur.
                Bunun içinde PDO da prepare ve execute komutları kullanılabilir.
                Ayrıca try catch yöntemi ile eğer bir veritabanı hatası olursa bunu bir dosyaya loglatarak kullanıcıya tablo ve alan bilgilerini içeren mesajların çıkmaması için sayfayı exit veya die komutuyla sonlandırırsak. Hata tespiti de güvenli olur.
                Unutmadan mysql ile çalışırsanız sql injection için gelen verileri mysql_real_escape_string($deger); fonksiyonu ile filtreleyebilirsiniz, PDO da bu biraz daha kapsamlı olduğundan onu ilerleyen konularda işleyeceğim.

                PDO’nun basit yapısını kullanacaksak bir nesne tabanlı programlama yapmıyorsak PDO Quote de sql injection konusunda aynı işlevi görecektir.

                Bunların dışında veritabanı güvenliği için veritabanı şifresinin iyiliği ve veritabanı bilgileri bulunan, bağlantı yapılan dosyanın güvenliği önemlidir. Bunlara dışardan erişimi htaccess ile engelleyebiliriz. Onuda bir .htaccess dosyası oluşturup ana dizine atarak bağlantı yaptığımız dosyaya sadece include ve reuqire ile erişilmesini sağlayarak yapabiliriz.
                Gerekli .htaccess kodu:

                .htaccess ile dosya engelleme yöntemi

                Buradaki hata\.log$ kısmını kendinize göre düzenleyebilirsiniz. Aynı dizindeyse bağlantı dosyasıyla baglanti.php gibi yada dizin/baglanti.php
                Şeklinde yapabiliriz.

                Bunlar en basit yöntemler ama atlandığı zaman sıkıntı çıkartan yöntemler bunun dışında kullanılan veritabanına göre bir çok güvenlik işlemi yapılabilir.
                Bir veriyi güvenli ekleme konusuna odaklanırsak burada mutlaka verinin string olarak sorguya geçtiğinden emin olmak gerekiyor bu konudada pdo da quote, prepare ve execute mysql fonksiyonlarında ise mysql_real_escape_string(); bize yardımcı oluyor.

                iyi günler dilerim.

            • serdar

              Merhaba bir sorum olacaktı hocam.
              İddaa bülteni hazırladım ve oradaki oranlara tıklatıp yanda iddaa kuponu nasıl hazırlatırım.

            • ibrahim

              iyi günler verdiğiniz bilgiler için teşekkürler. bir sorum olacak. yazdığım yazılımda müşteri sayfasına hem get ile hem de post ile değişken gönderebilir miyim. yani müşteri sayfasının başında müşteri id get ile gelmişse onu al postla gelmişse posttakini al gibi bir kod olabilir mi

              • admin

                Merhaba İbrahim,
                Yapabilirsin, $_REQUEST globalini kullanarak hem POST edilen hemde GET’ten gelen verileri alabilirsin.

            • Ertan Çemrek

              Merhaba, stok.php adlı sayfam var ve stok kartları bu sayfada listeleniyor, stok_hareket.php adlı diğer sayfada ise stok.php sayfasından POST methodu ile stok_hareket.php sayfasında bulunan WHERE kısıtına stok.php sayfasındanki STOK_KODU sütunundaki stok kartlarına tıkladığımızda gelmesini istemekteyim. Bunun için bu kod yapılandırmasını nasıl kullanabilirim? İyi günler dilerim.

            • Betül Öztürk

              Bir inputtan değil de değişkendeki veriyi çekmenin bir yolu var mı?

              • admin

                Sorunuzu tam anlayamadım. Eğer bir değişkendeki değeri ekrana yazdırmak istiyorsanız;
                $degisken = 'ornekdeger';
                echo $degisken;

                Şeklinde yazdırabilirsiniz eğer bir değişkendeki değeri form ile göndermekten bahsediyorsanız;
                $degisken = 'ornekdeger';
                echo '<input type="hidden" name="degisken" value="'.$degisken.'">';

                Şeklinde gönderebilirsiniz. Ancak kritik veriler için bu yöntem güvenli değildir. Bu tarz verileri SESSION’lar ile taşımanız en doğru yol olacaktır. Önemsiz verilerde ise hidden tipinde bir inputun value attribute’ına değişken değerini yazdırarak gönderebilirsiniz.

                Sorunuzu anladığım kadarıyla cevaplamaya çalıştım. Daha detaylı bir şekilde sorarsanız daha iyi yardımcı olmaya çalışabilirim.

                İyi günler dilerim.

            • Turan

              Merhabalar. Acaba Size ulasabilecegim MAİL adresi / facebook adresi var mı?

            • Rabia

              Merhaba; Ben post metodu ile gönderdiğim veriyi gönderdiğim sayfada bir labelda nasıl yazdırabilirim acaba ?

            • Arda Ata

              şuanda sınavdayim ve acil yardımın lazım admin bey hoca bizden 1 ci sayı 2 ci sayıyı yazıp işlem türünü seçip gönder e basmamızı ve veriyi başka sayfaya göndermemizi istiyor lütfen yardım ediniz:(

            • FAtih

              hocam aynı html sayfası üzerinde birden fazla post veya get komutu kullandığımda hata veriyor bunun çözümü nedir acaba

            • Yorum bırakıyor olduğunuz için teşekkürler.
            escort bayan ankara ankara escort ankara escort bayan sıhhıye escort