Sayt uchun tashriflar hisoblagichi: qanday o'rnatish mumkin?

Birinchi saytimni yaratganimdan buyon tashriflar hisoblagichini o'rnatgim, saytimni, yozganlarimni nechi kishi ko'rishayotgani bilgim kelardi. Uni tashriflar hisoblagichi deymizmi yoki tomoshalar (ko'rishlar) hisoblagichi deymizmi, maqsad o'sha - sahifaga nechi kishi kirishini bilish. Dasturchilik sohasida "o'rtachadan biroz kam" bilimga ega bo'lgan va dasturlash tillariga unchalik ham o'quvi yo'q odam uchun bu haqiqiy boshog'riq edi. Birinchi saytimni Google analitikaga va Yandex metrikaga uladim. O'ylagandimki, bu orqali ham tashriflar sonini aniqlay olaman, to'g'ri bu qulay, ular orqali sayt haqidagi bir dunyo statistikaga ega bo'lish mumkin. Ammo bu meni qoniqtirmadi. Yangiliklar saytidagi "ko'zcha"ga ega bo'lish orzusi meni juda ham o'ziga tortar edi. O'qimagan maqolam, tajriba qilmagan kodlarim deyarli qolmagandi (deb o'ylardim). Bilimlarimni amaliyotga tadbiq etish esa deyarli imkonsiz edi. Sababi esa oddiy: men dasturchi emasman, havaskorman. Men xohlagan hisoblagich "bir foydalanuvchi - bir ko'rish" tamoyili asosida ishlashi kerak edi. Saytlardagi Javascript kodlar esa sahifani yuklanishini hisobga olardi, ya'ni qayta kirsang ham, qayta yuklasang ham hisoblab tashlayverar edi. Tabiiyki, bu statistikani buzadi. Mutaxassis yordamidan foydalanishga esa pul sarflagim kelmas edi, nima, ozmi-ko'pmi dasturlashdan, HTML tilidan xabaring bor, o'zing qil der edim o'zimga. Yordam bergisi kelgan dasturchi ham chiqmadi, bari oldi-qochdi gaplar bilan aldab ketdi.
Ko'p saytlarda hisoblagich uchun turli plaginlardan, agar shaxsiy hisoblagich xohlasa, PHP va ma'lumotlar bazasidan (MySQL, PHPmyAdmin) foydalanish kerakligini yozishgan edi. Birinchisi to'g'ri kelmadi, ikkinchisiga xohish yetmadi. Shu qadar qiyin tilda tushuntirilgan ediki, go'yo kvant fizikasi haqidagi kitobni o'qiyotgandek edim. Shunday qilib hisoblagich yaratish fikri yillar ummoniga g'arq bo'ldi.
Baxtimga, ChatGPT degan "hotamtoy", beminnat yordam beradigan xizmat to'laqonli ishga tushdi. Savolni to'g'ri bersang, u ham sifatli javob berar ekan. Undan tashqari yana ko'plab maqolalar o'qidim. Va nihoyat, 2024-yil uddasidan chiqdim. Hisoblagich foydalanuvchining ip-manzilini bitta foydalanuvchi deb hisoblaydi va uni qayta hisobga olmaydi. Hozir sizga hisoblagichni qanday qilganimni va saytga ulaganimni bo'lishaman. Foydali bo'ladi degan umiddaman.
Birinchi bosqich: PHPmyAdminda ma'lumotlar bazasini yaratish
Hostingizdagi boshqaruv panelida (Plesk yo boshqa) saytingiz sozlamalari orasida ma'lumotlar bazasini (база данных) topasiz va kirasiz. Yangi baza yaratasiz. Shundan so'ng bazangiz boshqaruv paneliga (PHPmyAdmin) kirasiz. Saytingizga ma'lumotlar bazasini ulash uchun "ulanish haqidagi ma'lumot"ga kirasiz. Rasmda ma'lumotlar bazasi va u haqidagi muhim ma'lumotlar qismi sariq rangda belgilangan.


PHPmyAdminga kirgandan so'ng yangi baza yaratasiz. Baza nomini "views" deb qo'yasiz, qatorlar soniga 4 ni belgilaysiz. Shundan so'ng to'ldirilishi kerak bo'lgan jadval paydo bo'ladi. Rasmda to'ldirilishi shart bo'lgan qismlarini sariqqa olganman.

Qatorlar ID, PAGE, IP VA DATE ma'lumotlari bilan to'ldiriladi. Faqat ID qismi AUTO_INCREAMENT qilib belgilanadi. Qanday to'ldirish kerakligi rasmlarda keltirilgan. ID dan tashqari hammasining "тип" qismi o'zgartiriladi (varchar yoki datetime). Rasmlarda qavs ichiga olingan raqamlar "длина/значение" qismiga yoziladi. Ma'lumotlar kiritilgach saqlash tugmasi bosiladi. Shu bilan baza yaratish tugallandi.


Ikkinchi bosqich: Sayt bilan ma'lumotlar bazasini bog'lash
Endi navbat saytning PHP sahifasiga (htmlda php kod ishlamagani uchun htmlni php'ga o'zgartirdim) kerakli php kodlarni kiritishga. 2 ta kod yozish kerak: bittasi faylning HEAD qismi orasiga, ikkinchisi esa siz "ko'zcha"ni qayerga qo'ymoqchi ekanligingizga bog'liq. Shunday qilib birinchi kod quyidagicha, faqat HOST, DBNAME, USER va PAROL degan joylarini ma'lumotlar bazasidagi tegishli ma'lumotlar bilan to'ldiriladi. PHP kodni <script> tegiga olganman, sayt php'da yozilgan bo'lsa, menimcha kerak emas:
<head>
<script>
<?php
// Скрипт, который добавляет просмотр в базу данных
// Подключаемся к базе данных
$db = new PDO("mysql:host=HOST;dbname=DBNAME", "USER", "PAROL");
// Получаем IP-адрес пользователя
$ip = $_SERVER['REMOTE_ADDR'];
// Получаем имя или идентификатор страницы
$page = basename($_SERVER['PHP_SELF']);
// Проверяем, есть ли такой IP-адрес в таблице для данной страницы
$stmt = $db->prepare("SELECT * FROM views WHERE page = ? AND ip = ?");
$stmt->execute(array($page, $ip));
// Если нет, то добавляем новую запись в таблицу
if ($stmt->rowCount() == 0) {
$stmt = $db->prepare("INSERT INTO views (page, ip, date) VALUES (?, ?, NOW())");
$stmt->execute(array($page, $ip));
}
?>
</script>
</head>
Keyingi kod esa olingan ma'lumotni saytingizni qayeriga joylashtirmoqchi bo'lsangiz, o'sha joyiga qo'yasiz:
<i class="fa fa-eye"></i>
<?php
// Скрипт, который возвращает количество просмотров для данной страницы
// Подключаемся к базе данных
$db = new PDO("mysql:host=HOST;dbname=DBNAME", "USER", "PAROL");
// Получаем имя или идентификатор страницы
$page = basename($_SERVER['PHP_SELF']);
// Выбираем и возвращаем количество просмотров для данной страницы
$stmt = $db->prepare("SELECT COUNT(*) AS count FROM views WHERE page = ?");
$stmt->execute(array($page));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row['count'];
?>
Bo'ldi. Hammasini to'g'ri qilgan bo'lsangiz, demak ishlashi kerak. Kodlar bo'yicha savollar bo'lsa, ChatGPTga yozsalaringiz aniq javob beradi. Maqolam foyda beradi degan umiddaman.
