ข้ามไปยังเนื้อหา
ไลเซนส์

ตรวจสอบไลเซนส์

ระบบและปลั๊กอินที่พัฒนาโดย RIIS-DATA มีหมายเลขไลเซนส์ ที่นี่คุณตรวจสอบได้ว่าไลเซนส์ใช้ได้กับเว็บไซต์หรือไม่

วิธีตรวจสอบไลเซนส์จากเว็บไซต์

เว็บไซต์ส่งข้อมูลสามอย่างไปยัง RIIS-DATA และได้รับคำตอบกลับ (ใช้ได้หรือไม่):

licenseหมายเลขไลเซนส์RIIS-XXXX-XXXX-XXXX-XXXX
siteชื่อเว็บไซต์เว็บไซต์ของฉัน
urlมาจากที่อยู่ของเว็บไซต์ เช่น https://www.example.no

ที่อยู่: https://riis-data.no/api/license.php · POST (JSON) หรือ GET

  1. คัดลอกไฟล์ด้านล่างแล้วบันทึกเป็น riis-license.php บนเว็บไซต์ของคุณ
  2. วางไฟล์บนเว็บไซต์และเพิ่มบรรทัดเหล่านี้ตรงจุดเริ่มของระบบ (ใน WordPress: ในปลั๊กอินหรือธีม):
<?php
require __DIR__ . '/riis-license.php';

if (!riis_license_ok()) {
    echo riis_license_notice();   // หรือหยุดระบบ
}

คำตอบจะถูกเก็บไว้ 12 ชั่วโมง จึงถาม RIIS-DATA ไม่เกินวันละสองครั้ง หากติดต่อ RIIS-DATA ไม่ได้ เว็บไซต์จะยังทำงานต่อ คำตอบลงนามด้วยหมายเลขไลเซนส์ จึงปลอมแปลงไม่ได้

แสดงไฟล์ทั้งหมด
<?php
/**
 * RIIS-DATA license check for your website (PHP 7.4+, works in WordPress and any PHP site).
 *
 * 1. Save this file on your website, e.g. as riis-license.php
 * 2. Include it and check the license:
 *
 *        require __DIR__ . '/riis-license.php';
 *        if (!riis_license_ok()) {
 *            echo riis_license_notice();   // or stop the system / show a message to the admin
 *        }
 *
 * The answer is cached for 12 hours, so RIIS-DATA is contacted at most twice a day.
 * If RIIS-DATA cannot be reached, the website keeps working (it tries again within an hour).
 * The answer is signed with your license number, so it cannot be faked by a third party.
 */

const RIIS_LICENSE_KEY  = 'RIIS-XXXX-XXXX-XXXX-XXXX';     // license number
const RIIS_LICENSE_SITE = 'เว็บไซต์ของฉัน';    // webpage name
const RIIS_LICENSE_API  = 'https://riis-data.no/api/license.php';

/** Full check result: valid, status, message, product, expires_at … */
function riis_license_check(bool $force = false): array
{
    $cache = rtrim(sys_get_temp_dir(), '/\\') . '/riis_license_' . md5(RIIS_LICENSE_KEY . '|' . riis_license_url()) . '.json';
    if (!$force && is_file($cache)) {
        $c = json_decode((string)file_get_contents($cache), true);
        if (is_array($c) && ($c['_until'] ?? 0) > time()) {
            return $c;
        }
    }
    $nonce = bin2hex(random_bytes(8));
    $body = json_encode([
        'license' => RIIS_LICENSE_KEY,          // license number
        'site'    => RIIS_LICENSE_SITE,         // webpage name
        'url'     => riis_license_url(),        // coming from
        'nonce'   => $nonce,
    ]);
    $raw = false;
    if (function_exists('curl_init')) {
        $ch = curl_init(RIIS_LICENSE_API);
        curl_setopt_array($ch, [CURLOPT_POST => true, CURLOPT_POSTFIELDS => $body, CURLOPT_RETURNTRANSFER => true,
            CURLOPT_TIMEOUT => 6, CURLOPT_HTTPHEADER => ['Content-Type: application/json']]);
        $raw = curl_exec($ch);
        curl_close($ch);
    } else {
        $raw = @file_get_contents(RIIS_LICENSE_API, false, stream_context_create(['http' => [
            'method' => 'POST', 'timeout' => 6, 'ignore_errors' => true, 'header' => "Content-Type: application/json\r\n", 'content' => $body]]));
    }
    $d = is_string($raw) ? json_decode($raw, true) : null;
    if (!is_array($d) || !isset($d['status'])) {
        // RIIS-DATA not reachable: do not block the website, try again within an hour
        $d = ['valid' => true, 'status' => 'offline', 'message' => 'License server not reachable', '_until' => time() + 3600];
    } elseif (isset($d['signature'])) {
        $expected = hash_hmac('sha256', implode('|', [!empty($d['valid']) ? '1' : '0', $d['status'], RIIS_LICENSE_KEY,
            $d['domain'] ?? '', $d['expires_at'] ?? '', $d['checked_at'] ?? '', $nonce]), RIIS_LICENSE_KEY);
        if (!hash_equals($expected, (string)$d['signature'])) {
            $d = ['valid' => false, 'status' => 'bad_signature', 'message' => 'The answer could not be verified'];
        }
        $d['_until'] = time() + 12 * 3600;
    } else {
        $d['_until'] = time() + 12 * 3600;      // unknown license number
    }
    @file_put_contents($cache, json_encode($d));
    return $d;
}

function riis_license_ok(): bool
{
    return !empty(riis_license_check()['valid']);
}

/** Message to show when the license is not valid. */
function riis_license_notice(): string
{
    $d = riis_license_check();
    return '<div style="padding:12px 16px;background:#fff0f2;border:1px solid #FF0027;border-radius:8px;font-family:sans-serif">'
        . '<strong>License:</strong> ' . htmlspecialchars((string)($d['message'] ?? 'Not valid')) . ' – RIIS-DATA</div>';
}

/** This website's address ("coming from"). */
function riis_license_url(): string
{
    if (function_exists('home_url')) {          // WordPress
        return home_url('/');
    }
    $https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || ($_SERVER['SERVER_PORT'] ?? '') == 443;
    return ($https ? 'https' : 'http') . '://' . ($_SERVER['HTTP_HOST'] ?? 'localhost') . '/';
}

สำหรับเว็บไซต์ที่ไม่มี PHP: ใส่โค้ดนี้ก่อน </body> จะแสดงแถบสีแดงหากไลเซนส์ใช้ไม่ได้

<script>
fetch('https://riis-data.no/api/license.php', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    license: "RIIS-XXXX-XXXX-XXXX-XXXX",          // license number
    site: "เว็บไซต์ของฉัน",         // webpage name
    url: location.origin          // coming from
  })
})
  .then(r => r.json())
  .then(d => {
    if (!d.valid) {
      document.body.insertAdjacentHTML('afterbegin',
        '<div style="background:#FF0027;color:#fff;padding:10px;text-align:center">License: ' + d.message + '</div>');
    }
  });
</script>

เพื่อทดสอบจากบรรทัดคำสั่ง ภาษาโปรแกรมใดก็ได้ หรือในเบราว์เซอร์โดยตรง:

curl -X POST https://riis-data.no/api/license.php \
  -H 'Content-Type: application/json' \
  -d '{"license":"RIIS-XXXX-XXXX-XXXX-XXXX","site":"เว็บไซต์ของฉัน","url":"https://www.example.no"}'

# หรือในเบราว์เซอร์โดยตรง:
https://riis-data.no/api/license.php?license=RIIS-XXXX-XXXX-XXXX-XXXX&site=%E0%B9%80%E0%B8%A7%E0%B9%87%E0%B8%9A%E0%B9%84%E0%B8%8B%E0%B8%95%E0%B9%8C%E0%B8%82%E0%B8%AD%E0%B8%87%E0%B8%89%E0%B8%B1%E0%B8%99&url=https%3A%2F%2Fwww.example.no
{
    "valid": true,
    "status": "valid",
    "message": "The license is valid.",
    "product": "RIIS Booking Plugin",
    "site_name": "เว็บไซต์ของฉัน",
    "domain": "example.no",
    "expires_at": "2027-12-31",
    "checked_at": "2026-10-19T19:14:54Z",
    "nonce": "a1b2c3",
    "signature": "9f2c…"
}
statusvalidความหมาย
validtrueไลเซนส์ใช้งานได้
activatedtrueไลเซนส์ใช้งานได้ และลงทะเบียนกับเว็บไซต์นี้แล้ว
developmenttrueที่อยู่สำหรับพัฒนา (localhost) – ยอมรับ แต่ไม่ลงทะเบียน
invalidfalseไม่พบหมายเลขไลเซนส์นี้
domain_mismatchfalseไลเซนส์ไม่ได้ลงทะเบียนกับเว็บไซต์นี้
expiredfalseไลเซนส์หมดอายุแล้ว
suspendedfalseไลเซนส์ถูกระงับชั่วคราว กรุณาติดต่อ RIIS-DATA
revokedfalseไลเซนส์ถูกเพิกถอนแล้ว
missing_keyfalseไม่ได้ส่งหมายเลขไลเซนส์มา
missing_urlfalseไม่มีที่อยู่ของเว็บไซต์ (url)

signature = HMAC-SHA256 ของ "valid|status|license|domain|expires_at|checked_at|nonce" โดยใช้หมายเลขไลเซนส์เป็นคีย์ (valid = 1 หรือ 0) ไฟล์ PHP ตรวจสอบให้คุณ

ลูกค้าดูหมายเลขไลเซนส์ได้ในพอร์ทัลลูกค้า ที่เมนู ไลเซนส์ของฉัน เข้าสู่ระบบ