prepare("SELECT * FROM users WHERE id = ?"); $stmt->execute([$user_id]); $user_data = $stmt->fetch(); if (!$user_data) { $error = 'उपयोगकर्ता डेटा नहीं मिला।'; } // Handle form submissions if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { if (!verifyCSRF($_POST['csrf_token'] ?? '')) { $error = 'अमान्य CSRF टोकन।'; } else { switch ($_POST['action']) { case 'update_profile': try { $name = sanitizeInput($_POST['name'] ?? ''); $email = sanitizeInput($_POST['email'] ?? ''); $mobile = sanitizeInput($_POST['mobile'] ?? ''); // Validate mobile number if (!preg_match('/^[0-9]{10}$/', $mobile)) { throw new Exception('मोबाइल नंबर 10 अंकों का होना चाहिए।'); } // Check if email already exists for other users $stmt = $db->prepare("SELECT id FROM users WHERE email = ? AND id != ?"); $stmt->execute([$email, $user_id]); if ($stmt->fetch()) { throw new Exception('यह ईमेल पहले से ही उपयोग में है।'); } // Update user data $stmt = $db->prepare("UPDATE users SET name = ?, email = ?, mobile = ? WHERE id = ?"); $stmt->execute([$name, $email, $mobile, $user_id]); // Update session data $_SESSION['user_name'] = $name; $_SESSION['user_email'] = $email; $message = 'प्रोफाइल सफलतापूर्वक अपडेट की गई!'; // Refresh user data $stmt = $db->prepare("SELECT * FROM users WHERE id = ?"); $stmt->execute([$user_id]); $user_data = $stmt->fetch(); } catch (Exception $e) { $error = 'प्रोफाइल अपडेट करने में त्रुटि: ' . $e->getMessage(); } break; case 'change_password': try { $current_password = $_POST['current_password'] ?? ''; $new_password = $_POST['new_password'] ?? ''; $confirm_password = $_POST['confirm_password'] ?? ''; // Verify current password if (!password_verify($current_password, $user_data['password'] ?? '')) { throw new Exception('वर्तमान पासवर्ड गलत है।'); } // Check if new passwords match if ($new_password !== $confirm_password) { throw new Exception('नया पासवर्ड और पुष्टि पासवर्ड मेल नहीं खाते।'); } // Validate password strength if (strlen($new_password) < 6) { throw new Exception('पासवर्ड कम से कम 6 अक्षर का होना चाहिए।'); } // Update password $hashed_password = password_hash($new_password, PASSWORD_DEFAULT); $stmt = $db->prepare("UPDATE users SET password = ? WHERE id = ?"); $stmt->execute([$hashed_password, $user_id]); $message = 'पासवर्ड सफलतापूर्वक बदला गया!'; } catch (Exception $e) { $error = 'पासवर्ड बदलने में त्रुटि: ' . $e->getMessage(); } break; } } } // Generate CSRF token $csrf_token = generateCSRF(); include 'includes/header.php'; ?>