'error', 'message' => 'Unauthorized')); exit; } $user_id = $_SESSION['id']; header('Content-Type: application/json'); $current_password = isset($_POST['current_password']) ? $_POST['current_password'] : ''; if (empty($current_password)) { echo json_encode(array('status' => 'error', 'message' => 'Password required')); exit; } try { // ดึงรหัสผ่านจากฐานข้อมูล $stmt = $pdo->prepare("SELECT password FROM users WHERE id = ?"); $stmt->execute(array($user_id)); $stored_password = $stmt->fetchColumn(); if (!$stored_password) { echo json_encode(array('status' => 'error', 'message' => 'User not found')); exit; } // เปรียบเทียบรหัสผ่าน (ใช้ MD5 เหมือนระบบเดิม) $current_password_hash = md5($current_password); if ($current_password_hash === $stored_password) { echo json_encode(array('status' => 'success', 'message' => 'Password correct')); } else { echo json_encode(array('status' => 'error', 'message' => 'Password incorrect')); } } catch (PDOException $e) { echo json_encode(array('status' => 'error', 'message' => 'Database error')); } exit; } include 'header.php'; include '../inc/connect.php'; // ตรวจสอบการล็อกอิน if (!isset($_SESSION['id']) || empty($_SESSION['id'])) { header("Location: login.php"); exit; } $user_id = $_SESSION['id']; $success_message = ''; $error_message = ''; // จัดการการอัปเดตข้อมูล if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['action']) && $_POST['action'] == 'update_profile') { try { $prefixID = isset($_POST['prefixID']) ? $_POST['prefixID'] : ''; $firstName = isset($_POST['firstName']) ? $_POST['firstName'] : ''; $lastName = isset($_POST['lastName']) ? $_POST['lastName'] : ''; $position = isset($_POST['position']) ? $_POST['position'] : ''; $mobile = isset($_POST['mobile']) ? $_POST['mobile'] : ''; $amphur = isset($_POST['amphur']) ? $_POST['amphur'] : ''; $province = isset($_POST['province']) ? $_POST['province'] : ''; // อัปเดตข้อมูลในฐานข้อมูล $stmt = $pdo->prepare("UPDATE users SET prefixID = ?, firstName = ?, lastName = ?, position = ?, mobile = ?, amphur = ?, province = ? WHERE id = ?"); $stmt->execute(array( $prefixID, $firstName, $lastName, $position, $mobile, $amphur, $province, $user_id )); // อัปเดต session ด้วยข้อมูลใหม่ $_SESSION['firstName'] = $firstName; $_SESSION['lastName'] = $lastName; $success_message = 'อัปเดตข้อมูลโปรไฟล์เรียบร้อยแล้ว'; } catch (PDOException $e) { $error_message = 'เกิดข้อผิดพลาดในการอัปเดตข้อมูล: ' . $e->getMessage(); } } // จัดการการเปลี่ยนรหัสผ่าน if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['action']) && $_POST['action'] == 'change_password') { try { $current_password = isset($_POST['current_password']) ? $_POST['current_password'] : ''; $new_password = isset($_POST['new_password']) ? $_POST['new_password'] : ''; $confirm_password = isset($_POST['confirm_password']) ? $_POST['confirm_password'] : ''; // ตรวจสอบรหัสผ่านปัจจุบัน $stmt = $pdo->prepare("SELECT password FROM users WHERE id = ?"); $stmt->execute(array($user_id)); $current_hash = $stmt->fetchColumn(); if (md5($current_password) !== $current_hash) { $error_message = 'รหัสผ่านปัจจุบันไม่ถูกต้อง'; } elseif ($new_password !== $confirm_password) { $error_message = 'รหัสผ่านใหม่และยืนยันรหัสผ่านไม่ตรงกัน'; } elseif (strlen($new_password) < 6) { $error_message = 'รหัสผ่านใหม่ต้องมีความยาวอย่างน้อย 6 ตัวอักษร'; } else { // อัปเดตรหัสผ่านใหม่ $new_hash = md5($new_password); $stmt = $pdo->prepare("UPDATE users SET password = ? WHERE id = ?"); $stmt->execute(array($new_hash, $user_id)); $success_message = 'เปลี่ยนรหัสผ่านเรียบร้อยแล้ว'; } } catch (PDOException $e) { $error_message = 'เกิดข้อผิดพลาดในการเปลี่ยนรหัสผ่าน: ' . $e->getMessage(); } } // ดึงข้อมูลผู้ใช้ปัจจุบัน try { $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?"); $stmt->execute(array($user_id)); $user_data = $stmt->fetch(PDO::FETCH_ASSOC); if (!$user_data) { header("Location: logout.php"); exit; } } catch (PDOException $e) { $error_message = 'เกิดข้อผิดพลาดในการดึงข้อมูล: ' . $e->getMessage(); } // ฟังก์ชันแปลง user_type_id เป็นข้อความ function getUserTypeText($user_type_id) { switch($user_type_id) { case '1': return 'จังหวัด'; case '2': return 'สถานศึกษา'; case '3': return 'ขึ้นตรง'; case '4': return 'ตำบล'; case '9': return 'ผู้ดูแลระบบ'; default: return 'ไม่ระบุ'; } } // ฟังก์ชันแปลง geo เป็นข้อความ function getGeoText($geo) { switch($geo) { case '1': return 'เหนือ'; case '2': return 'อีสาน'; case '3': return 'ตะวันออก'; case '4': return 'กลาง'; case '5': return 'ใต้'; default: return 'ไม่ระบุ'; } } ?>
จัดการข้อมูลส่วนตัวของคุณ