Şifre Kurtarma — lostpassword.tpl
Bu şablon, unutulan parolayı yenileme formunu üretir. Kullanıcı adını (veya e-postasını) yazar, sistem e-posta ile yeni parola oluşturma bildirimi gönderir.
| Konu | Ayrıntı |
|---|---|
| İşleyen dosya | engine/modules/lostpassword.php |
| Adres | index.php?do=lostpassword |
| Çıktı yeri | result['content'] — yani {content} |
| Bağlantı hedefi | Giriş formundaki "Şifremi unuttum" bağlantısı |
!
Şablona
<form> YAZMAYIN
Formu motor sarar: <form method="post" name="dle-lostpassword"
id="dle-lostpassword" action="?do=lostpassword"> ve içine
<input name="submit_lost" type="hidden"> alanını ekler.
Şablonda ikinci bir <form> açarsanız form gönderilmez.
Etiketler
| Etiket / blok | İçeriği |
|---|---|
[sec_code]…[/sec_code] + {code} | Resim doğrulama kodu (klasik captcha) |
[recaptcha]…[/recaptcha] + {recaptcha} | reCAPTCHA / hCaptcha / Turnstile alanı |
Bu şablon çok az etiket içerir. Sebebi basittir: formun kendisi motor tarafından sarılır, gizli alanlar otomatik eklenir ve mesajlar Bilgi ve Hata Çıktısı kutusundan gösterilir. Şablona yazacağınız asıl şey tasarımdır.
Form alanı
| Alan | Anlamı |
|---|---|
lostname | Kullanıcı adı veya e-posta adresi — ikisi de kabul edilir |
Sunucu, girilen değerde @ işareti varsa e-posta, yoksa
kullanıcı adı olarak arar. Yani tek alan iki işi yapar; ayrı alan
eklemeyin.
Doğrulama katmanları
Form gönderildiğinde şu denetimler sırayla yapılır ve ilk hatada mesaj gösterilip form gizlenir:
- Giriş yapılmamış olmalı Zaten oturum açmış bir kullanıcı bu sayfayı kullanamaz; bilgi mesajı görür.
- reCAPTCHA / captcha Aktif doğrulama yöntemi geçilmelidir.
-
Geçersiz karakter denetimi
Kullanıcı adında
| ' < > [ ] " ! ? $ / \ & ~ * { +karakterleri kabul edilmez. -
Resim kodu denetimi
Klasik captcha açıksa
sec_codeoturumdaki kodla karşılaştırılır. - Kullanıcı ve grup denetimi Kullanıcı bulunmalı ve yönetim paneli erişimi olmayan bir grupta olmalıdır.
!
Yöneticiler bu formu kullanamaz
Yönetim paneline erişimi olan hesaplar, parolalarını buradan
kurtaramaz. Karşılık olarak "yönetici hesapları parolasını yalnızca yönetim panelinden
kurtarabilir" mesajı gösterilir. Bu kasıtlı bir güvenlik önlemidir — şablonunuzda
"yöneticiler bu formu doldurabilir" gibi bir varsayım kurmayın.
i
Hata olursa form kaybolur
Doğrulama başarısız olduğunda mesaj
{info} alanına yazılır ve form gösterilmez. Kullanıcı
"geri dön" bağlantısına tıklayarak forma döner. Şablonunuzda ayrıca bir
"tekrar dene" düğmesi tasarlamanıza gerek yoktur; ama tasarımınızın
{info} mesajıyla birlikte tek başına da düzgün görünmesi gerekir.
Örnek
<div class="auth-form">
<h1 class="auth-form__title">Parola kurtarma</h1>
<p class="auth-form__lead">
Kullanıcı adınızı veya e-posta adresinizi girin; parola yenileme bildirimi göndereceğiz.
</p>
<div class="form-row">
<label for="lostname">Kullanıcı adı veya e-posta</label>
<input type="text" name="lostname" id="lostname" autocomplete="username" required>
</div>
[sec_code]
<div class="form-row">
<label for="sec_code">Doğrulama kodu</label>
<div class="captcha">
{code}
<input type="text" name="sec_code" id="sec_code" required>
</div>
</div>
[/sec_code]
[recaptcha]
<div class="form-row">{recaptcha}</div>
[/recaptcha]
<div class="form-actions">
<button type="submit">Parolayı sıfırla</button>
<a href="/">Siteye dön</a>
</div>
</div>
Güvenlik notları
| Konu | Ayrıntı |
|---|---|
| Bilgi sızdırmama | Kullanıcı bulunamazsa "bu ad/e-posta bulunamadı" mesajı gösterilir — yani hesabın var olup olmadığı öğrenilebilir. Hassas bir site işletiyorsanız bu mesajı dil dosyasından nötrleştirebilirsiniz. |
| Doğrulama | Captcha açık tutmak, otomatik deneme saldırılarını engeller. |
| Parola saklama | Parolalar şifreli saklanır; sistem parolayı göstermez, yenileme bağlantısı gönderir. |
Sık yapılan hatalar
| Hata | Sonuç |
|---|---|
Şablona <form> eklemek | İç içe form → gönderim çalışmaz |
Alan adını lostname yerine başka bir şey yapmak | Sunucu değeri bulamaz, doğrulama hatası verir |
| Ayrı "kullanıcı adı" ve "e-posta" alanları yapmak | Motor tek alan bekler; ikinci alan yok sayılır |
| Captcha bloklarını tamamen kaldırmak | Captcha açıkken doğrulama alanı eksik kalır ve form gönderilemez |
Kontrol listesi
- Şablonda
<form>etiketi yok. - Alan adı
lostnameolarak korundu. [sec_code]ve[recaptcha]blokları şablonda mevcut.- Oturum açmış kullanıcıyla ve normal ziyaretçiyle test ettim.
- Hata mesajı göründüğünde tasarım tek başına da düzgün görünüyor.