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.
Admin resetPassword ekranında boş sayfa cıkıyor yardım edermisin
YanıtlaSil