Kullanıcının kendi şifresini daha sonra değiştirebilmesi

22/07/2009, 12:11

hasanzengi

Merhaba kullanıcı şifreli giriş ve yetkilendirmeyi yaptım, kullanıcı daha sonra kendi şifresini nasıl değiştirecek bunu nasıl yapabilirim
yardımcı olabilirmisiniz.
Teşekkürler.
22/07/2009, 14:31

esrefigit

Örneğinizi ekleyin ya da;
Elinizdeki mevcut şifre giriş formunu kopyalayın. Fark olarak buna 3 tane metin kutusu koyun
1. Eski Şifre ( kullanıcının buraya mevcut şifresini yazması gerekli ki gerçekten o olduğunu bilelim)
2. Yeni Şifre
3. Yeni Şifre Tekrarı ( 2.si ile aynı olup olmadığını kontrol edeceğiz. Şifresini yanlış girmemesi için son kontrol)
Tamam dediğinde ;
1. Eski şifresini doğru yazmış mı? Farklıysa uyarı verin
2. Yeni şifre ve eski şifre aynı mı? Aynıysa uyarı verin.
3. Yeni şifre ve yeni şifre tekrarı aynı mı? Farklıysa uyarı verin

Yukarıdaki uyarılardan geçerse kullanıcı şifresini ado ile kaydedebilirsiniz.
strSQL = "SELECT * FROM kullanıcılar "
Set rstkayit = New ADODB.Recordset
rstkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rstkayit
.Find "[kullanıcıid]=" & Me.kullanıcı.Column(1)
.Fields("sifre")=me.yenisifre
.Update
End With
22/07/2009, 15:28

Bilgisayarcı

Bu kadar düzgün türkçeyle yazılmış bir esrefigit cevabı için teşekkür ederiz
22/07/2009, 16:05

esrefigit

teşekkür ederim
23/07/2009, 19:55

hasanzengi

Çok teşekkürler, şifre sorğulamaları yaptım ama sadece yeni şifreyi tabloya update edecek komutları tam yaptıramadım, yardımcı olabilirmisiniz.

Sub YeniŞifreupdate()

Dim rstkayit As String

If Not IsNull(rstkayit![KULLANICIŞİFRESİ]) > 0 Then
Set rstkayit = CurrentDb.OpenRecordset("select * from KULLANICILAR where ID=" + str(Me.ID.Value) + " ;")
rstkayit.Edit
rstkayit![KULLANICIŞİFRESİ] = LCase$(strKULLANICIŞİFRESİ)
rstkayit.Update
rstkayit.Close
End If

End Sub
Private Sub Command5_Click()
If IsNull(Me.Kullanıcı) Or Me.Kullanıcı = "" Then
MsgBox "Lütfen Kullanıcı Adı Giriniz.", vbOKOnly + vbInformation, "Bilgilendirme Penceresi"
Me.Kullanıcı.SetFocus
Exit Sub
End If
If Me.Şifre.Value = Dlookup ("KULLANICIŞİFRESİ", "KULLANICILAR", "[ID]=" & Me.Kullanıcı.Value) Then

ID = Me.Kullanıcı.Value
YeniŞifretekrarı
Else
MsgBox "Hatalı Şifre! Lütfen Tekrar Deneyiniz", vbOKOnly + vbCritical, "Bilgilendirme Penceresi"

End If
intLogonAttempts = intLogonAttempts + 1
If intLogonAttempts > 3 Then
MsgBox "KAPATILACAK.", vbCritical, "Bilgilendirme Penceresi"
Application.Quit
End If
End Sub
Private Function YeniŞifretekrarı()
If [Yenişifre] = [Şifre] Then
MsgBox "Yenişifre ile Eskişifre Farklı olmalıdır"
DoCmd.GoToControl "Yenişifre"
Else
If IsNull([Yenişifre]) Or IsNull([Şifretekrarı]) Then
MsgBox "Yeni şifre ve Yeni şifre tekrarını girmelisiniz."
DoCmd.GoToControl "Yenişifre"
Else
If [Yenişifre] <> [Şifretekrarı] Then
MsgBox "Yenişifre ile Yenişifre Tekrarı aynı olmalıdır"
DoCmd.GoToControl "Yenişifre"
Else
If [Yenişifre] = [Şifretekrarı] Then

MsgBox "Şifreniz değiştirilmiştir"
DoCmd.OpenForm "SİFREGİRİŞ"
DoCmd.Close acForm, "SİFREDEĞİŞTİRME"
YeniŞifreupdate
End If
End If
End If
End If
End Function
24/07/2009, 13:56

hasanzengi

Arkadaşlar,
update kısmında takıldım, bana yardımcı olabilirmisiniz, örneği ekleymiyorum aşağıdaki komutu çalıştıramıyorum, formun olayına

Option Compare Database
Public rstkayit As ADODB.Recordset
Dim strSQL As String
bunu yazdığımda aşğıdaki hatayı veriyor,


This error occurs when an event has failed to run because Microsoft Office Access cannot evaluate the location of the logic for the event. For example, if the OnOpen property of a form is set to =[Field], this error occurs because Access expects a macro or event name to run when the event is fired.

Sub şifreupdate()

strSQL = "SELECT * FROM KULLANICILAR "
Set rstkayit = New ADODB.Recordset
rstkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

With rstkayit
.Find "[ID]=" & Me.Kullanıcı.Column1()
.Fields("KULLANICIŞİFRESİ") = Me.Yenişifre
.Update
End With



End Sub