- Katılım
- 24 Eki 2021
- Mesajlar
- 262
- Çözümler
- 2
- Tepkime puanı
- 16
- Puanları
- 48
Web panelde şifremi unuttum yapınca gerekli mail gönderildi yazısı geliyor ama mail gönderme işlemi başarısız oluyor konu hakkında bilgi sahibi varsa yardımcı olabilir mi?
çok aklıma yatmadı mail olarak atması daha mantıklı olacaktır benim açımdan değerli yorum ve düşünceniz için teşekkür ederimWeb işinden pek anlamam ama şöyle yapabilirsiniz hocam, şifremi unuttum diyip gizli soruyu doğru yazanlara random bir sifre verip mesaj kutucugunda gosterirsiniz. Sonra kişi isterse bu şifre ile giriş yapip değiştirebilir.
Arkadaşın da dediği gibi SMTP ayarlarına bakmanızda yarar var ücretsiz olarak gmail SMTP ayarlarına bakabilirsiniz. Eğer ücretli bir mail sunucu kullanmak isterseniz GoDaddy kurumsal mail sunucularına bakabilirsiniz aylık çok cüzi bir miktarda benim de kullandığım kurumsal mail işinizi görebilir.Yanlış anlamadıysam web üzerinden mail yönlendirme yapacaksınız bunun için SMTP dediğimiz bir ayar olması gerekli mail gönderme başarısız ise muhtemelen bu ayardan kaynaklıdır
<?php
// Veritabanı bağlantısı
$servername = "localhost";
$username = "username";
$password = "password";
$database = "dbname";
$conn = new mysqli($servername, $username, $password, $database);
// Hata kontrolü
if ($conn->connect_error) {
die("Veritabanına bağlanılamadı: " . $conn->connect_error);
}
// Kullanıcı doğrulama
$email = $_POST['email'];
$sql = "SELECT * FROM users WHERE email='$email'";
$result = $conn->query($sql);
if ($result->num_rows == 1) {
// Kullanıcı mevcut, şifre sıfırlama kodu oluşturma
$reset_token = bin2hex(random_bytes(32)); // Rastgele bir dize oluşturuluyor
// Veritabanında sıfırlama kodunu güncelleme
$update_sql = "UPDATE users SET reset_token='$reset_token' WHERE email='$email'";
if ($conn->query($update_sql) === TRUE) {
// E-posta gönderme
$to = $email;
$subject = "Şifre Sıfırlama";
$message = "Şifrenizi sıfırlamak için aşağıdaki bağlantıya tıklayın: \n\n";
$message .= "http://XXX.com/reset_password.php?token=$reset_token";
$headers = "From: webmaster@example.com" . "\r\n" .
"Reply-To: webmaster@example.com" . "\r\n" .
"X-Mailer: PHP/" . phpversion();
mail($to, $subject, $message, $headers);
echo "Şifre sıfırlama bağlantısı e-posta ile gönderildi.";
} else {
echo "Error updating record: " . $conn->error;
}
} else {
echo "Kullanıcı bulunamadı.";
}
$conn->close();
?>
<?php
// Veritabanı bağlantısı
$servername = "localhost";
$username = "username";
$password = "password";
$database = "dbname";
$conn = new mysqli($servername, $username, $password, $database);
// Hata kontrolü
if ($conn->connect_error) {
die("Veritabanına bağlanılamadı: " . $conn->connect_error);
}
// Şifre sıfırlama kodunu al
$reset_token = $_GET['token'];
// Form gönderildiğinde
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$new_password = $_POST['new_password'];
$confirm_password = $_POST['confirm_password'];
// Şifrelerin eşleşip eşleşmediğini kontrol et
if ($new_password === $confirm_password) {
// Şifreyi güncelleme
$hashed_password = password_hash($new_password, PASSWORD_DEFAULT);
$update_sql = "UPDATE users SET password='$hashed_password', reset_token=NULL WHERE reset_token='$reset_token'";
if ($conn->query($update_sql) === TRUE) {
echo "Şifre başarıyla güncellendi.";
} else {
echo "Error updating record: " . $conn->error;
}
} else {
echo "Şifreler eşleşmiyor.";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Şifre Sıfırlama</title>
</head>
<body>
<h2>Yeni Şifrenizi Girin</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) . '?token=' . $reset_token; ?>">
<div>
<label for="new_password">Yeni Şifre:</label>
<input type="password" id="new_password" name="new_password" required>
</div>
<div>
<label for="confirm_password">Şifre Onayı:</label>
<input type="password" id="confirm_password" name="confirm_password" required>
</div>
<button type="submit">Şifreyi Değiştir</button>
</form>
</body>
</html>
<?php
$conn->close();
?>
konu tam olarak bu yorumları yeni gördüm dün baktım smtp mail adresleri olaylarına yakın zamanda sonuca ulaşacağımArkadaşın da dediği gibi SMTP ayarlarına bakmanızda yarar var ücretsiz olarak gmail SMTP ayarlarına bakabilirsiniz. Eğer ücretli bir mail sunucu kullanmak isterseniz GoDaddy kurumsal mail sunucularına bakabilirsiniz aylık çok cüzi bir miktarda benim de kullandığım kurumsal mail işinizi görebilir.Ziyaretçiler için gizlenmiş link,görmek için Giriş yap veya üye ol.
sonuca ulaşırsam bilgi vereceğim sorunuz hakkındaPek anlamadığım için soruyorum, mail atacak ta neyi mail olarak aticak bu paneller, panel sisteminde şifre sıfırlama bağlantısı olusturabilecek bir sistem var mı ki?
Benzer konular | Forum | Tarih | |||
---|---|---|---|---|---|
YARDIM PANEL ŞİFREMİ UNUTTUM KISMI HK | Genel Yardımlaşma ve Yardım | 6 | 496 |