query("SELECT * FROM charity_settings WHERE id = 1"); $charity = $stmt->fetch(); // Check if we are in reset mode (token in URL) $token = $_GET['token'] ?? ''; if ($token) { $stmt = db()->prepare("SELECT * FROM users WHERE reset_token = ? AND reset_token_expiry > NOW()"); $stmt->execute([$token]); $user = $stmt->fetch(); if ($user) { $step = 'reset'; } else { $error = 'رابط استعادة كلمة المرور غير صالح أو منتهي الصلاحية.'; $step = 'request'; } } // Handle POST requests if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['request_reset'])) { $email = trim($_POST['email'] ?? ''); if (filter_var($email, FILTER_VALIDATE_EMAIL)) { $stmt = db()->prepare("SELECT id, full_name FROM users WHERE email = ?"); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user) { $newToken = bin2hex(random_bytes(32)); $expiry = date('Y-m-d H:i:s', strtotime('+1 hour')); $update = db()->prepare("UPDATE users SET reset_token = ?, reset_token_expiry = ? WHERE id = ?"); $update->execute([$newToken, $expiry, $user['id']]); $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http'; $host = $_SERVER['HTTP_HOST']; $resetLink = "$protocol://$host/forgot_password.php?token=$newToken"; $subject = "استعادة كلمة المرور - " . ($charity['charity_name'] ?? 'الجمعية الخيرية'); $html = "
لقد طلبت استعادة كلمة المرور الخاصة بك. يرجى الضغط على الرابط أدناه لإعادة تعيينها:
هذا الرابط صالح لمدة ساعة واحدة فقط.
إذا لم تطلب هذا، يرجى تجاهل هذه الرسالة.
بريد = htmlspecialchars($charity['charity_name'] ?? 'الجمعية الخيرية') ?>