← กลับหน้าหลัก

โค้ด Cookie Consent Banner ภาษาไทย — Template ฟรี ตาม PDPA

Free Thai Cookie Consent Banner Code — PDPA compliant (Section 19), copy & paste

Cookie Consent Banner เป็นองค์ประกอบแรกที่ผู้ใช้จะเห็นว่าเว็บไซต์ของคุณปฏิบัติตาม PDPA หรือไม่ ตามมาตรา 19 เว็บไซต์ที่ใช้คุกกี้ที่ไม่จำเป็น (เช่น Google Analytics, Facebook Pixel) ต้องขอความยินยอมก่อนติดตั้งคุกกี้ ด้านล่างนี้เป็นโค้ด HTML/CSS/JS ที่คัดลอกไปใช้ได้ฟรี รองรับภาษาไทยและมีปุ่มยอมรับ/ปฏิเสธที่เท่าเทียมกันตามแนวทาง สคส.

ข้อควรระวัง: โค้ดนี้เป็น Template เริ่มต้น คุณต้องเพิ่มสคริปต์ Analytics/Tracking ที่ใช้จริงในฟังก์ชัน loadAnalytics() และปรับลิงก์นโยบายความเป็นส่วนตัวให้ตรงกับเว็บไซต์ของคุณ

1. HTML — โครงสร้างแบนเนอร์

HTML structure — place before closing </body> tag

<!-- Cookie Consent Banner — PDPA Compliant -->
<div id="cookie-banner" style="display:none;" role="dialog" aria-label="ประกาศคุกกี้">
  <div class="cookie-content">
    <h3>เว็บไซต์นี้ใช้คุกกี้</h3>
    <p>
      เราใช้คุกกี้เพื่อปรับปรุงประสบการณ์การใช้งานและวิเคราะห์การเข้าเยี่ยมชม
      คุณสามารถเลือกยอมรับหรือปฏิเสธคุกกี้ที่ไม่จำเป็นได้
      <a href="/privacy">อ่านนโยบายความเป็นส่วนตัว</a>
    </p>
    <div class="cookie-categories">
      <label>
        <input type="checkbox" checked disabled />
        <strong>คุกกี้จำเป็น</strong> — เพื่อให้เว็บไซต์ทำงานได้ (ไม่สามารถปิดได้)
      </label>
      <label>
        <input type="checkbox" id="cookie-analytics" />
        <strong>คุกกี้วิเคราะห์</strong> — เพื่อวิเคราะห์การใช้งาน (Google Analytics)
      </label>
      <label>
        <input type="checkbox" id="cookie-marketing" />
        <strong>คุกกี้การตลาด</strong> — เพื่อนำเสนอโฆษณาที่ตรงความสนใจ
      </label>
    </div>
    <div class="cookie-buttons">
      <button id="cookie-accept-all" class="btn-accept">ยอมรับทั้งหมด</button>
      <button id="cookie-reject-all" class="btn-reject">ปฏิเสธทั้งหมด</button>
      <button id="cookie-save" class="btn-save">บันทึกการตั้งค่า</button>
    </div>
  </div>
</div>

2. CSS — สไตล์แบนเนอร์

CSS styles — mobile-first, 44px tap targets

/* Cookie Consent Banner — PDPA Compliant */
#cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: #ffffff;
  border-top: 1px solid #e5e7eb;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.1);
  z-index: 9999;
  padding: 20px;
  font-family: 'Noto Sans Thai', sans-serif;
}
.cookie-content {
  max-width: 640px;
  margin: 0 auto;
}
#cookie-banner h3 {
  font-size: 16px;
  font-weight: 700;
  color: #111827;
  margin-bottom: 8px;
}
#cookie-banner p {
  font-size: 14px;
  color: #4b5563;
  line-height: 1.6;
  margin-bottom: 12px;
}
#cookie-banner a {
  color: #2563eb;
  text-decoration: underline;
}
.cookie-categories {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 16px;
}
.cookie-categories label {
  font-size: 13px;
  color: #374151;
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.cookie-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.cookie-buttons button {
  padding: 10px 20px;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  min-height: 44px; /* PDPA: 44px tap target */
  font-family: 'Noto Sans Thai', sans-serif;
}
.btn-accept {
  background: #2563eb;
  color: #ffffff;
  border: none;
}
.btn-accept:hover { background: #1d4ed8; }
.btn-reject {
  background: #ffffff;
  color: #374151;
  border: 1px solid #d1d5db;
}
.btn-reject:hover { background: #f9fafb; }
.btn-save {
  background: #ffffff;
  color: #2563eb;
  border: 1px solid #2563eb;
}
.btn-save:hover { background: #eff6ff; }

3. JavaScript — ตรรกะความยินยอม

JavaScript logic — consent storage and conditional loading

<script>
(function() {
  var banner = document.getElementById('cookie-banner');
  var CONSENT_KEY = 'pdpa_cookie_consent';

  // Show banner if no consent recorded
  var saved = localStorage.getItem(CONSENT_KEY);
  if (!saved) {
    banner.style.display = 'block';
  } else if (JSON.parse(saved).analytics) {
    loadAnalytics();
  }

  // Accept all
  document.getElementById('cookie-accept-all').addEventListener('click', function() {
    var consent = { necessary: true, analytics: true, marketing: true, date: new Date().toISOString() };
    localStorage.setItem(CONSENT_KEY, JSON.stringify(consent));
    banner.style.display = 'none';
    loadAnalytics();
  });

  // Reject all (only necessary cookies)
  document.getElementById('cookie-reject-all').addEventListener('click', function() {
    var consent = { necessary: true, analytics: false, marketing: false, date: new Date().toISOString() };
    localStorage.setItem(CONSENT_KEY, JSON.stringify(consent));
    banner.style.display = 'none';
  });

  // Save custom settings
  document.getElementById('cookie-save').addEventListener('click', function() {
    var consent = {
      necessary: true,
      analytics: document.getElementById('cookie-analytics').checked,
      marketing: document.getElementById('cookie-marketing').checked,
      date: new Date().toISOString()
    };
    localStorage.setItem(CONSENT_KEY, JSON.stringify(consent));
    banner.style.display = 'none';
    if (consent.analytics) loadAnalytics();
  });

  // Load analytics ONLY after consent
  function loadAnalytics() {
    // วาง Google Analytics / Facebook Pixel ที่นี่
    // ตัวอย่าง Google Analytics:
    // var s = document.createElement('script');
    // s.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX';
    // document.head.appendChild(s);
  }
})();
</script>

ข้อกำหนด PDPA ที่โค้ดนี้รองรับ

PDPA requirements this code satisfies

✅ ปุ่มยอมรับและปฏิเสธเท่าเทียมกัน

ปุ่ม "ยอมรับทั้งหมด" และ "ปฏิเสธทั้งหมด" มีขนาดเท่ากัน (min-height: 44px) และวางเรียงกัน — ไม่ซ่อนปุ่มปฏิเสธ ตามแนวทางของ สคส. (PDPC)

✅ แสดงประเภทคุกกี้เป็นหมวดหมู่

แสดง 3 หมวดหมู่: คุกกี้จำเป็น (ปิดไม่ได้), คุกกี้วิเคราะห์, คุกกี้การตลาด แต่ละหมวดมีคำอธิบายสั้นๆ เป็นภาษาไทย

✅ ลิงก์นโยบายความเป็นส่วนตัว

มีลิงก์ "อ่านนโยบายความเป็นส่วนตัว" ในข้อความแบนเนอร์ ผู้ใช้สามารถอ่านรายละเอียดก่อนตัดสินใจ

✅ ไม่ติดตั้งคุกกี้ก่อนได้รับความยินยอม

สคริปต์ Analytics จะถูกโหลดเฉพาะเมื่อผู้ใช้กดยอมรับเท่านั้น (Opt-in) ไม่ใช่โหลดก่อนแล้วค่อยให้ปฏิเสธ (Opt-out)

✅ บันทึกความยินยอมและเปลี่ยนได้ภายหลัง

บันทึกการตั้งค่าใน localStorage ไม่แสดงแบนเนอร์ซ้ำ แต่คุณควรเพิ่มปุ่ม "ตั้งค่าคุกกี้" ใน footer เพื่อให้ผู้ใช้เปลี่ยนการตั้งค่าได้ตลอดเวลา

อ่านรายละเอียดข้อกำหนด Cookie Banner ตาม PDPA ได้ที่ Cookie Banner ไทย — ตามข้อกำหนด PDPA

วิธีติดตั้ง

Installation guide

1

คัดลอกโค้ด HTML วางก่อนปิดแท็ก </body> ในหน้าเว็บทุกหน้า

2

คัดลอกโค้ด CSS วางในไฟล์ style.css หรือในแท็ก <style> ใน <head>

3

คัดลอกโค้ด JavaScript วางก่อนปิดแท็ก </body> (หลัง HTML แบนเนอร์)

4

แก้ไขลิงก์ /privacy ให้ตรงกับ URL นโยบายความเป็นส่วนตัวของคุณ

5

เพิ่มสคริปต์ Analytics/Pixel ในฟังก์ชัน loadAnalytics()

6

เพิ่มปุ่ม "ตั้งค่าคุกกี้" ใน footer เพื่อให้ผู้ใช้เปลี่ยนการตั้งค่าได้

7

ทดสอบ: เปิดเว็บในโหมด Incognito — แบนเนอร์ต้องแสดงก่อนคุกกี้ทำงาน

ข้อมูลนี้เป็นข้อมูลทั่วไป ไม่ใช่คำแนะนำทางกฎหมาย โค้ด Template นี้เป็นจุดเริ่มต้นที่ดี แต่เว็บไซต์แต่ละแห่งอาจมีข้อกำหนดเพิ่มเติม ควรตรวจสอบกับทนายความหรือผู้เชี่ยวชาญด้าน PDPA

Informational only — not legal advice. Review with a PDPA-qualified professional.

ตรวจสอบ Cookie Banner บนเว็บไซต์ของคุณ

วาง URL เว็บไซต์ของคุณเพื่อให้ AI ตรวจสอบว่า Cookie Consent Banner ผ่านข้อกำหนด PDPA หรือยัง ฟรีภายใน 60 วินาที

ตรวจสอบฟรีเลย →