PHP Formları

Formlar web geliştirmenin en önemli parçalarından biridir. Kullanıcıların bir web sitesine iletişim mesajları, oturum açma ayrıntıları, kayıt verileri, arama anahtar sözcükleri, yorumlar ve profil bilgileri gibi bilgiler göndermesine olanak tanır.

PHP’de formlar genellikle aşağıdakiler kullanılarak işlenir:$_GETve$_POSTsüper küreseller. Geliştirici, gönderilen verileri aldıktan sonra genellikle girişi doğrular, gerekli alanları kontrol eder, e-posta ve URL formatlarını doğrular ve ardından nihai sonucu işler.

Bu makalede, öğrenme yolunda gösterilen ana PHP form konuları açıklanmaktadır: PHP form işleme, PHP form doğrulaması, PHP formu gerekli alanlar, PHP form URL'si ve e-posta doğrulaması ve eksiksiz bir PHP form örneği.

PHP Form İşleme

PHP form işleme, HTML formundan gönderilen verilerin alınması ve sunucu tarafında işlenmesi anlamına gelir. Bir form genellikle verileri iki yaygın HTTP yönteminden birini kullanarak gönderir:GETveyaPOST.

GETyöntemi, form verilerini URL sorgu dizesi aracılığıyla gönderir. Bu yöntem, gönderilen verilerin tarayıcı URL'sinde güvenli bir şekilde görünebileceği arama formları, filtreler ve sayfalar için kullanışlıdır.

POSTyöntem, form verilerini istek gövdesine gönderir. Bu yöntem iletişim formları, giriş formları, kayıt formları ve özel veya büyük veri gönderen tüm formlar için tercih edilir.

Basit bir HTML formu şöyle görünebilir:

<form method="post" action="process.php">
    <label>Name:</label>
    <input type="text" name="name">

    <label>Email:</label>
    <input type="text" name="email">

    <button type="submit">Send</button>
</form>

PHP dosyasında gönderilen değerlere aşağıdakiler kullanılarak erişilebilir:$_POST.

<?php
$name = $_POST["name"] ?? "";
$email = $_POST["email"] ?? "";

echo $name;
echo $email;
?>

Boş birleştirme operatörü??Bir değer mevcut olmadığında hataları önlemek için kullanılır. Form alanı eksikse PHP bunun yerine boş bir dize kullanır.

Bir formu işlemeden önce istek yöntemini kontrol etmek de yaygındır.

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $name = $_POST["name"] ?? "";
    $email = $_POST["email"] ?? "";

    echo "Form submitted.";
}
?>

Bu, kullanıcı formu göndermeden önce form işleme kodunun çalışmasını engeller.

PHP Form Doğrulaması

Form doğrulama, kullanıcı girişini kabul etmeden veya kaydetmeden önce kontrol etmek anlamına gelir. Kullanıcılar boş, yanlış, eksik veya güvenli olmayan veriler gönderebileceğinden doğrulama önemlidir.

PHP form doğrulaması, bir alanın boş olup olmadığı, bir e-postanın geçerli bir formata sahip olup olmadığı, bir URL'nin doğru olup olmadığı, bir değerin sayısal olup olmadığı veya bir metin uzunluğunun izin verilen aralıkta olup olmadığı gibi birçok şeyi kontrol edebilir.

Temel bir doğrulama yapısı genellikle bir dizi hata oluşturur, her girişi kontrol eder ve ardından formun geçerli olup olmadığına karar verir.

<?php
$errors = [];

if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $name = trim($_POST["name"] ?? "");
    $email = trim($_POST["email"] ?? "");

    if ($name === "") {
        $errors[] = "Name is required.";
    }

    if ($email === "") {
        $errors[] = "Email is required.";
    }

    if (count($errors) === 0) {
        echo "Form is valid.";
    }
}
?>

kırpma()işlevi bir dizenin başındaki ve sonundaki fazladan boşlukları kaldırır. Bu kullanışlıdır çünkü yalnızca boşluk içeren bir alan geçerli girdi olarak değerlendirilmemelidir.

Form aynı zamanda tarayıcıda HTML doğrulamasını kullansa bile doğrulamanın sunucu tarafında gerçekleşmesi gerekir. Tarayıcı doğrulaması kullanıcı deneyimini iyileştirir ancak bu atlanabilir. Güvenlik ve veri doğruluğu için sunucu tarafı doğrulaması gereklidir.

PHP Form Girişini Temizleme

Kullanıcı girişini sayfada tekrar görüntülemeden önce, siteler arası komut dosyası çalıştırma saldırıları riskini azaltmak için bu girişten kaçış yapılmalıdır. PHP’de,htmlspecialchars()Güvenli çıkış için yaygın olarak kullanılır.

<?php
$name = "<script>alert('test')</script>";

echo htmlspecialchars($name, ENT_QUOTES, "UTF-8");
?>

Bu, özel HTML karakterlerini güvenli metne dönüştürür. Giriş, HTML veya JavaScript olarak çalıştırmak yerine normal metin olarak görüntülenir.

Basit bir yardımcı fonksiyon bunu kolaylaştırabilir:

<?php
function cleanInput($value) {
    return htmlspecialchars(trim($value), ENT_QUOTES, "UTF-8");
}
?>

Bu işlev, değeri keser ve güvenli görüntüleme için hazırlar. Ancak çıktının sterilize edilmesi doğrulamanın yerini almaz. Doğrulama, verilerin kabul edilebilir olup olmadığını kontrol ederken kaçış, verilerin nasıl görüntülendiğini korur.

PHP Formu Gerekli

Zorunlu alanlar, formun kabul edilebilmesi için kullanıcının doldurması gereken alanlardır. Yaygın olarak gerekli alanlar arasında ad, e-posta, şifre, konu, mesaj ve sözleşme onay kutuları bulunur.

HTML'da, bir alanı gerektiği gibi işaretleyebilirsiniz.gerekliözellik.

<input type="text" name="name" required>

Ancak PHP’nin yine de sunucu tarafındaki gerekli alanları kontrol etmesi gerekir. Kullanıcı, form arayüzünü kullanmadan tarayıcı doğrulamasını devre dışı bırakabilir veya manuel olarak istek gönderebilir.

<?php
$errors = [];

$name = trim($_POST["name"] ?? "");
$email = trim($_POST["email"] ?? "");
$message = trim($_POST["message"] ?? "");

if ($name === "") {
    $errors["name"] = "Name is required.";
}

if ($email === "") {
    $errors["email"] = "Email is required.";
}

if ($message === "") {
    $errors["message"] = "Message is required.";
}
?>

Hatalar için ilişkisel bir dizi kullanmak, her hatanın ilgili alanının yanında görüntülenmesini kolaylaştırır.

<?php if (!empty($errors["name"])): ?>
    <p><?php echo $errors["name"]; ?></p>
<?php endif; ?>

Gerekli doğrulama, gönderilen verilerin kalitesini artırır ve eksik kayıtların kaydedilmesini veya gönderilmesini önler.

PHP Form URL'si/E-postası

Birçok formun e-postaları ve URL'leri doğrulaması gerekir. Örneğin, bir iletişim formu bir e-posta adresi gerektirebilirken, bir profil formu kişisel bir web sitesine, LinkedIn profiline, GitHub bağlantısına veya portföy URL'sine izin verebilir.

PHP şunları sağlar:filtre_var()E-posta ve URL gibi yaygın biçimleri doğrulama işlevi.

E-posta doğrulaması kullanılarak yapılabilirFILTER_VALIDATE_EMAIL.

<?php
$email = trim($_POST["email"] ?? "");

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Invalid email address.";
}
?>

URL doğrulaması kullanılarak yapılabilirFILTER_VALIDATE_URL.

<?php
$website = trim($_POST["website"] ?? "");

if (!filter_var($website, FILTER_VALIDATE_URL)) {
    echo "Invalid website URL.";
}
?>

URL alanı isteğe bağlıysa kodun bunu yalnızca kullanıcı bir değer girdiğinde doğrulaması gerekir.

<?php
$website = trim($_POST["website"] ?? "");

if ($website !== "" && !filter_var($website, FILTER_VALIDATE_URL)) {
    echo "Invalid website URL.";
}
?>

Bu şekilde kullanıcı isteğe bağlı URL'yi boş bırakabilir ancak bir değer sağlarsa bunun geçerli bir URL olması gerekir.

Geliştiriciler, e-posta alanları için genellikle alanı zorunlu hale getirir ve biçimini doğrular. URL alanları için alan, formun amacına bağlı olarak isteğe bağlı olabilir.

Form Hatalarını Görüntüleme

İyi bir form, doğrulama hatalarını kullanıcıya açıkça göstermelidir. Genel bir mesaj göstermek yerine, düzeltilmesi gereken alanların yanında belirli mesajların gösterilmesi daha iyidir.

Örneğin e-posta eksikse kullanıcı e-posta alanının gerekli olduğunu görmelidir. E-posta formatı geçersizse kullanıcı, e-posta adresinin geçerli olmadığını görmelidir.

<?php if (!empty($errors["email"])): ?>
    <span class="error"><?php echo $errors["email"]; ?></span>
<?php endif; ?>

Bu, kullanıcı deneyimini geliştirir ve formun doldurulmasını kolaylaştırır.

Ayrıca doğrulama hatası sonrasında daha önce girilen değerlerin formda kalması da faydalıdır. Bu, kullanıcıların her şeyi yeniden yazmasını engeller.

<input type="text" name="name" value="<?php echo $name ?? ''; ?>">

Eski değerleri görüntülerken, bunları kullanarak kaçmayı unutmayın.htmlspecialchars().

<input type="text" name="name" value="<?php echo htmlspecialchars($name ?? '', ENT_QUOTES, 'UTF-8'); ?>">

PHP Formu Tamamlandı

Eksiksiz bir PHP formu genellikle HTML formunu, sunucu tarafı doğrulamasını, gerekli alan kontrollerini, e-posta doğrulamasını, isteğe bağlı URL doğrulamasını, güvenli çıktıyı, hata mesajlarını ve başarı yönetimini içerir.

Aşağıdaki örnekte, bir PHP dosyasındaki eksiksiz iletişim formu gösterilmektedir.

<?php
$name = "";
$email = "";
$website = "";
$message = "";
$errors = [];
$success = false;

function oldValue($value) {
    return htmlspecialchars($value, ENT_QUOTES, "UTF-8");
}

if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $name = trim($_POST["name"] ?? "");
    $email = trim($_POST["email"] ?? "");
    $website = trim($_POST["website"] ?? "");
    $message = trim($_POST["message"] ?? "");

    if ($name === "") {
        $errors["name"] = "Name is required.";
    }

    if ($email === "") {
        $errors["email"] = "Email is required.";
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors["email"] = "Please enter a valid email address.";
    }

    if ($website !== "" && !filter_var($website, FILTER_VALIDATE_URL)) {
        $errors["website"] = "Please enter a valid URL.";
    }

    if ($message === "") {
        $errors["message"] = "Message is required.";
    } elseif (strlen($message) < 10) {
        $errors["message"] = "Message must be at least 10 characters.";
    }

    if (count($errors) === 0) {
        $success = true;

        /*
        Here you can:
        - Save data to a database
        - Send an email
        - Store a support ticket
        - Redirect the user
        */
    }
}
?>

<?php if ($success): ?>
    <p>Your message has been sent successfully.</p>
<?php endif; ?>

<form method="post" action="">
    <div>
        <label>Name</label>
        <input type="text" name="name" value="<?php echo oldValue($name); ?>">
        <?php if (!empty($errors["name"])): ?>
            <small><?php echo $errors["name"]; ?></small>
        <?php endif; ?>
    </div>

    <div>
        <label>Email</label>
        <input type="text" name="email" value="<?php echo oldValue($email); ?>">
        <?php if (!empty($errors["email"])): ?>
            <small><?php echo $errors["email"]; ?></small>
        <?php endif; ?>
    </div>

    <div>
        <label>Website</label>
        <input type="text" name="website" value="<?php echo oldValue($website); ?>">
        <?php if (!empty($errors["website"])): ?>
            <small><?php echo $errors["website"]; ?></small>
        <?php endif; ?>
    </div>

    <div>
        <label>Message</label>
        <textarea name="message"><?php echo oldValue($message); ?></textarea>
        <?php if (!empty($errors["message"])): ?>
            <small><?php echo $errors["message"]; ?></small>
        <?php endif; ?>
    </div>

    <button type="submit">Send Message</button>
</form>

Bu eksiksiz örnek, PHP form işlemenin ardındaki ana fikri göstermektedir. Verileri alır, gerekli alanları doğrular, e-posta ve URL formatlarını kontrol eder, hataları görüntüler, eski değerleri saklar ve form geçerli olduğunda bir başarı mesajı gösterir.

PHP Formları için Güvenlik Notları

Formlar doğrudan kullanıcı girişine bağlıdır, bu nedenle dikkatli kullanılmalıdır. Doğrulama ve kaçış olmadan kullanıcı girişine asla güvenmeyin.

Önemli güvenlik uygulamaları şunları içerir:

  • Sunucu tarafında gerekli tüm alanları doğrulayın.

  • Çıkışı kullanarak kaçışhtmlspecialchars().

  • Kullanımfiltre_var()e-posta ve URL doğrulaması için.

  • Form verilerini bir veritabanına kaydederken prepared statements kullanın.

  • Gerçek uygulamalarda CSRF korumasıyla hassas formları koruyun.

  • Ham kullanıcı girişini kaçmadan görüntülemeyin.

  • Beklenmeyen büyük girdileri önlemek için alan uzunluklarını sınırlayın.

Laravel gibi çerçevelerde bu görevlerin birçoğu yerleşik doğrulama, istek sınıfları, CSRF koruması ve kaçış yardımcıları kullanılarak gerçekleştirilir. Ancak saf PHP form işlemeyi anlamak önemlidir çünkü bu, perde arkasında neler olduğunu açıklar.

Gerçek Projelerde PHP Formları Nasıl Kullanılır?

PHP formları birçok türde gerçek web uygulamasında kullanılır. Bir iletişim sayfası mesaj almak için bir form kullanır. Giriş sayfası, e-posta ve şifre almak için bir form kullanır. Kayıt sayfası yeni bir hesap oluşturmak için bir form kullanır. Yönetici paneli içerik oluşturmak, güncellemek ve silmek için formları kullanır.

PHP formlarının yaygın örnekleri şunları içerir:

  • İletişim formları.

  • Giriş ve kayıt formları.

  • Arama formları.

  • Profil güncelleme formları.

  • Blog yazısı oluşturma formları.

  • Ürün yönetimi formları.

  • Dosya yükleme formları.

  • Bülten abonelik formları.

Form işleme ve doğrulamayı anladığınızda, kullanıcılarla etkileşim kuran ve anlamlı veriler depolayan daha pratik PHP uygulamaları oluşturabilirsiniz.

Sonuç

PHP formları web geliştirmenin temel bir parçasıdır. Kullanıcıların veri göndermesine ve geliştiricilerin iletişim sayfaları, oturum açma sistemleri, kayıt formları, kontrol panelleri ve yönetici panelleri gibi etkileşimli özellikler oluşturmasına olanak tanır.

PHP formlarıyla doğru şekilde çalışmak için form işleme, doğrulama, gerekli alanlar, e-posta ve URL doğrulama, güvenli çıktı ve form iş akışlarının tamamını anlamanız gerekir.

Bu kavramlarda uzmanlaştıktan sonra bir sonraki adım, modern PHP veya Laravel gibi çerçeveleri kullanarak formları veritabanlarına bağlamak, oturum açma sistemleri için oturumları kullanmak, dosya yüklemelerini yönetmek ve doğrulama mantığını daha temiz bir yapıda düzenlemektir.