Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 06.12.2018 11:23:49

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 406

Şifre Değiştirme Mantık

Selamlar Temiz Şifre değiştirme yazdığıma inandığım kod çalışmıyor , Sebebini Bulamadım .Açıklamalarıyla birlikte ektedir smile

ublic function sifreDegistirpost(Request $request)
    {

        //FORM KONTROLU YAPIYORUZ

        $request->validate([
            'password'=>'required|min:6|confirmed', //KULLANICIN YENİ ŞİFRESİ İLE AYNISI UYUYOR MU ONU KONTROL EDİYORUZ
        ]);

        //KULLANICININ ESKİ ŞİFRESİNİ ALDIK

        $user_old_password = User::where('id',Auth::user()->id)->pluck('password')->first();

        $form_old_password = $request->old_password; //FORMDAN KULLANICININ ŞİFRESİNİ İSTEDİK
        $form_new_password = $request->new_password; //FORMDAN KULLANICININ YENİ ŞİFRESİNİ İSTEDİK
        $form_again_new_password = $request->password_confirmed;//FORMDAN KULLANICININ TEKRAR GİRMESİNİ İSTEDİK

        $sifreli_password = bcrypt($form_old_password); //KULLANICININ GİRDİĞİ ESKİ ŞİFREYİ ŞİFRELEDİK

        if($user_old_password == $sifreli_password) //VERİ TABANINDAKİ DEĞER İLE KULLANICININ FORMDAN GELEN DEĞERİ EŞİT İSE GÜNCELLEME İŞLEMİ YAPTIK
        {
            $user_change_password = User::find(Auth::user()->id)->get();
            $user_change_password->password = bcrypt($form_new_password);
            $user_change_password->update();

            alert()->success('Şifreniz Değiştirildiği İçin Tekrar Girmek Zorundasınız!', 'Tebrikler Şifreniz Değişti')->autoClose(5000);
            return redirect()->route('logout'); // ŞİFRE DEĞİŞTİRİLMİŞ İSE ÇIKIŞ YAPTIRDIK

        }else{
            alert()->success('Eski Şifrenizi Yanlış Girdiniz', 'Tekrar Deneyiniz')->autoClose(5000);
            return redirect()->back(); //ESKİ ŞİFREYİ YANLIŞ GİRMİŞ İSE EKRANA HATA BASTIK
        }

    }

şifreler uyuşmuyorsa gösteriyor ama herşeyi doğru girmeme rağmen yine aynı hatayı alıyorum doğru girsemde girmesemde



NOT : Sorunu buldum ama çözüm nedir bilmiyorum . Veri tabanındaki eski şifre sabit ama kullanıcının old şifresi hiç bir zaman ona eşit olmayacak. Örnek vt de şifre "123456"  Karşılığı abcdefg olsun formda giden değer "123456" ama karşılğı abcdefg oluyor bu yüzden ortalık karışmış ):

Son düzenleyen Kevin-Mitnick (06.12.2018 11:37:23)


Mister Koder

Çevrimdışı

#2 06.12.2018 12:00:06

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,360
Website

Yanıt: Şifre Değiştirme Mantık

if (Hash::check($request->old_password, $user_old_password)) {
    // Kullanıcı eski şifresini doğru girdi...
}

Çevrimdışı

#3 06.12.2018 12:13:54

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,360
Website

Yanıt: Şifre Değiştirme Mantık

Şunu farkettim: Eğer formda eski şifre old_password ve yeni şifre new_password isimlerine sahipse sizin validator kuralları yanlış. Şöyle olması lazım:

$request->validate([
    'old_password'=>'required|min:6',
    'new_password' => 'required|min:6|confirmed'
]);

Bu durumda yeni şifre onayı istediğiniz diğer input adı da new_password_confirmation olmak zorunda

Kısaca:

public function sifreDegistirpost(Request $request) 
{
    $request->validate([
        'old_password'=>'required|min:6',
        'new_password' => 'required|min:6|confirmed'
    ]);

    $user = $request->user();

    if (Hash::check($request->old_password, $user->password)) {
        
        $user->update([
            'password' => bcrypt($request->new_password)
        ]);

        auth()->logout();
        return redirect()->route('login')->with('success','Tekrar giriş yapınız');

    } else {
        return back()->withErrors('Mevcut şifrenizi yanlış girdiniz');
    }
}

Çevrimdışı

#4 06.12.2018 12:34:23

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 406

Yanıt: Şifre Değiştirme Mantık

@mgsmus hocam teşekkür ediyorum öncelikle şuan çalışıyor ama

Bu durumda yeni şifre onayı istediğiniz diğer input adı da new_password_confirmation olmak zorunda bunun sebebi nedir acaba ?


Mister Koder

Çevrimdışı

#5 06.12.2018 13:05:41

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,360
Website

Yanıt: Şifre Değiştirme Mantık

confirmed kuralının çalışma şekli bu şekilde. Örneğin alan adı title ise bununla aynı olmasını istediğiniz alanın adı title_confirmation olmak zorunda. Aynı adın yanına _confirmation ekliyorsunuz. Validator bakacağı diğer alanın adını bu şekilde anlıyor.

<label>Başlık: <input name="title"></label>
<label>Başlık Tekrar: <input name="title_confirmation"></label>
$request->validate([
    'title' => 'required|confirmed'
]);

Çevrimdışı

#6 06.12.2018 13:56:52

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 349

Yanıt: Şifre Değiştirme Mantık

1.hatanız su :

$user_old_password = User::where('id',Auth::user()->id)->pluck('password')->first();

User::find(Auth::user()->id)->get();

bu iki query fazla.yukarıda kolay olsun diye tek passwordu cekmişsiniz.pluck methodunu kaldırırsanız aşağıda aynı query'i tekrarlamazsınız.

2.gorulen hata (daha doğrusu mantıksızlık)

$form_again_new_password 

bu niye var.eğer yeni passwordla onay passwordu aynı değilse sizin kontrolünüz olmadığı için ne işe yarayacak.validate yonteminde tek bir passwordu gecerli kılmıssınız gibi gorunuyor.Hal boyle olunca kod kalabalığı olur ve gereksiz yere işgal eder methodunuzu.

Tavsiyedir : uygulayayıp uygulamamak size kalmış.
Kontrolcünüzün şişmemesini istiyorsanız.bu request değerlerini bir request objesinden çekin.

Son düzenleyen deathisonitsway (06.12.2018 14:00:04)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#7 06.12.2018 23:43:24

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 406

Yanıt: Şifre Değiştirme Mantık

@deathisonitsway hocam teşekkür ediyorum görüşleriniz için bu konularda kendimi geliştirmem lazım uzun yollardan gidiyorum. Kontrolcünüzün şişmemesini istiyorsanız.bu request değerlerini bir request objesinden çekin. buna bir örnek verebilir misiniz ?


Mister Koder

Çevrimdışı

#8 07.12.2018 07:54:24

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 349

Yanıt: Şifre Değiştirme Mantık

Kevin-Mitnick yazdı:

@deathisonitsway hocam teşekkür ediyorum görüşleriniz için bu konularda kendimi geliştirmem lazım uzun yollardan gidiyorum. Kontrolcünüzün şişmemesini istiyorsanız.bu request değerlerini bir request objesinden çekin. buna bir örnek verebilir misiniz ?

aslında laravelde bu var.

https://laravel.com/docs/5.7/validation … validation

bu yolu takip edersen rahat edersin.ben apilerimde laravel kullanmıyorum ama.benzer bir yolu bende izliyorum.

https://gist.github.com/aligurbuz/57a8f … c876f3c853

bu giste bakarsan.her bir client request bir obje bende ve method ile overwrite ediyorum.yani kullanıcıdan bir date inputu geldiginde bunu otomatik olarak strtotime a ceviriyor..tabi yardımcı traitlerim var bu objenin Y-m-d formatında gelmesi lazım..gibi gibi..sizde böyle bir şey yapabilirsiniz.laravel kullanıyorsan laravelin request nesnesini kullanın.

Son düzenleyen deathisonitsway (07.12.2018 07:57:43)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#9 07.12.2018 09:11:02

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 406

Yanıt: Şifre Değiştirme Mantık

Hımm anladım bunu diyorsunuz bunu normalde kullanıyorum ama bir satırlık birşey için yeni bir request açmak istemedim açıkçası görüşleriniz için teşekkürler.


Mister Koder

Çevrimdışı

#10 07.12.2018 09:38:58

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 349

Yanıt: Şifre Değiştirme Mantık

Kevin-Mitnick yazdı:

Hımm anladım bunu diyorsunuz bunu normalde kullanıyorum ama bir satırlık birşey için yeni bir request açmak istemedim açıkçası görüşleriniz için teşekkürler.

Dostum yalnış düşünce o ama bir şey demiyorum herkes bir şekilde hızlı olarak application cıkarma peşinde.Sorun yok bir gün reusability olayını derinden anlarsan o zaman o bir satırın bile orada işi olmadığını görebilirsin.


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

Forum alt kısmı