kodex77
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте. Решил немного экспериментировать и с помощью ChatGPT 3.5 создать админ панель для сайта, где все страницы на HTML. Сам процесс интересен, и это будет какой-то опыт. Идея заключается в том, чтобы изначально отслеживать просмотры каждой страницы (html) и выводить все данные в админ панель. В дальнейшем, возможно, улучшить и добавить новый функционал. С некоторыми сложностями, но мне удалось создать и оформить все как мне нужно при помощи ChatGPT. Теперь возникла проблема. Как подключить PHP файл на HTML страницах, чтобы он срабатывал и выполнял указанные в нем функции, а также записывал нужные данные в БД. ChatGPT предлагал разные варианты, такие как include, AJAX, но особо ничего не получилось. При прямом обращении к PHP файлу все работает, все данные записываются в БД, но нужно чтобы все это работало на HTML страницах сайтах, так как именно в этом заключается суть. У меня есть базовые знания HTML, CSS, но, к сожалению, PHP изучал только в общих чертах. Буду признателен за любые советы и подсказки, заранее спасибо. stats.php Код: <?php // Включение отображения ошибок на странице ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // Включение логирования ошибок в файл ini_set('log_errors', 1); ini_set('error_log', __DIR__ . '/error.log'); // Подключение к базе данных function connectToDatabase() { $servername = "localhost"; // Имя сервера $username = "dbusername"; // Имя пользователя базы данных $password = "dbpassword"; // Пароль пользователя базы данных $dbname = "dbname"; // Имя базы данных // Создание подключения $conn = new mysqli($servername, $username, $password, $dbname); // Проверка соединения if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } return $conn; } // Получение HTML-контента с использованием cURL function getHTMLContent($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($curl); curl_close($curl); return $content; } // Получение данных из HTML-контента function getDataFromHTML($html) { preg_match('/<title>(.*?)<\/title>/', $html, $matches); $gameName = isset($matches[1]) ? trim(explode('-', $matches[1])[0]) : "Unknown"; return $gameName; } // Обновление счетчика просмотров страницы function updatePageViews($conn, $date, $gameName, $gameLink, $ipAddress) { // Проверка, считался ли уже уник для данного IP $stmt = $conn->prepare("SELECT COUNT(*) AS count FROM visit_statistics WHERE ip_address = ? AND visit_date = ?"); if (!$stmt) { error_log("Ошибка подготовки запроса: (" . $conn->errno . ") " . $conn->error); return; } $stmt->bind_param("ss", $ipAddress, $date); if (!$stmt->execute()) { error_log("Ошибка выполнения запроса: (" . $stmt->errno . ") " . $stmt->error); return; } $result = $stmt->get_result(); $row = $result->fetch_assoc(); $stmt->close(); if ($row['count'] == 0) { // Уника не считался для этого IP в текущий день, добавляем новую запись $stmt = $conn->prepare("INSERT INTO visit_statistics (visit_date, game_name, game_link, hits, uniques, ip_address) VALUES (?, ?, ?, 1, 1, ?)"); if (!$stmt) { error_log("Ошибка подготовки запроса: (" . $conn->errno . ") " . $conn->error); return; } $stmt->bind_param("ssss", $date, $gameName, $gameLink, $ipAddress); if (!$stmt->execute()) { error_log("Ошибка выполнения запроса: (" . $stmt->errno . ") " . $stmt->error); return; } $stmt->close(); } else { // Уника уже считался для этого IP в текущий день, увеличиваем только счетчик hits $stmt = $conn->prepare("UPDATE visit_statistics SET hits = hits + 1 WHERE game_name = ? AND game_link = ? AND visit_date = ? AND ip_address = ?"); if (!$stmt) { error_log("Ошибка подготовки запроса: (" . $conn->errno . ") " . $conn->error); return; } $stmt->bind_param("ssss", $gameName, $gameLink, $date, $ipAddress); if (!$stmt->execute()) { error_log("Ошибка выполнения запроса: (" . $stmt->errno . ") " . $stmt->error); return; } $stmt->close(); } } // Основная логика $conn = connectToDatabase(); $url = 'https://site.ru'; $html = getHTMLContent($url); $gameName = getDataFromHTML($html); $date = date("Y-m-d"); $pageUrl = $_SERVER['REQUEST_URI']; $ipAddress = $_SERVER['REMOTE_ADDR']; $gameLink = "https://site.ru" . parse_url($pageUrl)['path']; updatePageViews($conn, $date, $gameName, $gameLink, $ipAddress); $conn->close(); ?> |
|