Dreamweaver ile Üyelik Sistemi - Şifre Hatırlatma Sayfası

Bu makale dizisi ile Dreamweaver kullanarak sitemiz için bir üyelik sistemini nasıl yapacağımızı inceleyeceğiz. Son olarak şifrelerini unutan üyelerimize nasıl bir hatırlatma mesajı yollatacağımızı inceleyeceğiz
www.dijitalders.com

Üyelerimiz şifrelerini unuttuklarında onlara şifrelerini hatırlamalarını sağlayan bir e-posta mesajı yollatabiliriz. Bu mesajda kullanıcı adları ve şifrelerini göndererek sisteme giriş yapmalarını sağlayabiliriz.

Bu çalışma aynı zamanda formların ne işe yaradığı ve nasıl kullanıldığına dair oldukça açıklayıcı ve faydalı bir örnek olma özelliğini de taşımakta.

Bu çalışma aynı zamanda formların ne işe yaradığı ve Dreamweaver içerisinde nasıl kullanıldığına dair oldukça açıklayıcı ve faydalı bir örnek olma özelliğini de taşımakta. Daha önce anlattığımız teorik bilgileri burada pratiğe geçirme şansı da bulabilirsiniz.

Şifre hatırlatma sayfası iki farklı sayfadan meydana gelmekte;

  • forgot.php: Şifre hatırlatma formunun bulunduğu sayfa. Esas itibariyle bu sayfada herhangi bir özellik yok, sadece kullanıcının e-mail adresini (ya da kullanıcı adını) girebileceği bir metin kutusu (text field) ve form gönderme düğmesinden (submit button) oluşan bir form içerecek.
  • forgot_mail.php: Asıl işi yapan ve kullanıcıya mesajın gönderileceği sayfa. "forgot.php" de yer alan formun "action" bilgisine bu sayfanın adını yazacağız.

Aslında bu iki sayfa tek bir sayfada birleştirilebilir fakat yeni başlayan arkadaşların kafasını karıştırmamak adına iki farklı sayfa üzerinden anlatmanın daha açıklayıcı olacağını düşündüğüm için bu şekilde yaptım, tabi siz bu tür örneklerle kendinizi geliştirip bu sayfaları istediğiniz gibi düzenleyebilirsiniz.

Formun hazırlanması

Yeni bir doküman oluşturup sitemiz altında uygun bir yere uygun bir isim ile (forgot.php ya da .html bu örnekte önemli değil) kaydediyoruz. Uygun gördüğünüz görsel değişiklikleri yaptıktan sonra metin alanı ve gönder düğmesinin olmasını düşündüğünüz bölüme Insert / Form / Form menüsü ile bir form ekliyoruz. Formu eklediğimiz an Properties panelinde görünen "Action" kısmına "forgot_mail.php" yazıyoruz. "Method" bilgisi olarak "POST" seçili olmasına dikkat ediyoruz. "Name" kısmına da "hatirlat_form" (ya da istediğiniz bir şey) yazıyoruz.

Properties panelinden form ayarlarını yapıyoruz

Properties panelinden form ayarlarını yapıyoruz

Ardından kırmızı ince bir hat ile belirtilen bu form alanının içerisine "hatirlat_mail" isimli bir metin alanı (text field) ve gönder düğmesi (submit button) ekliyoruz. Sayfanın son hali aşağıdaki gibi görünecektir.

Sayfanın DW içerisindeki görünümü

Sayfanın DW içerisindeki görünümü

Form sayfası için yapacaklarımız bu kadar, sıra geldi asıl işlemin yapıldığı sayfa olan "forgot_mail.php" sayfasının yapımına.

Bu sayfada öncelikle girilen e-mail adresine göre ilgili kullanıcının bilgilerini bir kayıt dizisi ile çektirecek ve diğer örneklerdeki gibi sayfaya yazdırmak yerine bu örneğimizde e-mail ile üyenin adresine göndereceğiz. Prosedür aynı fakat biraz el kodlaması gerekiyor.

Öncelikle yeni bir PHP dokümanı oluşturup sitemiz altında "forgot_mail.php" adıyla kaydediyoruz. Ardından eğer açık değilse Windows / Bindings menüsü ile "Bindings" panelini açıyoruz. (+) işaretine tıklayarak açılan menüden "Recordset (Query)" seçeneğine tıklayarak bir kayıt dizisi tanımlamaya başlıyoruz.

Bindings paneli

Bindings paneli

Oluşturacağımız kayıt dizisinde bir filtreleme işlemi yapacağız ve tahmin ettiğiniz üzere bu filtreleme işlemi "forgor.php" sayfasındaki formda yer alan "hatirlat_mail" metin alanına girilen e-mail adresine göre olacak. Bunun için "Fitler" bölümünden; üyenin e-mail adresi bilgisinin tutulduğu veritabanı alanı olan "email" alanını seçiyoruz. Altındaki menüden "Form variable" seçeneğini seçip eşitlik (=) durumunu belirttiğimiz bölümün altındaki kutuya da "hatirlat_mail" yazıyoruz.

Kayıt dizisi için ilgili yapılandırmaları yapıyoruz

Kayıt dizisi için ilgili yapılandırmaları yapıyoruz

İlgili ayarları yaptığımıza göre "OK" diyerek işlemi tamamlayabilirsiniz. Böylece biraz önce yarattığımız form alanına girilen e-mail adresinin sahibi olan üyenin bilgilerine erişim sağlayacağımız bir kayıt dizisi oluşturmuş olduk. Biraz önceki sayfaya e-mail adresi yerine üyenin kullanıcı adını girerek şifre hatırlatma mesajının yollanmasını sağlamak istiyorsanız "Fitler" bölümünden "email" alanı yerine "kullanici_adi" alanını seçmeniz gerekmektedir.

Bu noktada dikkat etmemiz gereken bir nokta var, kullanıcı hatalı bir e-mail adresi girerse ya da veritabanımızda kayıtlı bir e-mail adresi girerse kayıt dizisi boş dönecek ve e-mail gönderme işleminde hata oluşacaktır. Bunu engellemek için; kayıt dizimiz boş ise kullanıcıya bir hata mesajı göstermemiz, dolu ise e-mail gönderme işlemini yapmamız gerekiyor.

Şimdi sayfaya "Girdiğiniz e-mail adresine ait bir üye bulunamadı! Lütfen kontrol edip tekrar deneyiniz" ya da buna benzer bir şey yazıp ENTER tuşuna basıyoruz. Yeni yarattığınız paragrafa da "Mesajnız başarıyla gönderildi, lütfen e-posta hesabınızı kontrol ediniz" yazıyoruz.

İlgili etiketi seçmek için Tag chooser aracını kullanabilirsiniz

İlgili etiketi seçmek için Tag chooser aracını kullanabilirsiniz

Şimdi üye bulunamadı mesajını seçip (doküman penceresinin alt kısmında yer alan "Tag chooser" ile <p> etiketini daha rahat seçebilirsiniz) "Server Behaviors" panelinden (+) işaretine tıklayıp açılan menüden "Show Region / Show If Recordset Is Empty" menüsüne tıklıyoruz. Açılan iletişim penceresinden biraz önce eklediğimiz kayıt dizisinin seçili olduğunu gördükten sonra "OK" diyerek işlemi tamamlıyoruz. Böylece kayıt dizimiz eğer boş ise bu mesajın görünmesini sağlıyoruz.

Eğer kayıt dizisi boş ise ...

Eğer kayıt dizisi boş ise ...

Aynı şekilde mesaj gönderildi metnini seçip yine "Server Behaviors" paneli menüsünden "Show Region / Show If Recordset Not Empty" seçeneğine tıklıyoruz. Böylece de kayıt dizimiz bir kayıt içeriyor ise bu mesajı göster demiş olduk.

Şimdi sıra e-mail gönderme işlemini yapan kodu yazmaya geldi. Şimdi kod görünümüne geçip mesajın başarıyla gönderildiğini belirten metnin kaynak kodunu ve bu bölümün hemen üstünde olması gereken "if" ifadesini buluyoruz. Şuna benzer bir şey olmalı;

<?php if ($totalRows_Hatirlat_RS > 0) { // Show if recordset not empty ?>
  1.  

bu ifadenin altına yeni bir PHP etiketi açıp şu satırları giriyoruz.

<?php
$Gonderen_Ad = "Site adi veya adresi"; // Sitenizin adı veya adresi
$Gonderen_Email = "emamil@siteadresi.com"; // Sitenizi iletişim adresi
$Konu = "Sifre hatirlatma"; // Mesaj konusu
$Uye_Email = ; // mesajın gönderileceği (üyenin) email adresi
$Uye_AdSoyad = ; // üyenin adı soyadı
$Uye_Kullanici = ; // üyenin kullanıcı adı
$Uye_Parola = ; // üyenin parolası
 
$Gidecek_Mesaj  = "<p>Sayin: <strong>". $Uye_AdSoyad."</strong></p>n";
$Gidecek_Mesaj .= "<p>Sisteme giris yapabilmeniz icin gerekli kullanici adi ve parola asagida yer almaktadir, lutfen sifrenizi kaybetmeme konusunda daha dikkatli olunuz.</p>n";
$Gidecek_Mesaj .= "<p>Kullanici adi: <strong>".$Uye_Kullanici."</strong></p>nn";
$Gidecek_Mesaj .= "<p>Parola: <strong>".$Uye_Parola."</strong></p>nn";
$Gidecek_Mesaj .= "<p>--------------------------------------------</p>n";
$Gidecek_Mesaj .= "<p>".$Gonderen_Ad."</p>";
?>
 

Burada ilk kısımda tanımladığımız değişkenlerin neler olduğu yanlarındaki yorum satırlarında belirtiliyor. "$Gonderen_Ad" değişkeni muhtemelen sitemizin adı olacak buraya uygun bir ad giriyoruz. "$Gonderen_Email" de sitemizin iletişim e-mail adresi olacak. "$Konu" olarak "Sifre hatirlatma" yazdık, siz istediğiniz gibi değiştirebilirsiniz. Burada dikkatinizi çekeceği üzere; "$Uye_Email", "$Uye_AdSoyad", "$Uye_Kullanici" ve "$Uye_Parola" değişkenlerine bir değer atanmamış, bu değişkenlerin değerlerini kayıt dizisinden çektireceğiz. Bunun için "Bindings" panelindeki biraz önce tanımladığımız kayıt dizisindeki "email", "ad_soyad", "kullanici_adi" ve "parola" alanlarını tutup değişkenin sonundaki eşittir (=) işaretinden sonra noktalı virgülden (;) önce bir yere sürükleyip bırakıyoruz.

email alanını kodda ilgili kısma sürükleyip bırakıyoruz.

email alanını kodda ilgili kısma sürükleyip bırakıyoruz.

Bu şekilde tüm alanları yerlerine sürükledikten sonra bu kodun devamına aşağıdaki satırları ekliyoruz;

$headers = "From: ".$Gonderen_Ad." <".$Gonderen_Email."> n";
$headers .= "X-Sender: <".$Gonderen_Email.">n";
$headers .= "Reply-To: <".$Gonderen_Email.">n";
$headers .= "X-Priority: 0n";
$headers .= "MIME-Version: 1.0n";
$headers .= "Content-Type: text/html; charset=iso-8859-9n";
$yolla = mail($Uye_Email,$Konu,$Gidecek_Mesaj,$headers);
 

Bu PHP kodlarının ne işe yaradığını anlamış olmalısınız. Gördüğünüz gibi veritabanından gelen değerleri alıp "$Gidecek_Mesaj" isimli bir değişkendeki mesajımızın içinde uygun yerlere yazdırıyoruz. Böylece kullanıcıya gerekli bilgilerin bulunduğu bir mesaj göndermiş olacağız. Son satırda yer alan "mail()" fonksiyonu ile de mesajımızı gönderiyoruz.

ASP VBScript sunucu modeli ile çalışan arkadaşlar aşağıdaki kodu kullanabilirler;

<%
Dim Gonderen_Ad
Dim Gonderen_Email
Dim Konu
Dim Uye_Email
Dim Uye_AdSoyad
Dim Uye_Kullanici
Dim Uye_Parola
Dim Gidecek_Mesaj
 
Gonderen_Ad  = "Site adi veya adresi" ' Sitenizin adı veya adresi
Gonderen_Email = "emamil@siteadresi.com" ' Sitenizi iletişim adresi
Konu = "Sifre hatirlatma" ' Mesaj konusu
Uye_Email =  ' mesajın gönderileceği (üyenin) email adresi
Uye_AdSoyad =  ' üyenin adı soyadı
Uye_Kullanici =  ' üyenin kullanıcı adı
Uye_Parola =  ' üyenin parolası
' bu degiskenlerin degerlerini Bindings panelindeki kayıt dizisinden sürükleyip bırakarak atayabilirsiniz
' muhtemelen şu şekilde olacaktır; (Hatirlat_RS : kayıt dizisinin (recordset) ismi oluyor)
' Uye_Email = Hatirlat_RS.Fields.Item("email").Value
 
Gidecek_Mesaj = "<p>Sayin: <strong>" & Uye_AdSoyad & "</strong></p>n"
Gidecek_Mesaj = Gidecek_Mesaj & "<p>Sisteme giris yapabilmeniz icin gerekli kullanici adi ve parola asagida yer almaktadir, lutfen sifrenizi kaybetmeme konusunda daha dikkatli olunuz.</p>n"
Gidecek_Mesaj = Gidecek_Mesaj & "<p>Kullanici adi: <strong>" & Uye_Kullanici & "</strong></p>nn"
Gidecek_Mesaj = Gidecek_Mesaj & "<p>Parola: <strong>" & Uye_Parola & "</strong></p>nn"
Gidecek_Mesaj = Gidecek_Mesaj & "<p>--------------------------------------------</p>n"
Gidecek_Mesaj = Gidecek_Mesaj & "<p>" & Gonderen_Ad & "</p>"
 
Set objCDONTS = Server.CreateObject("CDONTS.NewMail")
objCDONTS.From = ""& Gonderen_Ad &"" & "<"& Gonderen_Email &">"
objCDONTS.To = Uye_Email
objCDONTS.Subject = Konu
objCDONTS.BodyFormat=0
objCDONTS.MailFormat=0
objCDONTS.Body = Gidecek_Mesaj
On Error Resume Next
objCDONTS.Send
Set objCDONTS = Nothing
%>
 

Burada dikkat edilmesi gereken en önemli noktalardan biri; eklediğimiz bu kodların "Show if recordset not empty" olarak belirtilen ve kayıt dizisi boş olmadığı zaman yürütülecek işlemleri gösteren "if" ifadesinin içinde olmasına dikkat etmemiz gerektiğidir. İşlem bittikten sonra sayfa DW içerisinde şu şekilde görünecektir;

Sayfanın son halinin DW içerisindeki görünümü

Sayfanın son halinin DW içerisindeki görünümü

Şekilde 2. paragrafın başında görünen sarı renkli ufak simge biraz önce girdiğimiz kodların olduğu kod bloğunu göstermekte. Bunun "Show if recordset not empty" ifadesinin içinde yer almasına dikkat etmeliyiz.

İşin son basamağı olarak, şifre hatırlatma formunun bulunduğu "forgot.php" ye üye girişinin yapıldığı bir sayfadan "Şifremi unuttum" yada buna benzer bir şekilde link vermek kalıyor. Böylece bir şifre hatırlatma sayfası da yaptırmış olduk. Eğer e-mail yollama işlemleri sizin için fazla külfetli veya karışık geldiyse, gizli soru-gizli cevap sistemini de kullanabilirsiniz. Gördüğünüz gibi olaylar aynı mantık çerçevesinde formdan gelen bilgilere göre kayıtları filtreletip sayfaya yazdırmaktan öteye geçmiyor. Artık üyelik sistemimiz hazır herkese hayırlı olsun. Başka bir "yararlı" uygulamada görüşmek dileğiyle, herkese iyi çalışmalar.

Kaynak www.dw.gen.tr/
Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...