😎 » Блог » Про те як створював каталог сайтів
7 0  

Про те як створював каталог сайтів

Роздуми - підсумки, особисті думки після того як запусти в роботу третю версію каталогу сайтів

Затрачений час: - 14 днів.
Створено версій: - 3 версії


Що реалізовано:

 - автоматична провірка - яка намагається витягнути з сайту: тітл, дескріпшен, ключові слова, іконку, картинку og, NS, країну сервера, код відповіді
 - Схожі сайти, 
 - Топ сайтів, 
 - Популярні сайти,
 - останні сайти,
 - генерація Sitemap,
 - Лічильник сайтів, і лічильник переглядів,
 - завантаження картинок,
 - примітивна адмінка із сесійним захистом.
 
Проблеми в порядку їх складності:
1. текст, опис, ключові слова - 110 категорій описати щоб це виглядало змістовно і по темі.
2. картинки - виготовлення та оптимізація картинок для мобільної версії.
3. сортування по категоріям - 50% сайтів (2000штук) прийшлось прописувати категорію вручну
4. збір інформації про сайти - пов'язано із парсингом та записом.
5. html + css.

PHP код по складності.
1. Парсер для збору сайтів - так і не вирішив. Пішов шляхом завантаження сайтів на свій компютер за допомогою сторонніх рішень, а потім уже за допомогою  PHP бібліотеки "libcurl" проходився по папкам і заганяв зміст з файлів у БД.
2. Завантаження картинки - як не дивно але виявилось складно реалізувати заванатження картинки - зменшення та переведення її в формат .webp. Копліот і ЧатДЖПТ - так і не допомогли, благо у мене були свої доробки і навіть свій клас для цієї потреби. (код внизу)
3. Впорядкування БД за допомогою SQL запитів - о тут уже класно допоміг ДЖПчат :).
4. Найбільше напрягся при створенні навігації по сторінкам категорії, області та навігації для головної - так я к у мене навігація зберігається в SSI файлах, а не витягуються вони з БД - тут відчув себе майже Сенйором який проектує патерни :)
5. AJAX запити до БД через JS  так як досвід уже був прийшлось лише погратись із точкою входу та обробкою POST запитів.
6. Захист. Опишу етапи:
6.1 Неможливість введення в поле форми заборонених символів та команд SQL - реалізовано через JS.
6.2 Після тестування завжди вимикайте виведення помилок додавши на початок ваших PHP файлів "error_reporting(0);"
6.3 Все що приходить із форм спочатку очищається стандартними функціями і не тільки, наприклад:

function clearInput($inputString){
    // Список слів і знаків для видалення
    $wordsToRemove = ["'", "\"", "x\\", "--", "&", "#", "%", "+", "=", ";",  ",", "*", "$", "!", "?", "prompt", "script", "DELETE", "FROM", "PDO", "SELECT", "[", "]", "{", "}", "(", ")", "<", ">", "\r", "\n", "\t", "INSERT"];

    // Переводимо дані в нижній регістр для неповноти чутливості до регістру
    //$lowercaseInput = mb_strtolower($inputString, 'UTF-8');

    // Видаляємо заборонені слова
    $filteredValue = str_ireplace($wordsToRemove, '', $inputString);

    // Видаляємо небажані теги
    $filteredValue = strip_tags($filteredValue);

    // Використовуємо htmlspecialchars для уникнення XSS-атак
    $filteredValue = htmlspecialchars($filteredValue, ENT_QUOTES, 'UTF-8');

    // Використовуємо trim для видалення зайвих пробілів на початку і в кінці рядка
    $filteredValue = trim($filteredValue);

    return $filteredValue;
}

6.4 Захист від ботів, усі секрети не розповім але 99% відсіювання ботів забезпечує наявність поля для емейла - це поле скривається для користувачів через CSS, бажано через правила черги а не класи чи id, щоб скрипт бота не зрозумів що поле скрите. 
Так ось боти завжди заповнюють емейл поля - тобто якщо прийшло поле заповнене - це БОТ.


Вигляд адмінки - дивіться на скріні (Просто водимо id сайті і відкривається поля для редагування).


Переглянути третю версію каталога - https://goodwap.pp.ua


Залишити свій коментар:

Досвід у веброзробці:

2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2009
2023