Wordpress İle Özel Kullanıcı Kayıt Formu Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Bu uygulamayı gerçekleştirmek için bir WordPress geliştirme ortamına ihtiyacınız var. Canlı sitenizde deneme yapmadan önce mutlaka bir yerel sunucu (LocalWP veya XAMPP gibi) üzerinde çalışmanızı öneririm. Ayrıca temel düzeyde PHP bilgisi ve WordPress tema dosyalarına erişim (FTP veya dosya yöneticisi) gereklidir.

  • WordPress 6.0 ve üzeri sürüm.
  • PHP 8.0 veya üzeri bir sunucu ortamı.
  • Tema dosyalarınızda değişiklik yapabilme yetkisi.
  • Güvenli veri iletimi için aktif bir SSL sertifikası.

Adım 1: Kayıt Formunun HTML Yapısını Oluşturma

Özel kayıt formunuzu oluştururken, kullanıcıdan alacağınız verileri bir form etiketi içinde tanımlamanız gerekir. Bu form, verileri işleyecek olan PHP dosyasına veya aynı sayfaya gönderecek şekilde tasarlanmalıdır.


    Kullanıcı Adı:
    

    E-posta:
    

    Şifre:
    

    

Bu HTML kodu, temel bir form yapısıdır. name öznitelikleri, PHP tarafında verileri yakalamak için anahtar rol oynar. Formun gönderilme işlemini POST metodu ile yaparak verilerin URL üzerinde görünmesini engellemiş oluyoruz.

Adım 2: Veri İşleme ve Güvenlik Önlemleri

Formdan gelen verileri güvenli bir şekilde işlemek için WordPress'in functions.php dosyasını kullanacağız. Burada en kritik nokta, XSS (Cross-Site Scripting) saldırılarını engellemek için verileri temizlemek ve SQL Injection riskine karşı wp_insert_user fonksiyonunu kullanmaktır.

function ozel_kayit_islemi() {
    if (isset($_POST['kayit_ol_submit'])) {
        $username = sanitize_user($_POST['kullanici_adi']);
        $email = sanitize_email($_POST['email']);
        $password = $_POST['sifre'];

        if (username_exists($username) || email_exists($email)) {
            echo "Bu kullanıcı adı veya e-posta zaten kayıtlı.";
            return;
        }

        $user_id = wp_insert_user(array(
            'user_login' => $username,
            'user_email' => $email,
            'user_pass'  => $password,
            'role'       => 'subscriber'
        ));

        if (!is_wp_error($user_id)) {
            echo "Kayıt başarıyla tamamlandı!";
        }
    }
}
add_action('init', 'ozel_kayit_islemi');

Burada sanitize_user ve sanitize_email fonksiyonları, kullanıcıdan gelen verileri temizler. wp_insert_user fonksiyonu ise şifreyi otomatik olarak hash'leyerek (şifreleyerek) veritabanına kaydeder.

Adım 3: Form Güvenliği İçin Nonce Kullanımı

Formun başka sitelerden gönderilmesini (CSRF saldırıları) engellemek için WordPress'in nonce (number used once) özelliğini kullanmalısınız. Bu, formun sizin sitenizden gönderildiğini doğrulayan bir güvenlik token'ıdır.

// Form içine ekleyin


Adım 4: Hata Yönetimi ve Kullanıcı Geri Bildirimleri

Kullanıcı kayıt sürecinde en kritik nokta, hatalı girişlerde kullanıcıyı bilgilendirmek ve süreci yönetmektir. wp_insert_user fonksiyonu, işlem başarısız olduğunda bir WP_Error nesnesi döndürür. Bu nesneyi yakalayarak kullanıcıya anlamlı hata mesajları gösterebilirsiniz.

Aşağıdaki kod bloğu, kayıt sırasında oluşabilecek e-posta veya kullanıcı adı çakışmalarını yönetmenizi sağlar:

if (isset($_POST['ozel_kayit_submit'])) {
    $username = sanitize_user($_POST['username']);
    $email = sanitize_email($_POST['email']);
    $password = $_POST['password'];

    $user_id = wp_create_user($username, $password, $email);

    if (is_wp_error($user_id)) {
        // Hata mesajlarını yakala
        $hata_mesaji = $user_id->get_error_message();
        echo '
' . esc_html($hata_mesaji) . '
'; } else { echo '
Kaydınız başarıyla oluşturuldu!
'; } }

Adım 5: Kayıt Sonrası Otomatik Giriş ve Yönlendirme

Kullanıcı kayıt olduktan sonra onu manuel olarak giriş yapmaya zorlamak yerine, doğrudan oturum açmasını sağlamak kullanıcı deneyimini (UX) ciddi oranda artırır. WordPress'te bunu wp_signon fonksiyonu ile kolayca gerçekleştirebilirsiniz.

Kayıt başarılı olduktan sonra kullanıcıyı belirli bir "Hoş Geldiniz" sayfasına yönlendirmek için aşağıdaki mantığı kullanabilirsiniz:

if (!is_wp_error($user_id)) {
    $user = get_user_by('id', $user_id);
    wp_set_current_user($user_id, $user->user_login);
    wp_set_auth_cookie($user_id);
    do_action('wp_login', $user->user_login, $user);
    
    // Kullanıcıyı yönlendir
    wp_redirect(home_url('/hos-geldiniz/'));
    exit;
}

İleri İpuçları: Performans ve Güvenlik Optimizasyonu

Özel kayıt formunuzu canlıya almadan önce şu performans ve güvenlik kontrollerini gözden geçirmeniz önerilir:

  • Spam Koruması: Formunuza bir "Honeypot" alanı ekleyin. Görünmez bir input alanı oluşturun ve dolu gelirse işlemi reddedin; botlar genellikle bu alanı doldurur.
  • Veritabanı Sorguları: Kayıt sırasında get_user_by gibi fonksiyonları gereksiz yere tekrar tekrar çağırmayın.
  • E-posta Doğrulama: Kayıt sonrası otomatik bir aktivasyon maili göndermek için wp_mail fonksiyonunu kullanın ve kullanıcıyı 'pending' durumunda bekletin.
  • SSL Kullanımı: Form verilerinin şifreli iletilmesi için sitenizin mutlaka HTTPS protokolü üzerinde çalıştığından emin olun.
Not: Kullanıcı şifrelerini asla düz metin olarak veritabanında saklamayın. wp_create_user veya wp_insert_user fonksiyonları, WordPress'in yerleşik phpass kütüphanesini kullanarak şifreleri otomatik olarak güvenli bir şekilde hash'ler.
Bu yazıya tepkinizi paylaşın:
Deniz Arslan

On yıllık içerik üretim deneyimiyle karmaşık süreçleri herkesin anlayabileceği pratik rehberlere dönüştürüyorum. Günlük yaşamı kolaylaştıran çözümler üzerine uzmanlaşmış bir editörüm.

Yorumlar (0)

Yorum Yaz