Lao Air ເອກະສານລະບົບ

ຄຳນຳ (Introduction)

Lao Air ແມ່ນຫຍັງ?

Lao Air ແມ່ນລະບົບການຈອງຕັ໋ວເຮືອບິນແບບຄົບວົງຈອນ ທີ່ພັດທະນາດ້ວຍ PHP ແລະ SQLite. ລະບົບນີ້ອອກແບບມາເພື່ອໃຫ້ງ່າຍຕໍ່ການຈອງຕັ໋ວເຮືອບິນພາຍໃນປະເທດລາວ ແລະ ສາກົນ, ການຄຸ້ມຄອງການຈອງ, ແລະ ການຊໍາລະເງິນ.

Lao Air ສ້າງຂຶ້ນເພື່ອຕອບສະຫນອງຄວາມຕ້ອງການໃນການຈອງຕັ໋ວເຮືອບິນທີ່ທັນສະໄຫມສໍາລັບຜູ້ໃຊ້ບໍລິການທັ່ວໄປ, ອົງກອນຂອງລັດ, ແລະ ບໍລິສັດທ່ອງທ່ຽວ. ລະບົບມີໂມດູນການຈອງຫຼາຍຮູບແບບລວມທັງການເດີນທາງໄປ-ກັບ, ເດີນທາງທາງດຽວ, ແລະ ການເດີນທາງຫຼາຍເສັ້ນທາງ (multi-city).

Lao Air ເຫມາະສົມທີ່ສຸດສໍາລັບຫຍັງ?

Lao Air ເຫມາະສົມທີ່ສຸດສໍາລັບ:

  • ຜູ້ໃຊ້ບໍລິການລາຍບຸກຄົນທີ່ຕ້ອງການຈອງຕັ໋ວເຮືອບິນແບບງ່າຍດາຍ
  • ຫ້ອງການຂອງລັດທີ່ຕ້ອງການລະບົບການຈອງຕັ໋ວເຮືອບິນທີ່ມີລະບົບບັນຊີສິນເຊື່ອ
  • ບໍລິສັດທ່ອງທ່ຽວທີ່ຕ້ອງການລະບົບຈອງຕັ໋ວທີ່ມີລະບົບຄ່ານາຍຫນ້າ
  • ການເດີນທາງທາງທຸລະກິດສໍາລັບອົງກອນທີ່ຕ້ອງຄຸ້ມຄອງການເດີນທາງສໍາລັບພະນັກງານຫຼາຍຄົນ

ລະບົບນີ້ສະຫນັບສະຫນູນການຈອງຕັ໋ວເຮືອບິນພາຍໃນປະເທດ ແລະ ສາກົນ, ພ້ອມທັງມີລະບົບການຊໍາລະເງິນຫຼາຍຮູບແບບ ແລະ ການຄຸ້ມຄອງເອກະສານການຈອງ.

Lao Air ທຽບກັບລະບົບອື່ນໆແນວໃດ?

ຖ້າທ່ານເຄີຍໃຊ້ລະບົບຈອງຕັ໋ວເຮືອບິນອື່ນ, ທ່ານຈະພໍໃຈກັບລັກສະນະຂອງ Lao Air:

  • ໃຊ້ພາສາລາວເປັນພາສາຫລັກ ເຮັດໃຫ້ງ່າຍຕໍ່ການໃຊ້ງານສໍາລັບຄົນລາວ
  • ໂຄງສ້າງງ່າຍດາຍ ແລະ ສັບຊ້ອນຫນ້ອຍກວ່າລະບົບຂະຫນາດໃຫຍ່
  • ສາມາດໃຊ້ໄດ້ໂດຍບໍ່ຕ້ອງການການເຊື່ອມຕໍ່ກັບລະບົບ GDS (Global Distribution System) ແພງຮາຄາແພງ
  • ຮອງຮັບການຄຸ້ມຄອງບັນຊີສິນເຊື່ອສໍາລັບລູກຄ້າອົງກອນ
  • ຮອງຮັບການຄຸ້ມຄອງນາຍຫນ້າສໍາລັບບໍລິສັດທ່ອງທ່ຽວ

ການພັດທະນາມາດຕະຖານ (Development Standards)

ພາສາທີ່ໃຊ້

Lao Air ພັດທະນາດ້ວຍພາສາຕໍ່ໄປນີ້:

  • PHP: ພາສາຫຼັກທີ່ໃຊ້ໃນການພັດທະນາຝັ່ງເຊີເວີ (backend)
  • JavaScript: ໃຊ້ສໍາລັບການເຮັດວຽກຢູ່ຝັ່ງລູກຂ່າຍ (client-side)
  • HTML/CSS: ໃຊ້ສໍາລັບການສ້າງແລະຈັດຮູບແບບອິນເຕີເຟສຜູ້ໃຊ້
  • SQL: ໃຊ້ສໍາລັບການຈັດການຖານຂໍ້ມູນ SQLite

ຮູບແບບການຂຽນໂຄດ (Coding Style)

ລະບົບນີ້ໃຊ້ຮູບແບບການຂຽນໂຄດຕາມມາດຕະຖານດັ່ງນີ້:

  • ໃຊ້ຮູບແບບການຂຽນ camelCase ສໍາລັບຊື່ຕົວປ່ຽນແລະຟັງຊັ່ນ
  • ໃຊ້ຮູບແບບການຂຽນ PascalCase ສໍາລັບຊື່ຄລາສ
  • ໃຊ້ການເຍື້ອງເຂົ້າ (indentation) 4 ຊ່ອງຫວ່າງສໍາລັບທຸກໄຟລ໌ PHP
  • ຂຽນຄໍາອະທິບາຍ (comments) ສໍາລັບຟັງຊັ່ນແລະໂຄດທີ່ສັບຊ້ອນ

ໂຄງສ້າງການພັດທະນາ (Development Architecture)

Lao Air ໃຊ້ໂຄງສ້າງການພັດທະນາແບບງ່າຍໆ. ລະບົບບໍ່ໄດ້ນໍາໃຊ້ framework PHP ທີ່ສັບຊ້ອນ ແຕ່ໃຊ້ໂຄງສ້າງທຽບກັບຮູບແບບ MVC (Model-View-Controller) ແບບງ່າຍດາຍ:

  • Model: ການເຂົ້າເຖິງຖານຂໍ້ມູນແລະການຈັດການຂໍ້ມູນ
  • View: ໄຟລ໌ PHP ທີ່ມີໂຄດ HTML ສໍາລັບສະແດງຜົນຕໍ່ຜູ້ໃຊ້
  • Controller: ຕັດສິນໃຈວ່າຈະສະແດງຂໍ້ມູນໃດໃຫ້ຜູ້ໃຊ້ຕາມການຮ້ອງຂໍ (request)

ໂຄງສ້າງໄດເຣກທໍຣີ (Directory Structure)

ໂຄງສ້າງໄດເຣກທໍຣີຫຼັກຂອງລະບົບມີດັ່ງນີ້:

/
├── admin/              # ສ່ວນບໍລິຫານຈັດການລະບົບ
├── agent/              # ສ່ວນບໍລິຫານສໍາລັບບໍລິສັດທ່ອງທ່ຽວ
├── assets/             # ຊັບພະຍາກອນຕ່າງໆ (CSS, JavaScript, images)
├── components/         # ສ່ວນປະກອບທີ່ໃຊ້ຮ່ວມກັນ
├── config/             # ໄຟລ໌ການຕັ້ງຄ່າລະບົບ
├── core/               # ຟັງຊັ່ນຫຼັກຂອງລະບົບ
├── db/                 # ຖານຂໍ້ມູນ SQLite ແລະໄຟລ໌ທີ່ກ່ຽວຂ້ອງ
├── docs/               # ເອກະສານ
├── includes/           # ໄຟລ໌ທີ່ໃຊ້ຮ່ວມກັນເປັນປະຈໍາ
│   ├── components/     # ສ່ວນປະກອບ UI ທີ່ໃຊ້ຮ່ວມກັນ
│   ├── db/             # ການເຊື່ອມຕໍ່ແລະການຈັດການຖານຂໍ້ມູນ
│   └── functions/      # ຟັງຊັ່ນທີ່ໃຊ້ຮ່ວມກັນ
├── js/                 # ສຄຣິບ JavaScript
├── logs/               # ບັນທຶກລະບົບ
├── mobile/             # ສ່ວນສໍາລັບອຸປະກອນມືຖື
├── modules/            # ໂມດູນຕ່າງໆຂອງລະບົບ
├── pages/              # ຫນ້າຕ່າງໆຂອງເວັບໄຊທ໌
│   ├── components/     # ສ່ວນປະກອບສະເພາະຂອງຫນ້າ
├── public/             # ໄຟລ໌ສາທາລະນະທີ່ສາມາດເຂົ້າເຖິງໄດ້ໂດຍກົງ
├── tmp/                # ໄຟລ໌ຊົ່ວຄາວ
├── uploads/            # ໄຟລ໌ທີ່ຜູ້ໃຊ້ອັບໂຫຼດ
├── vendor/             # ໄລບຣາຣີພາຍນອກ
└── views/              # ໄຟລ໌ທີ່ໃຊ້ສໍາລັບການສະແດງຜົນ

ໂຄງສ້າງໄດເຣກທໍຣີມືຖື (Mobile Directory Structure)

ໂຄງສ້າງໄດເຣກທໍຣີສ່ວນມືຖືມີດັ່ງນີ້:

/mobile/
├── assets/           # ຊັບພະຍາກອນສໍາລັບມືຖື (CSS, JavaScript, images)
├── components/       # ສ່ວນປະກອບ UI ສໍາລັບມືຖື
├── css/              # ໄຟລ໌ CSS ສະເພາະມືຖື
├── includes/         # ໄຟລ໌ທີ່ໃຊ້ຮ່ວມກັນສໍາລັບມືຖື
├── js/               # ສຄຣິບ JavaScript ສໍາລັບມືຖື
└── pages/            # ຫນ້າຕ່າງໆສໍາລັບມືຖື

ການກຳນົດຄ່າ (Configuration)

ລະບົບນີ້ມີວິທີການຕັ້ງຄ່າຫຼັກດັ່ງນີ້:

1. ການຕັ້ງຄ່າຖານຂໍ້ມູນ

ການຕັ້ງຄ່າຖານຂໍ້ມູນຢູ່ໃນໄຟລ໌ includes/db/database.php. ລະບົບໃຊ້ SQLite ເປັນຖານຂໍ້ມູນພື້ນຖານ, ເຊິ່ງຈັດເກັບຢູ່ໃນ db/flight_booking.sqlite.

2. ການຕັ້ງຄ່າເຊສຊັນ (Session)

ການຕັ້ງຄ່າເຊສຊັນຢູ່ໃນໄຟລ໌ includes/session_config.php. ເຊສຊັນຖືກຕັ້ງໃຫ້ໝົດອາຍຸພາຍໃນ 7 ວັນ ແລະ ຈັດເກັບໃນໄດເຣກທໍຣີ tmp/sessions.

3. URL ແລະ ເສັ້ນທາງ (Path)

ຟັງຊັ່ນຊ່ວຍເຫຼືອສໍາລັບ URL ແລະ ເສັ້ນທາງຢູ່ໃນໄຟລ໌ includes/functions.php. ຟັງຊັ່ນ url($path) ໃຊ້ສໍາລັບສ້າງ URL ເຕັມ.

4. ການຕັ້ງຄ່າການອັບໂຫຼດໄຟລ໌

ການອັບໂຫຼດໄຟລ໌ຖືກຕັ້ງຄ່າໃຫ້ບັນທຶກໄຟລ໌ໄປຍັງໄດເຣກທໍຣີ uploads/ ແລະ ຂະຫນາດສູງສຸດທີ່ອະນຸຍາດແມ່ນ 5MB. ລະບົບຮອງຮັບໄຟລ໌ PDF, JPEG, PNG, ແລະ GIF.

ຂັ້ນຕອນການຮ້ອງຂໍ (Request Flow)

ຂັ້ນຕອນການຮ້ອງຂໍໃນລະບົບ Lao Air ມີດັ່ງນີ້:

  1. ຜູ້ໃຊ້ຮ້ອງຂໍ URL (ຕົວຢ່າງ: https://demo.laogair.com/pages/book_ticket.php)
  2. ເຊີເວີປະມວນຜົນການຮ້ອງຂໍ ແລະ ໂຫຼດໄຟລ໌ PHP ທີ່ຖືກຮ້ອງຂໍ
  3. ໄຟລ໌ PHP ຈະໂຫຼດການຕັ້ງຄ່າເຊສຊັນຈາກ includes/session_config.php
  4. ໄຟລ໌ຈະໂຫຼດສ່ວນຫົວຂອງຫນ້າ (includes/header.php)
  5. ເປັນໄປຕາມຕັວຊີ້ວັດ ຫຼື ການກະທໍາ, ຂໍ້ມູນຈະຖືກເອົາມາຈາກຖານຂໍ້ມູນ
  6. ຂໍ້ມູນຈະຖືກປະມວນຜົນ ແລະ ສະແດງຜົນຕາມຮູບແບບທີ່ຕ້ອງການ
  7. ໄຟລ໌ຈະໂຫຼດສ່ວນທ້າຍຂອງຫນ້າ (includes/footer.php)
  8. ຜົນຜະລິດສຸດທ້າຍຈະຖືກສົ່ງກັບໄປຫາຜູ້ໃຊ້

ລະບົບນີ້ໃຊ້ການຮ້ອງຂໍແບບງ່າຍໂດຍບໍ່ມີຕົວຈັດການເສັ້ນທາງທີ່ຊັບຊ້ອນ (router). ການເຂົ້າເຖິງຫນ້າຕ່າງໆຈະເປັນໄປຕາມໂຄງສ້າງໄຟລ໌ໂດຍກົງ.

ພາບລວມໂຄງສ້າງ (Architecture Overview)

Lao Air ໃຊ້ໂຄງສ້າງແບບງ່າຍ ເຊິ່ງປະກອບດ້ວຍສ່ວນປະກອບຕ່າງໆດັ່ງນີ້:

1. ສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ (User Interface Layer)

  • ຫນ້າ PHP ທີ່ມີໂຄດ HTML, CSS, ແລະ JavaScript
  • ສ່ວນປະກອບທີ່ໃຊ້ຮ່ວມກັນ (components) ສໍາລັບສ່ວນຕ່າງໆຂອງຫນ້າ
  • ຟອມສໍາລັບການຈອງຕັ໋ວ, ການລົງທະບຽນ, ແລະ ການເຂົ້າສູ່ລະບົບ

2. ຊັ້ນທຸລະກິດ (Business Logic Layer)

  • ຟັງຊັ່ນສໍາລັບການປະມວນຜົນການຈອງ
  • ການຢືນຢັນຂໍ້ມູນ (validation) ແລະ ການຮັກສາຄວາມປອດໄພ
  • ການຄຸ້ມຄອງເຊສຊັນ ແລະ ຄຸກກີ້

3. ຊັ້ນເຂົ້າເຖິງຂໍ້ມູນ (Data Access Layer)

  • ການເຊື່ອມຕໍ່ຖານຂໍ້ມູນ SQLite
  • ຟັງຊັ່ນສໍາລັບການອ່ານ, ຂຽນ, ແກ້ໄຂ, ແລະ ລຶບຂໍ້ມູນ
  • ການຄຸ້ມຄອງການເຊື່ອມຕໍ່ຖານຂໍ້ມູນ

ໂຄງສ້າງຫຼັກຂອງລະບົບ

ລະບົບ Lao Air ແບ່ງອອກເປັນ 3 ສ່ວນຫຼັກ:

1. ສ່ວນຜູ້ໃຊ້ທົ່ວໄປ (Front-end)

ສໍາລັບຜູ້ໃຊ້ທົ່ວໄປທີ່ຕ້ອງການຈອງຕັ໋ວ. ປະກອບດ້ວຍຟອມການຈອງ, ການຊໍາລະເງິນ, ແລະ ການຄຸ້ມຄອງການຈອງ.

2. ສ່ວນຜູ້ໃຊ້ລະບົບ (Agent Portal)

ສໍາລັບບໍລິສັດທ່ອງທ່ຽວທີ່ເປັນນາຍຫນ້າຂາຍຕັ໋ວ. ສາມາດເຂົ້າເຖິງໄດ້ຜ່ານໄດເຣກທໍຣີ /agent/.

3. ສ່ວນຜູ້ບໍລິຫານ (Admin Panel)

ສໍາລັບຜູ້ບໍລິຫານລະບົບ. ມີຄວາມສາມາດໃນການຈັດການຜູ້ໃຊ້, ຕັ້ງຄ່າລະບົບ, ແລະ ເບິ່ງລາຍງານຕ່າງໆ. ສາມາດເຂົ້າເຖິງໄດ້ຜ່ານໄດເຣກທໍຣີ /admin/.

ໄຟລ໌ເຂົ້າສູ່ລະບົບ (Entry Files)

ໄຟລ໌ເຂົ້າສູ່ລະບົບຫຼັກຂອງ Lao Air ມີດັ່ງນີ້:

1. index.php

ໄຟລ໌ເຂົ້າສູ່ລະບົບຫຼັກ. ເມື່ອຜູ້ໃຊ້ເຂົ້າເບິ່ງເວັບໄຊທ໌, ໄຟລ໌ນີ້ຈະຖືກເອີ້ນໃຊ້ແລະຈະໂອນໄປຫາໄຟລ໌ home.php.

2. home.php

ສະແດງຫນ້າຫຼັກຂອງເວັບໄຊທ໌ ພ້ອມທັງຟອມຄົ້ນຫາການບິນແລະຂໍ້ມູນໂປຣໂມຊັນຕ່າງໆ.

3. login.php

ໄຟລ໌ສໍາລັບຫນ້າເຂົ້າສູ່ລະບົບ. ຜູ້ໃຊ້ສາມາດເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີຂອງພວກເຂົາ.

4. register.php

ໄຟລ໌ສໍາລັບຫນ້າລົງທະບຽນ. ຜູ້ໃຊ້ໃຫມ່ສາມາດສ້າງບັນຊີໃຫມ່ໄດ້ຢູ່ທີ່ນີ້.

5. admin/index.php & agent/index.php

ໄຟລ໌ເຂົ້າສູ່ລະບົບສໍາລັບແຜງຄວບຄຸມຜູ້ບໍລິຫານແລະຜູ້ໃຊ້ລະບົບ.

ການເຂົ້າເຖິງ URL (URL Access)

ລະບົບ Lao Air ໃຊ້ໂຄງສ້າງ URL ແບບງ່າຍໂດຍອີງໃສ່ໂຄງສ້າງໄຟລ໌ໂດຍກົງ. URL ຫຼັກມີດັ່ງນີ້:

  • https://demo.laogair.com/ - ຫນ້າຫຼັກຂອງເວັບໄຊທ໌
  • https://demo.laogair.com/login.php - ຫນ້າເຂົ້າສູ່ລະບົບ
  • https://demo.laogair.com/register.php - ຫນ້າລົງທະບຽນ
  • https://demo.laogair.com/pages/book_ticket.php - ຫນ້າຈອງຕັ໋ວ
  • https://demo.laogair.com/admin/ - ແຜງຄວບຄຸມຜູ້ບໍລິຫານ
  • https://demo.laogair.com/agent/ - ແຜງຄວບຄຸມຜູ້ໃຊ້ລະບົບ (ບໍລິສັດທ່ອງທ່ຽວ)

ການຄຸ້ມຄອງ URL

Lao Air ໃຊ້ຮູບແບບການເຂົ້າເຖິງໄຟລ໌ແບບງ່າຍ. ລະບົບບໍ່ໄດ້ໃຊ້ຕົວຈັດການເສັ້ນທາງ (router) ທີ່ຊັບຊ້ອນແຕ່ໃຊ້ການເຊື່ອມຕໍ່ໄຟລ໌ PHP ໂດຍກົງ.

ພາຣາມິເຕີ URL

ລະບົບໃຊ້ພາຣາມິເຕີ GET ແລະ POST ເພື່ອຄວບຄຸມການດໍາເນີນງານ. ຕົວຢ່າງ:

  • https://demo.laogair.com/pages/book_ticket.php?flight_type=round-trip - ເປີດຫນ້າຈອງຕັ໋ວໄປ-ກັບ
  • https://demo.laogair.com/pages/view_booking.php?id=123 - ເບິ່ງລາຍລະອຽດການຈອງ ID 123

ໄຟລ໌ການຕັ້ງຄ່າຖານຂໍ້ມູນ (Database Configuration)

ລະບົບ Lao Air ໃຊ້ຖານຂໍ້ມູນ SQLite ເພື່ອເກັບຂໍ້ມູນ. ການຕັ້ງຄ່າຖານຂໍ້ມູນຢູ່ໃນໄຟລ໌ includes/db/database.php.

ສະຖານທີ່ຈັດເກັບຖານຂໍ້ມູນ

ຖານຂໍ້ມູນ SQLite ເກັບຢູ່ໃນໄຟລ໌ db/flight_booking.sqlite. ໂຄດຕໍ່ໄປນີ້ກໍານົດທີ່ຕັ້ງຂອງຖານຂໍ້ມູນ:

// Define the SQLite database file path
define('DB_FILE', __DIR__ . '/../../db/flight_booking.sqlite');

// Ensure the database directory exists
$db_dir = __DIR__ . '/../../db';
if (!file_exists($db_dir)) {
    mkdir($db_dir, 0755, true);
}

ການເຊື່ອມຕໍ່ຖານຂໍ້ມູນ

ຟັງຊັ່ນ getConnection() ຖືກໃຊ້ເພື່ອເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນ. ມັນໃຊ້ວິທີການແບບ singleton ເພື່ອຮັບປະກັນວ່າມີການເຊື່ອມຕໍ່ພຽງຄັ້ງດຽວ:

function getConnection() {
    static $conn = null;
    
    if ($conn === null) {
        try {
            $conn = new SQLite3(DB_FILE);
            // Enable foreign keys support
            $conn->exec('PRAGMA foreign_keys = ON');
        } catch (Exception $e) {
            error_log("Database connection error: " . $e->getMessage());
            die("Database connection failed. Please try again later.");
        }
    }
    
    return $conn;
}

ການດຳເນີນງານຂໍ້ມູນ (Database Operations)

ລະບົບ Lao Air ໃຊ້ຟັງຊັ່ນມາດຕະຖານສໍາລັບການດໍາເນີນງານຖານຂໍ້ມູນ:

ການຄິວຣີຂໍ້ມູນ (Query Data)

ຟັງຊັ່ນ runQuery() ໃຊ້ສໍາລັບການຄິວຣີຂໍ້ມູນຈາກຖານຂໍ້ມູນ:

function runQuery($sql, $params = []) {
    $conn = getConnection();
    
    try {
        $stmt = $conn->prepare($sql);
        
        // Bind parameters
        if (!empty($params)) {
            foreach ($params as $i => $param) {
                $paramType = is_int($param) ? SQLITE3_INTEGER : 
                          (is_float($param) ? SQLITE3_FLOAT : SQLITE3_TEXT);
                $stmt->bindValue($i + 1, $param, $paramType);
            }
        }
        
        $result = $stmt->execute();
        
        // If it's a SELECT query, return the results as an array
        if (stripos(trim($sql), 'SELECT') === 0) {
            $rows = [];
            while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
                $rows[] = $row;
            }
            return $rows;
        }
        
        return true;
    } catch (Exception $e) {
        error_log("Query error: " . $e->getMessage() . " - SQL: " . $sql);
        return false;
    }
}

ຮັບ ID ຂອງແຖວລ່າສຸດ (Last Insert ID)

ຟັງຊັ່ນ getLastInsertId() ໃຊ້ສໍາລັບຮັບ ID ຂອງແຖວທີ່ຫາກໍ່ຖືກເພີ່ມ:

function getLastInsertId() {
    $conn = getConnection();
    return $conn->lastInsertRowID();
}

ຕົວຢ່າງການນໍາໃຊ້

ຕົວຢ່າງຂ້າງລຸ່ມນີ້ສະແດງການໃຊ້ເພື່ອຄົ້ນຫາຂໍ້ມູນການບິນ:

// Search flights from VTE to LPQ
$flights = runQuery(
    "SELECT * FROM flights WHERE departure_code = ? AND arrival_code = ?",
    ["VTE", "LPQ"]
);

// Insert a new booking
$success = runQuery(
    "INSERT INTO bookings (booking_number, flight_type, total_amount, status) VALUES (?, ?, ?, ?)",
    ["B12345", "round-trip", 2500000, "pending"]
);

// Get the booking ID
$bookingId = getLastInsertId();

ຕາຕະລາງຖານຂໍ້ມູນ (Database Tables)

ລະບົບ Lao Air ປະກອບດ້ວຍຕາຕະລາງຕໍ່ໄປນີ້:

1. flights - ເກັບຂໍ້ມູນການບິນ

  • id: ລະຫັດລາຍການບິນ
  • flight_number: ເລກທີຖ້ຽວບິນ
  • airline: ສາຍການບິນ
  • departure_city: ເມືອງຕົ້ນທາງ
  • departure_code: ລະຫັດສະຫນາມບິນຕົ້ນທາງ
  • arrival_city: ເມືອງປາຍທາງ
  • arrival_code: ລະຫັດສະຫນາມບິນປາຍທາງ
  • departure_time: ເວລາອອກເດີນທາງ
  • arrival_time: ເວລາຮອດປາຍທາງ
  • duration: ໄລຍະເວລາການບິນ
  • price: ລາຄາຕັ໋ວ
  • seat_class: ປະເພດທີ່ນັ່ງ
  • flight_date: ວັນທີເດີນທາງ
  • aircraft: ປະເພດເຮືອບິນ
  • baggage_allowance: ນໍ້າຫນັກກະເປົາທີ່ອະນຸຍາດ
  • is_direct: ເປັນຖ້ຽວບິນທາງກົງຫຼືບໍ່
  • is_international: ເປັນຖ້ຽວບິນສາກົນຫຼືບໍ່

2. bookings - ເກັບຂໍ້ມູນການຈອງ

  • id: ລະຫັດການຈອງ
  • booking_number: ເລກທີການຈອງ
  • user_id: ລະຫັດຜູ້ໃຊ້
  • customer_name: ຊື່ລູກຄ້າ
  • flight_type: ປະເພດການບິນ (ໄປ-ກັບ, ທາງດຽວ, ຫຼາຍເສັ້ນທາງ)
  • total_amount: ຈໍານວນເງິນທັງຫມົດ
  • status: ສະຖານະການຈອງ
  • currency: ສະກຸນເງິນ
  • payment_method: ວິທີການຊໍາລະເງິນ
  • payment_status: ສະຖານະການຊໍາລະເງິນ

3. booking_details - ເກັບລາຍລະອຽດການຈອງ

  • id: ລະຫັດລາຍລະອຽດການຈອງ
  • booking_id: ລະຫັດການຈອງ (ອ້າງອີງຈາກຕາຕະລາງ bookings)
  • flight_id: ລະຫັດການບິນ (ອ້າງອີງຈາກຕາຕະລາງ flights)
  • passenger_name: ຊື່ຜູ້ໂດຍສານ
  • passenger_type: ປະເພດຜູ້ໂດຍສານ (ຜູ້ໃຫຍ່, ເດັກນ້ອຍ, ເດັກອ່ອນ)
  • contact_email: ອີເມວຕິດຕໍ່
  • contact_phone: ເບີໂທຕິດຕໍ່
  • passport_number: ເລກທີຫນັງສືເດີນທາງ
  • is_primary_contact: ເປັນຜູ້ຕິດຕໍ່ຫຼັກຫຼືບໍ່

4. documents - ເກັບເອກະສານທີ່ກ່ຽວຂ້ອງກັບການຈອງ

  • id: ລະຫັດເອກະສານ
  • booking_id: ລະຫັດການຈອງ (ອ້າງອີງຈາກຕາຕະລາງ bookings)
  • document_type: ປະເພດເອກະສານ
  • description: ລາຍລະອຽດເອກະສານ
  • file_name: ຊື່ໄຟລ໌
  • file_path: ເສັ້ນທາງໄຟລ໌

5. ຕາຕະລາງອື່ນໆ

ລະບົບຍັງມີຕາຕະລາງເພີ່ມເຕີມດັ່ງນີ້:

  • company_accounts: ບັນຊີບໍລິສັດສໍາລັບລູກຄ້າບໍລິສັດ
  • org_users: ຜູ້ໃຊ້ລະບົບປະເພດອົງກອນ
  • account_bookings: ການເຊື່ອມໂຍງລະຫວ່າງບັນຊີບໍລິສັດແລະການຈອງ
  • agents: ຂໍ້ມູນຕົວແທນຂາຍ
  • agent_bookings: ການເຊື່ອມໂຍງລະຫວ່າງຕົວແທນຂາຍແລະການຈອງ
  • admins: ຜູ້ບໍລິຫານລະບົບ

ການເຂົ້າສູ່ລະບົບຜູ້ໃຊ້ (User Authentication)

ລະບົບ Lao Air ມີລະບົບການຢືນຢັນຕົວຕົນຫຼາຍຮູບແບບສໍາລັບຜູ້ໃຊ້ປະເພດຕ່າງໆ:

ປະເພດຜູ້ໃຊ້

ລະບົບປະກອບມີຜູ້ໃຊ້ຫຼາຍປະເພດ:

  • ຜູ້ໃຊ້ບຸກຄົນ: ລູກຄ້າທົ່ວໄປທີ່ຈອງຕັ໋ວສ່ວນຕົວ
  • ຜູ້ໃຊ້ອົງກອນ: ຜູ້ໃຊ້ຈາກຫ້ອງການ, ພະແນກ, ກົມ, ກະຊວງ, ຫຼື ອົງກອນອື່ນໆ
  • ຕົວແທນຂາຍ: ບໍລິສັດທ່ອງທ່ຽວຫຼືຜູ້ຂາຍຕັ໋ວ
  • ຜູ້ບໍລິຫານລະບົບ: ຜູ້ທີ່ມີສິດໃນການຄຸ້ມຄອງລະບົບ

ຂະບວນການເຂົ້າສູ່ລະບົບ

ຂະບວນການເຂົ້າສູ່ລະບົບແມ່ນດັ່ງນີ້:

  1. ຜູ້ໃຊ້ປ້ອນອີເມວແລະລະຫັດຜ່ານໃນຫນ້າເຂົ້າສູ່ລະບົບ (login.php)
  2. ລະບົບກວດສອບຂໍ້ມູນກັບຕາຕະລາງຜູ້ໃຊ້ທີ່ເຫມາະສົມ
  3. ຖ້າຂໍ້ມູນຖືກຕ້ອງ, ລະບົບຈະສ້າງເຊສຊັນແລະບັນທຶກຂໍ້ມູນຜູ້ໃຊ້
  4. ຜູ້ໃຊ້ຖືກນໍາໄປຍັງໜ້າທີ່ເຫມາະສົມກັບປະເພດຜູ້ໃຊ້

ການຈັດການເຊສຊັນ

ການຈັດການເຊສຊັນແມ່ນດັ່ງນີ້:

  • ເຊສຊັນ PHP ໃຊ້ເພື່ອຕິດຕາມສະຖານະການເຂົ້າສູ່ລະບົບຂອງຜູ້ໃຊ້
  • ຂໍ້ມູນເຊສຊັນຖືກຈັດເກັບໃນໄດເຣກທໍຣີ tmp/sessions
  • ເຊສຊັນຖືກຕັ້ງໃຫ້ໝົດອາຍຸພາຍໃນ 7 ວັນ
  • ຄຸກກີ້ເຊສຊັນຖືກຕັ້ງຄ່າ HttpOnly ແລະ Secure (ເມື່ອໃຊ້ HTTPS)

ການຮັກສາຄວາມປອດໄພລະຫັດຜ່ານ

ລະຫັດຜ່ານຖືກຮັກສາຄວາມປອດໄພດັ່ງນີ້:

  • ລະຫັດຜ່ານຖືກເຂົ້າລະຫັດດ້ວຍຟັງຊັນ password_hash() ຂອງ PHP
  • ໃຊ້ PASSWORD_DEFAULT ເຊິ່ງປັດຈຸບັນແມ່ນ bcrypt algorithm
  • ເມື່ອເຂົ້າສູ່ລະບົບ, ລະຫັດຜ່ານຖືກກວດສອບດ້ວຍຟັງຊັນ password_verify()

ການລົງທະບຽນຜູ້ໃຊ້

ຂະບວນການລົງທະບຽນຜູ້ໃຊ້ແມ່ນດັ່ງນີ້:

  1. ຜູ້ໃຊ້ໃຫມ່ກ່ອນຟອມໃນໄຟລ໌ register.php
  2. ລະບົບກວດສອບວ່າອີເມວບໍ່ຊໍ້າກັບຜູ້ໃຊ້ທີ່ມີຢູ່ແລ້ວ
  3. ຂໍ້ມູນຜູ້ໃຊ້ຖືກບັນທຶກໃນຕາຕະລາງຜູ້ໃຊ້ທີ່ເຫມາະສົມ
  4. ຜູ້ໃຊ້ໄດ້ຮັບການຢືນຢັນແລະສາມາດເຂົ້າສູ່ລະບົບໄດ້

ການປະຕິບັດ (Deployment)

ຄວາມຕ້ອງການເຊີເວີ (Server Requirements)

ເພື່ອນໍາໃຊ້ລະບົບ Lao Air, ເຊີເວີຄວນມີຄຸນສົມບັດດັ່ງນີ້:

  • ເຊີເວີເວັບ: Apache ຫຼື Nginx
  • PHP ເວີຊັນ 7.4 ຫຼື ໃຫມ່ກວ່າ
  • ການສະຫນັບສະຫນູນ SQLite3
  • PHP Extensions: PDO, JSON, GD, mbstring, fileinfo, zip, openssl
  • ຢ່າງຫນ້ອຍ 512MB ຂອງຫນ່ວຍຄວາມຈໍາ (RAM) ສໍາລັບ PHP
  • ພື້ນທີ່ຈັດເກັບຂໍ້ມູນຢ່າງຫນ້ອຍ 500MB

ຂັ້ນຕອນການຕິດຕັ້ງ (Installation Steps)

ຂັ້ນຕອນການຕິດຕັ້ງລະບົບ Lao Air ມີດັ່ງນີ້:

  1. ອັບໂຫຼດໄຟລ໌ທັງຫມົດໄປຍັງເຊີເວີ
  2. ຮັບປະກັນວ່າໄດເຣກທໍຣີ db, tmp, ແລະ uploads ສາມາດຂຽນໄດ້ (writable)
  3. ຕັ້ງຄ່າ URL ຂອງເວັບໄຊທ໌ໃນໄຟລ໌ includes/functions.php
  4. ເປີດເວັບໄຊທ໌ແລະລອງເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີທົດລອງທີ່ກໍານົດໄວ້ໃນ includes/db/database.php

ຂໍ້ແນະນໍາໃນການປະຕິບັດ (Deployment Recommendations)

ຂໍ້ແນະນໍາໃນການປະຕິບັດລະບົບ Lao Air ໃນສະພາບແວດລ້ອມການຜະລິດ:

  • ໃຊ້ການເຊື່ອມຕໍ່ HTTPS ສໍາລັບການເຂົ້າລະຫັດການສື່ສານ
  • ຕັ້ງຄ່າສິດອະນຸຍາດໄຟລ໌ຢ່າງຖືກຕ້ອງ: 755 ສໍາລັບໄດເຣກທໍຣີ, 644 ສໍາລັບໄຟລ໌
  • ປົກປິດໄດເຣກທໍຣີທີ່ບໍຈໍາເປັນໂດຍໃຊ້ໄຟລ໌ .htaccess (ສໍາລັບ Apache) ຫຼື ການຕັ້ງຄ່າເຊີເວີ (ສໍາລັບ Nginx)
  • ເຮັດການສໍາຮອງຂໍ້ມູນຖານຂໍ້ມູນເປັນປະຈໍາ
  • ຕັ້ງຄ່າ OPcache ສໍາລັບປະສິດທິພາບຂອງ PHP ທີ່ດີຂຶ້ນ

ໄຟລ໌ .htaccess (ສໍາລັບ Apache)

ໄຟລ໌ .htaccess ຢູ່ທີ່ root directory ຊ່ວຍໃນການຕັ້ງຄ່າລະບົບແລະດໍາເນີນການປ່ຽນເສັ້ນທາງບາງຢ່າງ:

# Enable rewriting
RewriteEngine On

# Handle errors
ErrorDocument 404 /404.html
ErrorDocument 500 /502.html

# Protect sensitive files
<FilesMatch "(\.htaccess|\.htpasswd|\.sqlite)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

# Set PHP configuration
php_value upload_max_filesize 5M
php_value post_max_size 8M
php_flag register_globals off
php_flag display_errors off

# Security headers
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"

ຄວາມຕ້ອງການລະບົບ (System Requirements)

ຄວາມຕ້ອງການຂັ້ນຕໍ່າ (Minimum Requirements)

ຄວາມຕ້ອງການຂັ້ນຕໍ່າສໍາລັບການເຮັດວຽກຂອງລະບົບ Lao Air ມີດັ່ງນີ້:

ຄວາມຕ້ອງການຝັ່ງເຊີເວີ (Server Requirements)

  • ລະບົບປະຕິບັດການ: Linux (recommended), Windows Server, macOS
  • ເຊີເວີເວັບ: Apache 2.4+ ຫຼື Nginx 1.18+
  • PHP: ເວີຊັນ 7.4 ຫຼື ໃຫມ່ກວ່າ
  • ຖານຂໍ້ມູນ: SQLite 3.31.0 ຫຼື ໃຫມ່ກວ່າ
  • PHP Extensions: sqlite3, pdo_sqlite, json, gd, mbstring, fileinfo, openssl, zip, curl
  • ຫນ່ວຍຄວາມຈໍາ: ຢ່າງຫນ້ອຍ 512MB ຂອງ RAM ສໍາລັບ PHP
  • ພື້ນທີ່ຈັດເກັບຂໍ້ມູນ: ຢ່າງຫນ້ອຍ 500MB

ຄວາມຕ້ອງການຝັ່ງໄຄລເອັນ (Client Requirements)

  • ເວັບບຣາວເຊີທີ່ຮອງຮັບ:
    • Google Chrome 90+
    • Mozilla Firefox 88+
    • Microsoft Edge 90+
    • Safari 14+
  • JavaScript: ເປີດໃຊ້ງານ
  • Cookies: ເປີດໃຊ້ງານ
  • ຄວາມລະອຽດຫນ້າຈໍ: ຢ່າງຫນ້ອຍ 1280x800

ສໍາລັບອຸປະກອນມືຖື (Mobile Requirements)

  • ລະບົບປະຕິບັດການ: iOS 12+ ຫຼື Android 8+
  • ບຣາວເຊີ: Safari ສໍາລັບ iOS, Chrome ສໍາລັບ Android
  • ຄວາມລະອຽດຫນ້າຈໍ: ຢ່າງຫນ້ອຍ 375x667 (iPhone 8)

ຄວາມຕ້ອງການທີ່ແນະນໍາ (Recommended Requirements)

ເພື່ອປະສິດທິພາບທີ່ດີທີ່ສຸດ, ແນະນໍາໃຫ້ມີ:

ຄວາມຕ້ອງການຝັ່ງເຊີເວີ (Server Requirements)

  • ລະບົບປະຕິບັດການ: Linux (Ubuntu 20.04 LTS ຫຼື ໃຫມ່ກວ່າ)
  • PHP: ເວີຊັນ 8.0 ຫຼື ໃຫມ່ກວ່າ
  • ຫນ່ວຍຄວາມຈໍາ: 1GB+ ຂອງ RAM ສໍາລັບ PHP
  • ພື້ນທີ່ຈັດເກັບຂໍ້ມູນ: 1GB+ (ຂຶ້ນກັບຂະຫນາດຂອງຖານຂໍ້ມູນ)
  • PHP OPcache: ເປີດໃຊ້ງານພ້ອມການຕັ້ງຄ່າທີ່ເຫມາະສົມ
  • SSL Certificate: ຕິດຕັ້ງສໍາລັບການເຊື່ອມຕໍ່ HTTPS

ການດາວໂຫຼດແລະລິ້ງເຊື່ອມຕໍ່ທີ່ເປັນປະໂຫຍດ (Downloads and Useful Links)

ການກວດສອບຄວາມເຂົ້າກັນໄດ້ (Compatibility Check)

ເພື່ອກວດສອບວ່າລະບົບຂອງທ່ານມີຄຸນສົມບັດຕາມຄວາມຕ້ອງການຫຼືບໍ່, ທ່ານສາມາດເປີດໄຟລ໌ test_db.php ໃນບຣາວເຊີ. ໄຟລ໌ນີ້ຈະກວດສອບ:

  • ເວີຊັນຂອງ PHP
  • PHP Extensions ທີ່ຕິດຕັ້ງ
  • ການເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນ SQLite
  • ການຕັ້ງຄ່າສິດໃນການຂຽນໄຟລ໌ແລະໄດເຣກທໍຣີ