$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Veritabanına bağlanırken hata oluştu: " . $conn->connect_error);
}
// Kullanıcı adını session'dan al
$username = $_SESSION["username"];
// Kullanıcıyı veritabanından al
$getUserQuery = "SELECT * FROM kullanici_tablosu WHERE kullanici_adi = ?";
$stmt = $conn->prepare($getUserQuery);
$stmt->bind_param("s", $username);
$stmt->execute();
$getUserResult = $stmt->get_result();
if ($getUserResult->num_rows > 0) {
$userData = $getUserResult->fetch_assoc();
} else {
// Kullanıcı bulunamadı, yönlendir
header("Location: login.php");
exit();
}
// Hata ve Başarı Mesajları
$successMessage = $errorMessage = '';
// Form gönderilmiş mi diye kontrol et
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Kullanıcı girişi
$currentPassword = $conn->real_escape_string($_POST["currentPassword"]);
$newPassword = $conn->real_escape_string($_POST["newPassword"]);
$confirmPassword = $conn->real_escape_string($_POST["confirmPassword"]);
// Veritabanından kullanıcının mevcut şifresini al
$hashedCurrentPassword = $userData["sifre"];
// Mevcut şifreyi kontrol et
if (password_verify($currentPassword, $hashedCurrentPassword)) {
// Yeni şifreyi kontrol et
if ($newPassword == $confirmPassword) {
// Kullanıcının şifresini güncelle
$hashedNewPassword = password_hash($newPassword, PASSWORD_DEFAULT);
$updatePasswordQuery = "UPDATE kullanici_tablosu SET sifre = ? WHERE kullanici_adi = ?";
$stmt = $conn->prepare($updatePasswordQuery);
$stmt->bind_param("ss", $hashedNewPassword, $username);
$stmt->execute();
// Başarı mesajı
$successMessage = "Şifreniz başarıyla değiştirildi!";
} else {
// Hata mesajı
$errorMessage = "Yeni şifreler uyuşmuyor.";
}
} else {
// Hata mesajı
$errorMessage = "Mevcut şifre yanlış.";
}
}
$conn->close();
?>Kodda hata ve başarı mesajları mevcut zaten bu şekilde de çalışıyor zaten.
fakat alttaki kod ile güncellediğim zaman şifreyi yenilediğimde sayfa hata veriyor.
$updatePasswordQuery = "UPDATE kullanici_tablosu SET sifre = ?, aktif_mi = ? WHERE kullanici_adi = ?";
$stmt->bind_param("ss", $hashedNewPassword, 3,$username);