Как сделать проверку на домен?

moytop

Новичок
Здравствуйте, начал изучать php, но что-то тяжко идёт, вопросов больше чем ответов.
Мануал читаю, но там так сухо всё, что половина не понятна.
Хочу попросить помощи, именно чтобы кто-то объяснил почему так, а не по-другому.

Суть в следующем.
Есть код проверки домена: мол, если домен соответствует тому, что в списке - всё ок, если не соответствует, то выводится предупреждение.
Это рабочий код, взял его с какого-то сайта, где он работает.
Но когда я пытаюсь его понять и применить на другом сайте, он у меня не работает.

Код состоит из двух частей:
часть №1 - это получение данных
часть №2 - это список доменов и проверка (как я понял)...

PHP:
<?php
// Часть 1 - Вызов функции проверки

//var_dump(checkDomain());
//echo '<br>';

        if(checkDomain()) {
            echo 'Домен не тот.';
            die();
        }

// Функция проверки
function checkDomain() {

// Определяем путь к текущему домену   
$domain = $_SERVER['SERVER_NAME'];
$url = 'https://platus.by/sync/lic_wp.php?domain='. $domain;

$ch = curl_init();
// Устанавливаем URL и соответствующие параметры
curl_setopt ($ch, CURLOPT_URL, $url); // URL-адрес, который необходимо получить, также можно использовать, когда curl_init () инициализирует сеанс.
curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt ($ch, CURLOPT_HEADER, false); // Если включено, информация заголовочного файла будет выводиться в виде потока данных.
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5); // Количество секунд ожидания при попытке подключения. Если установлено значение 0, он будет ждать бесконечно.
curl_setopt ($ch, CURLOPT_TIMEOUT, 30); // Максимальное количество секунд, разрешенное для выполнения функции cURL.
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); // TRUE возвращает информацию, полученную с помощью curl_exec (), в виде строки, а не выводит ее напрямую.

 // захватываем URL-адрес и передаем его браузеру
 // сюда получили JSON из файла
$str = curl_exec($ch);

 // Закройте ресурсы cURL и освободите системные ресурсы
curl_close($ch);
               

$result = false;
$json = null;

// Вставляем проверку на ошибку
    if($str) {
        try {
            // Переводим из json в массив
            $json = @json_decode($str, true);
            //var_dump($json);
            //echo '<br>';
        }
        catch (Exception $exception) {
            $result = false;
        }
        // Проверяем если в целом lic_wp.php вернул 1 то и эта функция = 1
        if($json && !empty($json['result']) && $json['result'] == 1) {
            $result = true;
        }
    }
    // Если по каким-то причинам не получилось считать lic_wp.php - все равно одобряем проверку
    else {
        $result = true;
    }

return $result;
}
       
?>


PHP:
<?php

// Часть 2 - Определяется список разрешенных доменов
$availabled_domains = array(
  'domain1.ru',
   'domain2.ru',
   'platus.by'
);

// ?? что такое 'domain' внутри функции? И как просмотреть содержимое этой функции, почему она всегда пустая по var_dump($domain); ?
$domain = getVar('domain');

// ?? Зачем нужен массив $json ? Почему не переменная?
$json = array();

// Перебираем домены
foreach ($availabled_domains as $av_domain) {
   
   // ?? С чем тут что сравнивается? что должно быть в $domain - если результат функции всегда пустой?
   if (strpos($domain, $av_domain) || $domain == $av_domain) {     
     $json['result'] = 1;     
     break;
   }
}

// ?? Зачем эта проверка?
if (!isset($json['result'])) {
   $json['result'] = 0;
}

// ?? что делает эта функция? что такое post name - и почему оно вообще тут используется? Это самый непонятный момент. Зачем это всё.
function getVar($name, $def_value = '') {
  if(isset($_POST[$name])) {
  if(is_string($_POST[$name])) {
  $_POST[$name] = trim($_POST[$name]);
  }
  else if(is_numeric($_POST[$name])) {
  $_POST[$name] = (int) $_POST[$name];
  }
  return $_POST[$name];
  }

  if(isset($_GET[$name])) {
  if(is_string($_GET[$name])) {
  $_GET[$name] = trim($_GET[$name]);
  }
  else if(is_numeric($_GET[$name])) {
  $_GET[$name] = (int) $_GET[$name];
  }
  return $_GET[$name];
  }

  return $def_value;
}


// ?? зачем в json всё кодируется?
header('Content-Type: application/json');
echo json_encode($json, JSON_UNESCAPED_UNICODE);
В общем этот код уже почему-то у меня не работает.
Хотя я его просто скопировал.
Всегда выдает $json['result'] = 0

Вопросы я поместил в код как комментарии под двумя вопросами ?? - где и что непонятно.
Если кто-то сможет прояснить их и помочь заставить код работать, буду признателен.

p.s. Просьба не пинать за наивные вопросы, но реально не нашел на них ответа в мануалах, да и в целом не совсем понятна логика работы кода, хочу разобраться.
 

AnrDaemon

Продвинутый новичок
Потому и не работает, что просто скопировал, а не разобрался, что именно код делает.

 
Сверху