Php 8 Form Bilgilerinin Kontrollerde Tutulması

Php 8 Form Bilgilerinin Kontrollerde Tutulması

PHP 8'de form bilgilerinin kontrollerde tutulması, kullanıcı formu doldurduktan sonra hata oluşursa bilgilerin kaybolmasını önlemek için yapılır. Bu, kullanıcı deneyimini artırır ve kullanıcıların formu tekrar doldurmasını engeller. Form bilgilerinin yeniden doldurulması, özellikle hatalı gönderimlerde, veri kaybını önler.

1. Form Bilgilerini Tutma Yöntemleri

PHP'de form bilgilerini iki şekilde tutabiliriz:

  • POST verilerini tekrar doldurmak: Form gönderildikten sonra aynı verilerin formda tekrar gösterilmesini sağlar.
  • Session (oturum) kullanımı: Verileri session ile saklayarak, form bilgilerinin bir sayfadan diğerine taşınmasını sağlar.

1.1. POST Verilerinin Tekrar Formda Gösterilmesi

Formu gönderdiğimizde, kullanıcı herhangi bir hatalı bilgi girdiğinde formdaki bilgileri tekrar göstermek için value veya textarea etiketleri içinde PHP kullanabiliriz. Bu sayede form verileri kaybolmaz.

HTML Formu:

<!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <title>Kayıt Formu</title> </head> <body> <h1>Kayıt Formu</h1> <form action="register.php" method="post"> <label for="name">İsim:</label> <input type="text" id="name" name="name" value="<?php if(isset($_POST['name'])) echo htmlspecialchars($_POST['name']); ?>"> <br> <br> <label for="email">E-posta:</label> <input type="email" id="email" name="email" value="<?php if(isset($_POST['email'])) echo htmlspecialchars($_POST['email']); ?>"> <br> <br> <label for="password">Şifre:</label> <input type="password" id="password" name="password"> <br> <br> <input type="submit" value="Kayıt Ol"> </form> </body> </html>

Bu örnekte:

  • value="<?php if(isset($_POST['name'])) echo htmlspecialchars($_POST['name']); ?>" : Eğer form daha önce doldurulmuşsa, POST ile gelen değer tekrar gösterilir. Bu, formun yenilenmesi durumunda bile kullanıcıdan alınan verinin kaybolmamasını sağlar.
  • htmlspecialchars() fonksiyonu kullanılarak XSS saldırılarına karşı form verileri temizlenir.

1.2. PHP ile Verileri İşleme (register.php)

Form gönderildikten sonra, PHP ile hata kontrolü yapılır ve hata oluştuğunda form tekrar doldurulmuş şekilde gösterilir.

register.php:

<?php $errors = []; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = trim($_POST['name']); $email = trim($_POST['email']); $password = trim($_POST['password']); // İsim doğrulama if (empty($name)) { $errors[] = "İsim alanı boş olamaz."; } // E-posta doğrulama if (empty($email)) { $errors[] = "E-posta alanı boş olamaz."; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $errors[] = "Geçerli bir e-posta adresi giriniz."; } // Şifre doğrulama if (empty($password)) { $errors[] = "Şifre alanı boş olamaz."; } // Eğer hata yoksa kayıt işlemi if (count($errors) == 0) { // Veritabanına ekleme işlemi yapılır. echo "Kayıt başarılı!"; } else { // Hata varsa ekrana yazdır foreach ($errors as $error) { echo "<p style='color:red;'>$error</p>"; } } } ?>

Bu kodda:

  • Form verileri POST ile alınıp kontrol edilir.
  • Eğer formda eksik veya hatalı veri varsa, hata mesajları ekrana yazdırılır ve formdaki bilgiler kaybolmadan tekrar gösterilir.

1.3. Textarea Alanında Veri Saklama

Eğer formda bir textarea alanı varsa, verileri şu şekilde saklayabilirsiniz:

<label for="message">Mesaj:</label> <textarea id="message" name="message"> <?php if(isset($_POST['message'])) echo htmlspecialchars($_POST['message']); ?> </textarea>

2. Session (Oturum) ile Verileri Saklama

Daha gelişmiş bir yöntem ise Session kullanarak verileri saklamaktır. Bu, kullanıcı bir sayfadan diğerine geçse bile verilerin kaybolmamasını sağlar.

2.1. Session Kullanarak Form Bilgilerini Saklama

  1. Oturum başlatma: PHP ile session'ları kullanarak form verilerini geçici olarak saklayabiliriz.

form.php (Session ile form bilgilerini tutma):

<?php session_start(); ?> <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <title>Kayıt Formu</title> </head> <body> <h1>Kayıt Formu</h1> <form action="register.php" method="post"> <label for="name">İsim:</label> <input type="text" id="name" name="name" value="<?php if(isset($_SESSION['name'])) echo htmlspecialchars($_SESSION['name']); ?>"><br><br> <label for="email">E-posta:</label> <input type="email" id="email" name="email" value="<?php if(isset($_SESSION['email'])) echo htmlspecialchars($_SESSION['email']); ?>"><br><br> <label for="password">Şifre:</label> <input type="password" id="password" name="password"><br><br> <input type="submit" value="Kayıt Ol"> </form> </body> </html>
  1. register.php (Form bilgilerini session'da saklama):
<?php session_start(); $errors = []; if ($_SERVER["REQUEST_METHOD"] == "POST") { // Form verilerini al $name = trim($_POST['name']); $email = trim($_POST['email']); $password = trim($_POST['password']); // Session'da bilgileri sakla $_SESSION['name'] = $name; $_SESSION['email'] = $email; // İsim doğrulama if (empty($name)) { $errors[] = "İsim alanı boş olamaz."; } // E-posta doğrulama if (empty($email)) { $errors[] = "E-posta alanı boş olamaz."; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $errors[] = "Geçerli bir e-posta adresi giriniz."; } // Şifre doğrulama if (empty($password)) { $errors[] = "Şifre alanı boş olamaz."; } // Hata yoksa session verilerini temizle if (count($errors) == 0) { echo "Kayıt başarılı!"; session_unset(); // Form başarıyla gönderildiğinde session temizlenir. } else { // Hata varsa ekrana yazdır foreach ($errors as $error) { echo "<p style='color:red;'>$error</p>"; } } } ?>
  • Bu kodda form bilgileri session'da saklanır. Eğer hata oluşursa form tekrar doldurulduğunda veriler kaybolmadan geri yüklenir.
  • session_unset() ile form başarıyla gönderildiğinde session'daki veriler temizlenir.

3. Sonuç

PHP 8'de form verilerini kontrollerde tutmak, kullanıcı deneyimini artırır ve form bilgilerini kaybetmeyi önler. İki temel yöntem:

  • POST verilerini saklama: Aynı sayfada verileri tekrar doldurmak için kullanılır.
  • Session kullanımı: Verileri sayfalar arasında taşımak ve kaydetmek için daha güçlü bir yöntemdir.

Bu teknikler sayesinde kullanıcı formları doldururken olası hatalar durumunda veriler kaybolmadan tekrar gösterilebilir.



Yorum Ekle

Üzerine gel