File manager - Edit - /home/webapp69.cm.in.th/u69319090024/Shop24/db.php
Back
<?php // ============================================================ // Database Connection File (db.php) // Using PDO with MariaDB / MySQL // ============================================================ if (session_status() === PHP_SESSION_NONE) { session_start(); } $host = 'localhost'; $db = 'shop_db'; $user = 'root'; $pass = ''; // รหัสผ่านฐานข้อมูล XAMPP ค่าเริ่มต้นคือค่าว่าง $charset = 'utf8mb4'; $dsn = "mysql:host={$host};dbname={$db};charset={$charset}"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); } catch (\PDOException $e) { // หากข้อผิดพลาดคือไม่พบฐานข้อมูล shop_db (Error code 1049) ให้พยายามสร้างอัตโนมัติ if ($e->getCode() == 1049 || strpos($e->getMessage(), 'Unknown database') !== false) { try { $pdo_init = new PDO("mysql:host={$host};charset={$charset}", $user, $pass, $options); $schema_file = __DIR__ . '/schema.sql'; if (file_exists($schema_file)) { $sql = file_get_contents($schema_file); $pdo_init->exec($sql); } else { $pdo_init->exec("CREATE DATABASE IF NOT EXISTS `{$db}` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"); } $pdo = new PDO($dsn, $user, $pass, $options); } catch (\PDOException $ex) { die("เกิดข้อผิดพลาดในการสร้างฐานข้อมูลอัตโนมัติ: " . htmlspecialchars($ex->getMessage())); } } else { die("เกิดข้อผิดพลาดในการเชื่อมต่อฐานข้อมูล: " . htmlspecialchars($e->getMessage())); } } // ------------------------------------------------------------ // ระบบจดจำการเข้าสู่ระบบอัตโนมัติ (Remember Me Auto Login) // ------------------------------------------------------------ if (!isset($_SESSION['user_id']) && isset($_COOKIE['remember_token'])) { $token_data = explode(':', $_COOKIE['remember_token']); if (count($token_data) === 2) { list($c_user_id, $c_hash) = $token_data; $c_user_id = (int)$c_user_id; $stmt_rem = $pdo->prepare("SELECT * FROM users WHERE id = ? LIMIT 1"); $stmt_rem->execute([$c_user_id]); $rem_user = $stmt_rem->fetch(); if ($rem_user && hash_equals($c_hash, md5($rem_user['password'] . 'techshop_secure_salt'))) { session_regenerate_id(true); $_SESSION['user_id'] = $rem_user['id']; $_SESSION['username'] = $rem_user['username']; $_SESSION['fullname'] = $rem_user['fullname']; $_SESSION['email'] = $rem_user['email']; $_SESSION['role'] = $rem_user['role'] ?? 'user'; } } } // ซิงค์สิทธิ์ผู้ใช้งาน (Role) จากฐานข้อมูลให้อัปเดตล่าสุดตลอดเวลา if (isset($_SESSION['user_id'])) { $stmt_sync = $pdo->prepare("SELECT role, fullname, email FROM users WHERE id = ?"); $stmt_sync->execute([$_SESSION['user_id']]); $user_sync = $stmt_sync->fetch(); if ($user_sync) { $_SESSION['role'] = $user_sync['role']; $_SESSION['fullname'] = $user_sync['fullname']; $_SESSION['email'] = $user_sync['email']; } } // ------------------------------------------------------------ // Helper Functions (ฟังก์ชันช่วยเหลือกลาง) // ------------------------------------------------------------ /** * ตรวจสอบว่าผู้ใช้งานล็อกอินหรือยัง */ function is_logged_in() { return isset($_SESSION['user_id']); } /** * ตรวจสอบว่าผู้ใช้งานปัจจุบันเป็นแอดมิน/ผู้ขายหรือไม่ */ function is_admin() { return is_logged_in() && isset($_SESSION['role']) && $_SESSION['role'] === 'admin'; } /** * ดึงข้อมูลผู้ใช้งานปัจจุบันที่ล็อกอิน */ function current_user() { return [ 'id' => $_SESSION['user_id'] ?? null, 'username' => $_SESSION['username'] ?? null, 'fullname' => $_SESSION['fullname'] ?? null, 'email' => $_SESSION['email'] ?? null, 'role' => $_SESSION['role'] ?? 'user', ]; } /** * คำนวณจำนวนสินค้าทั้งหมดในตะกร้า */ function get_cart_count() { if (!isset($_SESSION['cart']) || empty($_SESSION['cart'])) { return 0; } $total = 0; foreach ($_SESSION['cart'] as $item) { if (is_array($item)) { $total += $item['quantity']; } else { $total += (int)$item; } } return $total; } /** * แปลงตัวเลขเป็นรูปแบบเงินบาท (฿ X,XXX.XX) */ function format_price($amount) { return '฿' . number_format($amount, 2); } /** * ฟังก์ชันช่วยแปลงชื่อสถานะคำสั่งซื้อเป็นภาษาไทยและ Badge สวยงาม */ function render_order_status_badge($status) { switch ($status) { case 'pending': return '<span class="badge bg-warning text-dark"><i class="fa-solid fa-clock me-1"></i>รอจัดส่ง</span>'; case 'shipping': return '<span class="badge bg-primary"><i class="fa-solid fa-truck-fast me-1"></i>กำลังจัดส่ง</span>'; case 'delivered': return '<span class="badge bg-success"><i class="fa-solid fa-circle-check me-1"></i>จัดส่งสำเร็จ</span>'; case 'cancelled': return '<span class="badge bg-danger"><i class="fa-solid fa-ban me-1"></i>ยกเลิกแล้ว</span>'; default: return '<span class="badge bg-secondary">' . htmlspecialchars($status) . '</span>'; } } /** * คืนค่า URL รูปภาพสินค้า ค้นหาจากโฟลเดอร์ assets/images/ และโฟลเดอร์ รูป/ */ function get_product_image_url($image_name) { if (empty($image_name)) { return 'assets/images/default.jpg'; } // ตรวจสอบในโฟลเดอร์ assets/images/ if (file_exists(__DIR__ . '/assets/images/' . $image_name)) { return 'assets/images/' . rawurlencode($image_name); } // ตรวจสอบในโฟลเดอร์ รูป/ if (file_exists(__DIR__ . '/รูป/' . $image_name)) { return 'รูป/' . rawurlencode($image_name); } return 'assets/images/default.jpg'; }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.34 |
proxy
|
phpinfo
|
Settings