D ile günlük

Yeni kullanıcı kaydı sayfasına elektronik posta doğrulaması eklemek

Bu bölümde yeni kullanıcı kaydı sayfasına elektronik posta doğrulaması eklemeye çalışacağız

Elektronik posta gövdesi için sayfa deseni kullanmak

Hatırlayabileceğiniz üzere önceki bölümlerde, elektronik posta göndermeyi öğrendik.

Kullanıcı kayıt sayfasında şifreler için tekli bir anahtar oluşturduk.

Bu bölümde, önceki bölümlerde öğrendiğimiz bilgileri birleştirip, kullanıcı kaydından sonra kullanıcıya nasıl doğrulama postası gönderebileceğimizi öğreneceğiz.

D dili için konuşursak, bu konular benim de önceden bildiğim konular değil. Size öğretirken ve uygulamayı geliştirirken kendim de öğreniyorum ;-)

İlk önce D'nin appender! isimli işlevinden bahsedeceğiz. Bu işlevin yanındaki ! işaret bu işlevin farklı türlerle çalışabilir bir şablon olduğunu gösteriyor.

Bir işlevin şablon olması, o işlevin farklı türlerle çalışabileceği anlamına geliyor. Örneğinappender!int gibi bir kullanımla tam sayıları ekleyebildiği gibi appender!string ile dizgeleri de ekleyebileceğini gösteriyor.

Hemen sadece D kullanarak yazılmış bir örneğe bakalım.

import std.stdio;
import std.array:appender;

void main()
{
    auto yazılar = appender!string;
    yazılar.put("Merhaba ");
    yazılar.put("Nasılsın? ");
    yazılar ~= ("İyi misin? ");
    yazılar ~= ("İşler nasıl? ");
    writeln(yazılar[]);
    writeln(yazılar.data);
}

Bu örneği dmd yazilar.d -ofyazilar şeklinde derleyip çalıştırdığınızda şuna benzer bir çıktı görebilirsiniz.

Merhaba Nasılsın? İyi misin? İşler nasıl? 
Merhaba Nasılsın? İyi misin? İşler nasıl?

En başta yazılar isminde bir metin ekleyici oluşturduk. Bu ekleyiciye yazılar.put ya da yazılar ~= şeklinde yeni metin ekleyebiliyoruz.

yazılar[] ya da yazılar.data ile de ekleyici içeriğini yazdırabiliyoruz.

Uygulamamızı geliştirmeye elektronik posta gönderen örnek üzerinden devam edelim.

import vibe.vibe;
import anahtar.teklianahtar;

string zamanıGetir()
{
    /* ... */
    return "00:45:11";
}

void elektronikPostaGönder ()
{
    /* ... */
}

void gönder(HTTPServerRequest istek, HTTPServerResponse yanıt)
{
    import std.digest : toHexString;
    string no = "1";
    string isim = "Avni";
    string ePosta = "avni@avni.com";
    auto çeşni = çeşniÜret();
    string kod = tekliAnahtarÜret(ePosta, çeşni).toHexString();

    import diet.html;
    import std.array : appender;

    auto gövde = appender!string;
    gövde.compileHTMLDietFile!("yardimcilar/eposta.dt", isim, no, ePosta, kod);
    logInfo("Hedef %s", gövde.data);
    yanıt.writeBody("Elektronik posta gönderildi");
}

void main()
{
    auto ayarlar = new HTTPServerSettings;
    ayarlar.port = 8000;
    ayarlar.bindAddresses = ["::1", "127.0.0.1"];
    listenHTTP(ayarlar, &gönder);
    logInfo("Lütfen tarayıcınızla http://127.0.0.1:8080/ adresini açınız.");
    runApplication();
}

zamanıGetir ve elektronikPostaGönder isimli işlevler daha önce zaten üzerinde konuştuğumuz işlevlerdi. Bunları yer kaplamaması açısından yorum haline getirdim.

gönder işlevindeki çeşni ve tekli anahtar üreten kısımların da daha önceden üzerlerinden geçmiştik.

Elektronik postanın gövde kısmını oluşturacak metin ekleyicinin de nasıl çalıştığını yukarıdaki açıklamalardan sonra anlamışsınızdır.

Burada compileHTMLDietFile! bir sayfa desenini derliyor ve içeriğini gövdeye atıyor.

Uygulamayı derleyip çalıştırdığınızda, eğer günlük kısmına bakarsanız oluşturduğumuz doğrulama postasının içeriğinin gösterildiğini görebilirsiniz.

Elektronik posta doğrulama

Yorumlar

yorum yaz

Yorum yaz

Henüz yorum yok.