password etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Haziran 2018 Cuma

PDO ile Şifremi Unuttum Yapımı


PDO ile Şifremi Unuttum Yapımı


Genellikle tüm scriptlerde kodlanması gereken bir diğer özellik ise Şifremi Unuttum özelliğidir. Bu özellik olmadan üyeler şifrelerini unuttuğunda ne yapacaklarını bilemezler ve kendilerine yeniden bir hesap kurmak isterler. Buda bir zaman kaybı oluyor. Şifremi unuttum özelliği ile artık üyeleriniz şifrelerini unuttuğunda veya hesabını çaldırdığında şifremi unuttum özelliği ile tekrardan şifresine ulaşabilecektir. Şimdi hiç zaman kaybetmeden işlemimize geçelim.



İlk olarak Veritabanımızda kullandığım tablolar aşağıdaki gibidir kendinize göre düzenleyebilirsiniz. Şifremi unuttum işlemi Token ile çalışacaktır onuda düzenleyebilirsiniz.

Veritabanımız bu şekilde olacaktır. Birsonraki işlemimiz şifremi unuttum sayfası olucaktır. 
forgotPassword.php adında bir dosya oluşturalım ve içine;

<?php
try {
$connection = new PDO("mysql:host=localhost;dbname=dersler;charset=utf8", "root", "root");
} catch ( PDOException $e ){
print $e->getMessage();
}
    if (isset($_POST["forgotPass"])) {
        $email = $_POST["email"];
        $data = $connection->query("SELECT id FROM users WHERE email='$email'");
        if ($data->rowCount() > 0) {
            $str = "0123456789qwertzuioplkjhgfdsayxcvbnm";
            $str = str_shuffle($str);
            $str = substr($str, 0, 10);
            $url = "http://localhost/members/resetPassword.php?token=$str&email=$email";
            //mail($email, "Şifre Yenileme", "Yeni şifre için, lütfen tıklayınız : $url", "From: sefayilmaz@visualdersleri.blogspot.com\r\n");
            $connection->query("UPDATE users SET token='$str' WHERE email='$email'");
            echo "Email adresinizi kontrol ediniz.!";
        } else {
            echo "Böyle bir mail adresi bulunamıyor.!";
        }
    }
?>
<html>
    <body>
        <form action="forgotPassword.php" method="post">
            <input type="text" name="email" placeholder="Email"><br>
            <input type="submit" name="forgotPass" value="Request Password">
        </form>
    </body>
</html>

yazalım ve kayıt edip çıkalım. Yukarıda biz tokeni rasgele oluşturduk daha sonrada bu tokeni veritabanına işledik. Ardından bir link yapısı oluşturduk ve bu link yapısını ise üye'ye mail olarak gönderdik ama biz yukarıda mail gönderme işlemini yapmadım onun için kaynak bir kod paylaşacağım aslında kolay birşey gmail'im aşırı güvenlikli olduğu için mail sistemine giriş yapamadığım için yukarıda belirtmedim ama ileriki zamanda mail gönderme işlemini paylaşacağım.

Sıradaki işlemimiz ise şifre yenileme işlemi. Şifre yenileme işlemimiz otomatik olarak rasgele bir şifre belirleniyor daha sonrada bu şifreyi üye'ye verilerek veritabanımıza kayıt oluyor. 

resetPassword.php adında bir dosya oluşturarak aşağıdaki kodları yapıştıralım.

<?php
try {
$connection = new PDO("mysql:host=localhost;dbname=dersler;charset=utf8", "root", "root");
} catch ( PDOException $e ){
print $e->getMessage();
}
    if (isset($_GET["token"]) && isset($_GET["email"])) {
        $email = $_GET["email"];
        $token = $_GET["token"];
        $data = $connection->query("SELECT id FROM users WHERE email='$email' AND token='$token'");
        if ($data->rowCount() > 0) {
            $str = "0123456789qwertzuioplkjhgfdsayxcvbnm";
            $str = str_shuffle($str);
            $str = substr($str, 0, 15);
            $password = md5($str);
            $connection->query("UPDATE users SET password = '$password', token = '' WHERE email='$email'");
            echo "Yeni şifren: $str";
        } else {
            echo "Lütfen link yapınızı kontrol ediniz!";
        }
    } else {
        header("Location: login.php");
        exit();
    }
?>

ve işlemimiz burda bitiyor. Mantığını anlarsanız her şey basit olacaktır. Verileri kendinize göre düzenleyebilirsiniz. Dediğim gibi mail sistemini bir sonraki makalemde bahsedeceğim sizde onu şifremi unuttum sistemine entegre edebilirsiniz. 

İyi günler.

5 Haziran 2018 Salı

PDO ile Password Şifreleme Yöntemleri

PDO ile Password Şifreleme Yöntemleri


Üyelerinizin bilgilerini gizlemek sitenizin güvenliğini bir adım daha üst seviyeye çıkartıcaktır. Bunun yoluda ilk olarak üyelerinizin bilgilerini gizlemekten gelir. Üyelerin bilgilerini şifrelemek siteye zarar verebilecek birisinin sizin üyelerinizin bilgilerini ele geçirememesi ve üyelerinize zarar verememesi için bu güvenlik her siteye şart. 



Bazı şifreleme yöntemleri aşağıdaki gibidir;

MD5 Şifreleme;
Şifrelenmemiş Hali = admin 
Şifrelenmiş Hali = 21232f297a57a5a743894a0e4a801fc3
Şifreleme Kodu = echo = md5("admin");

SHA1 Şifreleme;
Şifrelenmemiş Hali = admin
Şifrelenmiş Hali = d033e22ae348aeb5660fc2140aec35850c4da997
Şifreleme Kodu = echo = sha1("admin");

MD5 (SHA1) Şifreleme;
Şifrelenmemiş Hali = admin
Şifrelenmiş Hali = 0c7540eb7e65b553ec1ba6b20de79608
Şifreleme Kodu = echo = md5(sha1("admin"));

SHA1 (MD5) Şifreleme;
Şifrelenmemiş Hali = admin
Şifrelenmiş Hali = 90b9aa7e25f80cf4f64e990b78a9fc5ebd6cecad
Şifreleme Kodu = echo = sha1(md5("admin"));

Bunlar klasik yani birkaç scriptde MD5 kullanılır ancak benim göstereceğim bazı scriptlerde vardır ama şifrelenen şifrenin çözülmesi zor olucaktır. Zaman kaybetmeden şifreleme yöntemine geçelim.

Şifreleme yöntemimiz PHP 7. sürümünde denenmiştir ve çalışmaktadır.

$password = "admin";
$hash = password_hash($password, PASSWORD_BCRYPT);
echo $hash;

Ekran çıktısı;

$2y$10$56wnCkPbiLHPtigywQWRpOS4Ip3mTz.DpEi29I8ApWFIjGT6e0o9i

olucaktır. Şifreleme yöntemimiz basittir siz bunu üye kayıt sırasında üyenin şifresini veritabanına kayıt ettirirken bu şifreleme yöntemini kullanarak üyenin şifresini yukarıdaki gibi gizlemiş olursunuz ve bu gizlenmiş şifre çözülemez. 

İyi günler.
b2b yazılım vois media