Ş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.

KonuAyrıntı
İşleyen dosyaengine/modules/lostpassword.php
Adresindex.php?do=lostpassword
Çıktı yeriresult['content'] — yani {content}
Bağlantı hedefiGiriş 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ı

AlanAnlamı
lostnameKullanı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:

  1. Giriş yapılmamış olmalı Zaten oturum açmış bir kullanıcı bu sayfayı kullanamaz; bilgi mesajı görür.
  2. reCAPTCHA / captcha Aktif doğrulama yöntemi geçilmelidir.
  3. Geçersiz karakter denetimi Kullanıcı adında | ' < > [ ] " ! ? $ / \ & ~ * { + karakterleri kabul edilmez.
  4. Resim kodu denetimi Klasik captcha açıksa sec_code oturumdaki kodla karşılaştırılır.
  5. 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ı

KonuAyrıntı
Bilgi sızdırmamaKullanı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ğrulamaCaptcha açık tutmak, otomatik deneme saldırılarını engeller.
Parola saklamaParolalar şifreli saklanır; sistem parolayı göstermez, yenileme bağlantısı gönderir.

Sık yapılan hatalar

HataSonuç
Şablona <form> eklemekİç içe form → gönderim çalışmaz
Alan adını lostname yerine başka bir şey yapmakSunucu değeri bulamaz, doğrulama hatası verir
Ayrı "kullanıcı adı" ve "e-posta" alanları yapmakMotor tek alan bekler; ikinci alan yok sayılır
Captcha bloklarını tamamen kaldırmakCaptcha açıkken doğrulama alanı eksik kalır ve form gönderilemez

Kontrol listesi

  • Şablonda <form> etiketi yok.
  • Alan adı lostname olarak 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.