moytop
Новичок
Здравствуйте, начал изучать php, но что-то тяжко идёт, вопросов больше чем ответов.
Мануал читаю, но там так сухо всё, что половина не понятна.
Хочу попросить помощи, именно чтобы кто-то объяснил почему так, а не по-другому.
Суть в следующем.
Есть код проверки домена: мол, если домен соответствует тому, что в списке - всё ок, если не соответствует, то выводится предупреждение.
Это рабочий код, взял его с какого-то сайта, где он работает.
Но когда я пытаюсь его понять и применить на другом сайте, он у меня не работает.
Код состоит из двух частей:
часть №1 - это получение данных
часть №2 - это список доменов и проверка (как я понял)...
В общем этот код уже почему-то у меня не работает.
Хотя я его просто скопировал.
Всегда выдает $json['result'] = 0
Вопросы я поместил в код как комментарии под двумя вопросами ?? - где и что непонятно.
Если кто-то сможет прояснить их и помочь заставить код работать, буду признателен.
p.s. Просьба не пинать за наивные вопросы, но реально не нашел на них ответа в мануалах, да и в целом не совсем понятна логика работы кода, хочу разобраться.
Мануал читаю, но там так сухо всё, что половина не понятна.
Хочу попросить помощи, именно чтобы кто-то объяснил почему так, а не по-другому.
Суть в следующем.
Есть код проверки домена: мол, если домен соответствует тому, что в списке - всё ок, если не соответствует, то выводится предупреждение.
Это рабочий код, взял его с какого-то сайта, где он работает.
Но когда я пытаюсь его понять и применить на другом сайте, он у меня не работает.
Код состоит из двух частей:
часть №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. Просьба не пинать за наивные вопросы, но реально не нашел на них ответа в мануалах, да и в целом не совсем понятна логика работы кода, хочу разобраться.