Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ODS (Order Document System)

ระบบจัดการคำสั่งและเอกสารราชการ (Order Document System) พัฒนาด้วย PHP และ MySQL สำหรับใช้งานภายในองค์กร เพื่อจัดเก็บ ค้นหา และออกรายงานคำสั่งต่างๆ

✨ คุณสมบัติหลัก (Features)

  • จัดการคำสั่ง: เพิ่ม, แก้ไข, ลบ คำสั่งและแนบไฟล์ PDF
  • ระบบค้นหา: ค้นหาคำสั่งตามปี, เลขที่, หรือชื่อเรื่อง ได้อย่างรวดเร็ว
  • แสดงผลแบบกลุ่ม: จัดกลุ่มคำสั่งตามปี พ.ศ. อัตโนมัติ
  • รายงานประจำปี: สร้างรายงานสรุปคำสั่งประจำปีเป็น PDF พร้อมสารบัญและเนื้อหาครบถ้วน
  • Responsive Design: รองรับการใช้งานทั้งบน Desktop และ Mobile (มี Burger Menu)
  • Glassmorphism UI: ดีไซน์ทันสมัย สวยงาม สบายตา

🛠️ เทคโนโลยีที่ใช้ (Tech Stack)

  • Frontend: HTML5, CSS3 (Glassmorphism), JavaScript (Vanilla)
  • Backend: PHP 7.4+
  • Database: MySQL / MariaDB
  • Libraries:
    • jspdf & jspdf-autotable: สำหรับสร้างตารางใน PDF
    • pdf-lib: สำหรับจัดการและรวมไฟล์ PDF
    • fontkit: สำหรับจัดการฟอนต์ไทยใน PDF
    • downloadjs: สำหรับดาวน์โหลดไฟล์

⚙️ การติดตั้ง (Installation)

  1. Clone Project:

    git clone https://github.com/phumiphut-ta/ODS.git

    หรือดาวน์โหลดไฟล์ไปวางที่ C:\xampp\htdocs\ODS

  2. ตั้งค่าฐานข้อมูล:

    • เปิด phpMyAdmin: http://localhost/phpmyadmin
    • สร้างฐานข้อมูลชื่อ ods_db (utf8mb4_general_ci)
    • Import ไฟล์ schema.sql (v4.0 - ฉบับสมบูรณ์)

    หมายเหตุ: schema.sql รวมทุกอย่างไว้แล้ว ไม่ต้องรันไฟล์ migration อื่น
    สำหรับ Upgrade จากเวอร์ชันเก่า: ดูไฟล์ใน migrations/ directory

  3. ตั้งค่าการเชื่อมต่อ:

    • เปลี่ยนชื่อไฟล์ config.sample.php เป็น config.php
    • เปิดไฟล์ config.php และแก้ไขค่า $servername, $username, $password, $dbname ให้ตรงกับเครื่องของคุณ
  4. ติดตั้งฟอนต์ (สำคัญ):

    • ดาวน์โหลดฟอนต์ THSarabunNew.ttf และ THSarabunNew Bold.ttf
    • นำไปวางไว้ในโฟลเดอร์ fonts/
  5. เข้าใช้งาน:

    • เปิด Browser ไปที่ http://localhost/ODS
    • Admin Login: (ค่าเริ่มต้น)
      • Username: admin
      • Password: password123 (ควรเปลี่ยนหลังติดตั้ง)

📂 โครงสร้างไฟล์ (File Structure)

  • index.php: หน้าแรกสำหรับผู้ใช้ทั่วไป (ค้นหาและดูคำสั่ง)
  • admin.php: หน้าจัดการสำหรับแอดมิน
  • report.php: หน้าสร้างรายงานประจำปี
  • order_form.php: ฟอร์มเพิ่ม/แก้ไขคำสั่ง
  • config.php: ไฟล์เชื่อมต่อฐานข้อมูล + CSRF helpers
  • css/style.css: ไฟล์สไตล์หลักของระบบ
  • uploads/: โฟลเดอร์เก็บไฟล์ PDF ที่อัปโหลด

ฐานข้อมูล (Database)

  • schema.sql - Schema ฉบับสมบูรณ์ v4.0 (สำหรับติดตั้งใหม่)
  • migrations/ - ประวัติการเปลี่ยนแปลง schema (v2-v4)
    • migration_v2.sql - เพิ่ม status & run_no
    • migration_v3.sql - เพิ่ม order_year
    • migration_v4.sql - อัปเดตเป็น bcrypt password

🔒 ความปลอดภัย (Security)

การป้องกันที่มีในระบบ

  • CSRF Protection: ป้องกันการโจมตีแบบ Cross-Site Request Forgery ในทุกฟอร์ม
  • Password Hashing: ใช้ password_hash() (bcrypt) แทน MD5
  • File Upload Validation: ตรวจสอบ MIME type ไม่ใช่แค่นามสกุลไฟล์

⚠️ การใช้งานครั้งแรก

หากเข้าสู่ระบบด้วย admin / password123 ไม่ได้ ให้รันคำสั่ง SQL นี้ใน phpMyAdmin:

UPDATE users 
SET password = '$2y$10$D8.eTqZ8g7KAXP3tbrvxK.z5BbU0UmkqP4oFGOQsaXqlOSOegXHFy' 
WHERE username = 'admin';

🔐 คำแนะนำสำหรับ Production

  1. เปลี่ยนรหัสผ่าน admin ทันทีหลังติดตั้ง
  2. อย่า commit ไฟล์ config.php ลง Git (มีใน .gitignore แล้ว)
  3. ตั้งค่า permission โฟลเดอร์ uploads/ ให้เหมาะสม (755)

🐛 ปัญหาที่พบบ่อย (Troubleshooting)

ปัญหา: ไม่สามารถ Login เข้าระบบได้

สาเหตุ: รหัสผ่านยังเป็น MD5 แบบเก่า
แก้ไข: รันคำสั่ง SQL ด้านบน (ในส่วน Security) เพื่อรีเซ็ตรหัสผ่าน

ปัญหา: รายงาน PDF แสดงภาษาไทยเป็นสี่เหลี่ยม

สาเหตุ: ไม่มีฟอนต์ TH Sarabun New
แก้ไข: ดาวน์โหลดและวางฟอนต์ในโฟลเดอร์ fonts/

ปัญหา: ไม่สามารถอัปโหลดไฟล์ PDF ได้

สาเหตุ: ไฟล์ไม่ใช่ PDF จริง หรือ permission โฟลเดอร์ uploads/ ไม่ถูกต้อง
แก้ไข: ตรวจสอบว่าเป็นไฟล์ PDF จริง และตั้งค่า permission โฟลเดอร์เป็น 755

ปัญหา: Burger Menu ไม่ทำงานบน Mobile

สาเหตุ: JavaScript ไม่โหลด หรือมี Console Error
แก้ไข: เปิด Developer Console ตรวจสอบ error และรีเฟรชหน้า

ปัญหา: Error "Class 'finfo' not found"

สาเหตุ: PHP extension fileinfo ไม่ได้เปิดใช้งาน
แก้ไข:

  • เปิดไฟล์ php.ini
  • ค้นหา ;extension=fileinfo และเอา ; ออก
  • Restart Web Server (Apache/IIS)

หมายเหตุ: ระบบมี fallback validation อยู่แล้ว จะทำงานได้แม้ไม่เปิด extension แต่แนะนำให้เปิดเพื่อความปลอดภัยสูงสุด


👨‍💻 สำหรับนักพัฒนา (For Developers)

สำหรับนักพัฒนาที่ต้องการทำงานต่อหรือแก้ไขระบบ กรุณาอ่านเอกสารฉบับเต็มที่:

  • walkthrough.md - เอกสารสำหรับนักพัฒนา (Development Guide, Architecture, Session History)

Git Workflow:

git add .
git commit -m "คำอธิบายการแก้ไข"
git push origin main

📝 หมายเหตุ

  • ระบบนี้พัฒนาขึ้นเพื่อใช้งานภายในองค์กรรัฐ
  • รองรับปีพุทธศักราช (พ.ศ.) สำหรับการใช้งานในประเทศไทย
  • ระบบรันบน PHP มาตรฐาน ไม่ใช้ Framework เพื่อความเรียบง่าย

About

เว็บแอปพลิเคชันสำหรับจัดเก็บ ค้นหา และออกรายงานคำสั่งราชการ พัฒนาด้วย PHP, MySQL และ Glassmorphism UI รองรับการใช้งานบนมือถือ พร้อมฟีเจอร์สร้างรายงานประจำปีเป็น PDF อัตโนมัติ

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages