• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 23.04.2016 00:55:33C programlama 2 oyun
  • 20.04.2016 16:34:41Local Database
  • 15.04.2016 14:26:15Fatura kayıt işlemi
  • 21.03.2016 01:55:30C# problem

Popüler Sorular

  • 27.05.2012 05:49:50Asp.Net ile Date time alana veri ekleyemiiyorum ?
  • 2.04.2012 00:45:18.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 12.05.2012 08:44:49Acil Yardım
  • 27.05.2012 13:46:51veri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LINQ
  • LibreOffice
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

ASP.NET WEB UYGULAMALARINDA ŞİFREMİ UNUTTUM

Asp.Net Şifremi Unuttum, Asp.Net Uygulamalarında Şifremi Unuttum, Mail Gönderme,MailMessage Sınıfı

12.05.2014

Yazar: Muhammed ÖNAL (Google+)

Kategori: ASP.NET

10213

ASP.NET WEB UYGULAMALARINDA ŞİFREMİ UNUTTUM

Merhaba değerli arkadaşlar;

Özellikle teknik içerikli yazılarımızı/makalelerimizi yazarken daha çok siz değerli okurlarımızdan gelen mailleri dikkate alarak hazırlamaktayız. Ve en çok talep edilen konuları listeleyip bu doğrultuda yazılarımız oluşturarak sizlerle paylaşmaktayız.

İş yoğunluğundan dolayı son dönemlerde çok fazla makaleyi sizlerle paylaşamazsam da bu yazımızda okurlarımızın istekleri doğrultusunda ASP.NET Web projelerinde Login ekranlarında sıklıkla gördüğümüz Şifremi Unuttum bölümüne yönelik olarak hazırladığım yazıyı sizlerle paylaşmış oluyorum. Bu konuyla ilgili web ortamında ziyadesiyle makale olmasına rağmen yine de okurlarımızı kırmamak adına sade bir üslupla anlatmaya çalışacağım.
 

Eğer daha önce bir web uygulaması geliştirirken, geliştirmiş olduğunuz web uygulamanızda İletişim bölümü hazırladıysanız, Bu bölümde kullanılan mail gönderme gibi Ya da daha farklı bir senaryo düşünerek Asp.Net ile formdaki verileri bir e-mail gönderme işlemine tabi tutabilirsiniz. Yani kullanılan metot hemen hemen aynıdır.

Şifremi unuttum bölümü Login kontrollü web uygulamalarında (Uygulama program dili farketmeksizin) sıkça kullanılan bir yapı olup, böyle bir uygulamanın olmazsa olmazları arasındadır.

Örneğin; Günlük hayatımızda en çok kullandığımız Sosyal Medya web uygulamalarından Facebook, Twitter vb. Login kontrollü uygulamalar olduğundan bu yapıyı bünyesinde bulundurmak zorundadır.

Hepimizin aşina olduğu Facebook ve Twitter için örnekler aşağıdaki gibidir.

Facebook şifremi unuttum

twitter şifremi unuttum

Bu aşamada Şifremi unuttum link butonuna click yaptığımızda bizi aşağıdaki gibi bir sayfaya yönlendirecektir.

twitter recorvery password

Görmüş olduğunuz Senaryo Twitter için Şifremi Unuttum senaryosudur. Bizim geliştireceğimiz uygulamada buna paralellik gösterecek bir uygulama olacaktır. Basit, Sade ve net bir uygulama.

Kullanımı noktasında bir fikir edindikten sonra uygulamamızın senaryosuna geçebiliriz:

Senaryo: İlk iş olarak sayfamıza;

Şifresini unutan kullanıcıdan bilgileri alabilmemiz ve gönder işlemini tetiklemesi için web sayfamıza gerekli kontrolleri eklememiz gerekmektedir.
Peki, bu kontroller neler olabilir. Tabi ki; Kullanıcıdan alacağımız bilgiler için bir Textbox, Button,bir Label işimizi ziyadesiyle görecektir.

Textbox ile kullanıcının Mail adresini girmesini sağlayarak, Kullanıcının Kullanıcı bilgileri olan Kullanıcı adı ve Şifresi Mail adresine gönderilebilir. Gönderme işlemini ise Gönder Buttonu tetikleyecektir.

Tasarım tarafında Son olarak da eğer, kullanıcının mail adresi sisteme kayıtlı değilse Başarısız mesajını bir Label’a atayabiliriz.
Tasarımımız aşağıdaki gibi olacaktır.

örnek uygulama şifremi unuttum

Sifremi-Unuttum.aspx sayfamıza ait design kodlarımız ise aşağıdaki gibi olacaktır.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sifremi-Unuttum.aspx.cs" Inherits="Sifremi_Unuttum" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>	  		       
	    <asp:label ID="lblemail" for="txtemail" runat="server" >E-Mail Adresiniz:</asp:label>
        <br />
	    <asp:Textbox ID="txtemail" runat="server" Width="288px"></asp:Textbox>
   		<br />
        <br />
         		       
        <asp:Button ID="btnGiris" runat="server" ext="Gönder" OnClick="btnGonder_Click" Width="106px" />
        <br />
        <br />
        <asp:Label ID="lblMesaj" runat="server" ></asp:Label>

     </div>
    </form>
</body>
</html>

Veritabanı olarak SQL server ile ilgili İşlemlerimizi gerçekleştireceğimizden dolayı, siz değerli okurlarımız uygulamayı hazırlarken bunu göz önünde bulundurmanız gerekmektedir. Veritabanı tarafında tblKullanicilar adında bir tablomuz olsun;

Bu Tabloda aşağıdaki gibi Sütunlar içermiş olsun, siz Kullanıcı tablonuza daha fazla sütunlar ekleyebilirsiniz. Aşağıdaki sadece bir örnek teşkil etmektedir.

Kullanıcı tablosu veritabanı

Veritabanında tablonuzu oluşturduktan sonra Manuel olarak veri ekleyelim. Ki eğer bütün bir web projesi geliştirmiş iseniz; Zaten Kullanıcının Login olabilmesi için bir Üye Kayıt formunu bulundurmanız gerekmektedir. Bu üye kayıt formu ile Kullanıcılar web sitesine üye olacaklardır ve ilgili Bilgileri zaten tblKullanicilar tablosunda tutmuş olacaktır. Biz burada manuel olarak ekleme yapalım.

Kullanıcı tablosu içeriği

Şeklinde manuel bilgiler eklemiş olduk.

İlgili Design ve Veritabanı işlemlerimizin hemen ardından; Code behind tarafında
Sifremi-Unuttum.aspx.cs kodlarımızı yazmaya çalışalım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Net.Mail;
using System.Net;
using System.IO;

public partial class Sifremi_Unuttum : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btnGonder_Click(object sender, EventArgs e)
    {
        SqlCommand sorgu = new SqlCommand("SELECT * FROM tblKullanicilar WHERE EMail=@EMail", baglan.baglanti);
        if (ConnectionState.Closed == baglan.baglanti.State)
            baglan.baglanti.Open();

        sorgu.Parameters.AddWithValue("@EMail", txtemail.Text);
        SqlDataReader dr = sorgu.ExecuteReader();

        if (dr.Read())
        {
            MailMessage mesaj = new MailMessage();
            mesaj.To.Add(new MailAddress(txtemail.Text));
            mesaj.From = new MailAddress(txtemail.Text, "Yönetim Mail Adresiniz");
            mesaj.Body = "E-mail =" + dr["EMail"].ToString() + "\n" + "Kullanıcı Adı:" + dr["KullaniciAdi"].ToString() + "\n" + "Şifre:" + dr["Sifre"].ToString() + "\n";
            SmtpClient client = new SmtpClient();
            client.Host = "smtp.gmail.com";
            client.Port = 587;
            client.Credentials = new NetworkCredential("Yönetim Mail Adresiniz", "Mail Adresinizin Şifresi");
            client.EnableSsl = true;
            try
            {

                client.Send(mesaj);
                Response.Write(alarmVer.msjBox("Şifreniz E-Mail adresinize gönderilmiştir. Teşekkür ederiz !", "Default.aspx"));
            }
            catch
            {
                Response.Write(alarmVer.msjBox("Mesaj Gönderilirken bir hata oluştu.", "Sifremi-Unuttum.aspx"));
            }

        }
        else
        {
            lblMesaj.Text = "E-mail adresi kayıtlı değil!";
        }
        dr.Close();
        txtemail.Text = "";
        System.Threading.Thread.Sleep(2000);
    }
}

Yukarıdaki gibi Code Behind tarafında kodlarımızı yazmış oluruz. Şimdi bu kodlarımızı açıklayalım.

MailMessage mesaj = new MailMessage();
mesaj.To.Add(new MailAddress(txtemail.Text));
mesaj.From = new MailAddress(txtemail.Text, "Yönetim Mail Adresiniz");
mesaj.Body = "E-mail =" + dr["EMail"].ToString() + "\n" + "Kullanıcı Adı:" + dr["KullaniciAdi"].ToString() + "\n" + "Şifre:" + dr["Sifre"].ToString() + "\n";

mesaj adlı nesnemize mesaj.From ile mesaj gönderme işleminde kullanacağımız Yönetici Mail adresimizi tanımlayabiliriz.
Mesaj.Body ile mail içeriğini göndermiş oluyoruz. Görüldüğü gibi Kullanıcıya ait bilgileri içeren KullaniciAdi,Sifre ve Mail Adresi Kullanıcıya gönderilmektedir.

Bunları dr nesne ile veritabanından seçtiğimiz kayıtlar teşkil etmektedir.
 

        5.  Ardında mail gönderme işlemi için smtp
            
SMTP adresi olarak GMAIL kullanıyoruz. Sizlerde kendi kişisel SMTP adresinizi kullanabilirsiniz. adresimizi tanımlıyoruz.

            Smtp Sınıfı

 Kullanım örneği ise;

            

 SmtpClient client = new SmtpClient("mail.yazilimdilleri.net");

Şeklindedir.

Örneğimizde Kullandığımız GMAIL’e ait SMTP ayarları ise aşağıdaki gibidir.        

SmtpClient client = new SmtpClient();
client.Host = "smtp.gmail.com";
client.Port = 587;

             İçeriği gönderecek olan mail adresimizi ve şifresini belirtiyoruz. Örneğin;

client.Credentials = new NetworkCredential("muhammed.onal@gmail.com", "123456");
client.EnableSsl = true;

            Genel olarak yaptıklarımızı toparlayacak olursak; Yukarıda Sifremi-Unuttum.aspx.cs için vermiş olduğumuz kodları kullanmanız gerekmektedir.

 

NOT:
İşlemleri gerçekleştirebilmek için namespace’leri eklemeyi unutmayınız. Kullandığımız Namaspace’ler aşağıdaki gibidir

using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Net.Mail;
using System.Net;
using System.IO;

Bunun yanı sıra;

Web.Config sayfamızda oluşturduğumuz bağlantı cümleciğinizi de yazmayı unutmayınız. Örnek Bağlantı Cümleciğimiz aşağıdaki gibidir.

<connectionStrings>  
    <add name="Baglantimiz" connectionString="Data Source=MUHAMMED-ONAL;Initial Catalog=TESTDENEME;User ID=sa;Password=123456" providerName="System.Data.SqlClient"/>
  </connectionStrings>

 Örneğimize İlişkin Sonuç Ekran görüntüleri aşağıdaki gibidir:

Hatalı ise hata mesajı yaz

Ve Eğer Mail Adresi sistemde kayıtlı ise ve Doğru ise Şifrenin Mail adresine gönderildiğine dair Kullanıcıya bildirilen Mesaj

Başarılı ise mail gönder

Ve Sonuç olarak Sistemde kayıtlı olan ve Site Yöneticisi tarafından Mail adresime gelen Kullanıcı Şifrem aşağıdaki gibidir:

Recovery mail,şifrenin mail adresine gönderilmesi

Hemen hemen bütün Login Kontrollü web uygulamalarımızın olmazsa olmazı olan Şifremi Unuttum olayını bu makalemizde irdelemeye çalıştık. Web üzerinde birçok yazı bulabileceğiniz bu konuya dair, Başlangıç seviyesinde uygulama geliştiren yazılımcı dostlarımıza

Faydalı olması temennisiyle;

Muhammed ÖNAL
Bilgisayar Mühendisi
RFID Sistemleri Uzmanı
BT Yönetişimcisi

Blog:  http://www.muhammedonal.com
Web : http://www.yazilimdilleri.net

 

               

Yazar Hakkında

Muhammed ÖNAL

Muhammed ÖNAL

www.muhammedonal.com

Bilgisayar Mühendisi | RFID Sistemleri Uzmanı | BT Yönetişimcisi | Strateji Planlama ve İş Geliştirme 2015 itibariyle sağlık sektöründe Bilgi Sistemleri Yöneticisi ve Üst yönetim Stratejik Planlama ve İş Geliştirme Koordinatörü pozisyonunda çalışmaktadır.

Sosyal Medya

ORANLAR

  • 10213izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Hocam Link başka sayfaya yönlendiriyor.
  • merhaba benim merak ettiğim bir konu var y...
  • Merhaba download linki çalışmıyor. Rica et...
  • Nevzat Bey selamlar, Açıkçası bizler a...
  • Parametreleri Cache İşleminden Yalıtma kon...

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 120153
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 65271
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 48392
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ