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.


Yorumlar (0)
Yorum Yaz