Bu yazıda PHP dili ile HTML FORM nesnelerinden bir veriyi nasıl alacağınızı ve yazdıracağınızı göstereceğim. Ayrıca bir form nesnesinden dizi okumayı, resim dosyasını kaydetmeyi de yine bu yazı içinde ele alacağım.
PHP POST yada GET kullanmak
PHP Formdan veri almayı göstermeden önce form verilerini bir php sayfaya gönderirken iki ayrı yöntem kullandığımızı belirtmek isterim. POST yada GET yöntemlerinden hangisini kullanıyorsak Verileri alırken de bu yöntemlere uygun süper global değişkenleri kullanmamız gerkiyor.
- Post yöntemi ile gönderilen bir sayfadaki değerleri okumak için $_POST,
- Get yöntem ile gönderilen bir sayfadaki değerleri okumak için $_GET
süper global değişkenleri kullanılır.
Basit bir formdan veri almak
Aşağıdaki gibi ad, soyad ve mail bilgilerimizin kayıtlı olduğu bir formdan get yöntemi ile verileri almak ve ekrana yazdırmak için aşağıdaki gibi bir yöntem kullanırız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action="sonuc.php" method="get"> <input type="text" name="ad"> <input type="text" name="soyad"> <input type="email" name="eposta"> <input type="submit" value="GÖNDER"> </form> </body> </html> |
sonuc.php
1 2 3 4 5 6 7 | <?php echo $_GET["ad"]; echo $_GET["soyad"]; echo $_GET["eposta"]; |
Eer gönderme yöntemi method=”post” olarak ayarlanmış olsaydı, yazılması gereken PHP kodu şu şekilde olacaktı.
1 2 3 4 5 6 7 | <?php echo $_POST["ad"]; echo $_POST["soyad"]; echo $_POST["eposta"]; |
PHP Dosya Göndermek
PHP ile dosya göndermek ve dosya verilerini almak için HTML FORM nesnesinin niteliklerini method=”post” enctype=”multipart/form-data” şeklinde değiştirmemiz gerekmektedir. Aşağıdaki gibi bir dosyayı göndermek ve dosyayı aynı dizine kaydetmek için aşağıdaki gibi kodları yazabiliriz.
Dosyayı okumak için $_FILES süper global değişkeni kullanılır. Bu değişkende dosyanın bilgileri kaydedilmektedir. Örnek bir dosyanın ürettiği değerler aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | array(1) { ["dosya"]=> array(5) { ["name"]=> string(13) "kutuphane.sql" ["type"]=> string(24) "application/octet-stream" ["tmp_name"]=> string(24) "D:\xampp\tmp\php6B6B.tmp" ["error"]=> int(0) ["size"]=> int(63523) } } |
Yukarıdaki $_FILES adında bir değişkenin ürettiği çıktıdır. Bu parametrelerden faydalanarak dosya hakkında bilgilere ve kayıt verilerine ulaşabiliriz. Aşağıdaki HTML dosyasını ve buradaki dosyayı kaydeden PHP dosyasını aşağıdaki kodda veriyorum.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action="sonuc.php" method="post" enctype="multipart/form-data"> <input type="text" name="ad"> <input type="text" name="soyad"> <input type="file" name="dosya"> <input type="submit" value="GÖNDER"> </form> </body> </html> |
sonuc.php
1 2 3 4 5 6 7 8 9 10 11 | <?php echo $_POST["ad"]; echo $_POST["soyad"]; $dosya_adi=basename($_FILES["dosya"]["name"]); $dosya_temp=$_FILES["dosya"]["tmp_name"]; move_uploaded_file( $dosya_temp , __DIR__."//".$dosya_adi); |
PHP HTML Dizi Göndermek
Daha önce hiç duymadıysanız tekrar belirteyim HTML ile PHP’ye dizi gönderebilirsiniz. Bunu yapmak için sadece gönderdiğiniz verinin bir dizi olduğunu belirtmeniz gerekir. Aşağıdaki hobilerim seçeneği birden fazla seçenekten oluşabilir. Ancak bunların tamamı hobiler adında bir listenin öğesini ifade etmektedir. Aşağıdaki HTML ile gönderilen hobileri ekranda yazdıran PHP foreach(dizileri yazdırmak için kullanılır) döngüsü gösterilmektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action="sonuc.php" method="post"> yüzme <input type="checkbox" name="hobi[]" value="yüzme"><br> futbol <input type="checkbox" name="hobi[]" value="futbol"><br> tenis <input type="checkbox" name="hobi[]" value="tenis"><br> satranç <input type="checkbox" name="hobi[]" value="satranç"><br> <input type="submit" value="GÖNDER"> </form> </body> </html> |
Hobileri yazdırmak için kullanacağımız foreach döngüsü şu şekilde olacaktır.
sonuc.php
1 2 3 4 5 6 7 8 | <?php $hobiler=$_POST["hobi"]; foreach ($hobiler as $hobi) { echo $hobi."<br>"; } |
Youtube Video Örneği
Yukarıdaki açıklamalara ek olarak youtube üzerinde hazırladığımız çalışmanın örnek kodlarını aşağıdaki videonun altında paylaşılmıştır.
form.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | <!doctype html> <html lang="tr"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Tasarım Kodlama</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous"> </head> <body> <div class="container"> <div class="row m-4"> <div class="col-4 bg-warning border border-1 border-danger"> <form action="sonuc.php" method="post" enctype="multipart/form-data"> <div class="mb-3"> <label for="isim" class="form-label">Kullanıcı Adı:</label> <input type="text" class="form-control" id="isim" name="isim" placeholder="Adınız"> </div> <div class="mb-3"> <label for="soyisim" class="form-label">Şifre:</label> <input type="password" class="form-control" id="sifre" name="sifre" placeholder="Şifreniz"> </div> <div class="mb-3"> <label for="cinsK" class="form-label">Kadın: <input type="radio"class="form-check-input" id="cinsK" name="cins" value="K"> </label> <label for="cinsE" class="form-label">Erkek: <input type="radio"class="form-check-input" id="cinsE" name="cins" value="E"> </label> </div> <div class="mb-3"> <label for="diller" class="form-label">C#: <input type="checkbox"class="form-check-input" id="dil1" name="diller[]" value="Csharp"> </label> <label for="diller" class="form-label">Java: <input type="checkbox"class="form-check-input" id="dil2" name="diller[]" value="Java"> </label> <label for="diller" class="form-label">PHP: <input type="checkbox"class="form-check-input" id="dil3" name="diller[]" value="PHP"> </label> <label for="diller" class="form-label">Python: <input type="checkbox"class="form-check-input" id="dil4" name="diller[]" value="Python"> </label> </div> <div class="mb-3"> <label for="dosya" class="form-label">Bir Dosya Yükleyin:</label> <input class="form-control" type="file" id="dosya" name="dosya"> </div> <div class="mb-3"> <label for="gorus" class="form-label">Düşünceleriniz:</label> <textarea class="form-control" id="gorus" name="gorus" rows="3"></textarea> </div> <div class="mb-3"> <button type="submit" name="kayit" value="2" class="btn btn-primary mb-3">Kaydet</button> </div> </form> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script> </body> </html> |
sonuc.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php //$_GET ve $_POST if(isset($_POST["kayit"])){ echo "Adınız : ". $_POST["isim"] ."<br>"; echo "Şifre : ". $_POST["sifre"] ."<br>"; echo "Cinsiyet : ". $_POST["cins"] ."<br>"; echo "Görüş : ". $_POST["gorus"] ."<br>"; if(isset($_FILES)){ echo $_FILES["dosya"]["name"] ." "; echo $_FILES["dosya"]["size"] ." "; echo $_FILES["dosya"]["type"] ."<br> "; //move_uploaded_file($_FILES["dosya"]["tmp_name"],$_FILES["dosya"]["name"]); } echo "Diller :"; foreach($_POST["diller"] as $dil){ echo $dil. " "; } echo "<br>"; } |
1 Yorum