• Проверка уникальности записи, как это работает?

    @granty
    Я хочу чтобы при совпадении определённой записи в БД, он выводил ошибку. Для этого, я для столбца поставил Индекс.
    Поле email в БД должно быть UNIQUE INDEX, тогда при вставке дубля MySQL будет кидать ошибку, которую можно обрабатывать.
    Или можно использовать конструкцию INSERT IGNORE ... ON DUPLICATE KEY, например, чтобы вернуть ID записи с этим email.
    Ответ написан
    Комментировать
  • Как осуществить транслит в обе стороны?

    @granty
    при наличии в строке ь ъ(мягкого и твердого знака) заменяется в транслите ' и '', что мне не подходит, тк я строку передаю в url и уже с этого url выдергиваю строку и обратно на русский язык перевожу
    Почему? Согласно RFC3986 все недопустимые в URL символы должны кодироваться, и в PHP для этого есть функции rawurlencode() и rawurldecode().
    Просто обрабатываете url ими, они правильно закодируют ваши ' и потом обратно их декодируют (останется только экранировать их, когда будете пихать в SQL-запрос).
    Как, по вашему, получаются url вида https://ru.wikipedia.org/wiki/Набор_символов?

    Зато ваши URL будут сделаны в точности по ГОСТ 7.79-2000 "ПРАВИЛА ТРАНСЛИТЕРАЦИИ КИРИЛЛОВСКОГО ПИСЬМА ЛАТИНСКИМ АЛФАВИТОМ"
    (КИРИЛЛОВСКОГО, блин, черти нерусские!)

    зачем вам ЧПУ?
    Но что-то мне подсказывает, что ЧПУ на сайте вам нужно совсем для другого...
    Только вы не поставили тег про "это другое" в своём вопросе. Поэтому, даже решив проблему с кодированием Ь и Ъ, вы получите неправильное ЧПУ с точки зрения этого "чего-то другого" - того, о чём вы даже и не спросили.
    Ответ написан
    Комментировать
  • Как сделать страницу сайта чтобы не было видно расширения?

    @granty
    Вариант 1. Для веб-сервера Apache в конфиге сайта (можно в .htaccess в корневой папке сайта) пишете: DirectoryIndex index.php (он уже там есть у всех хостеров). Тогда при обращении к site.ru будет автоматически запускаться index.php (или как там вы его назовёте).
    Через index.php уже роутите все остальные URI на нужные модули.

    Для nginx - тоже делается, но директиву я не знаю, надо смотреть доки.

    Но сайт будет доступен и по site.ru и по site.ru/index.php, поэтому в index.php надо делать редирект на site.ru когда в URI появляется index.php.


    Вариант 2 сделать редирект на index.php через mod_rewrite.
    Во многих движках сайтов такая возможность есть из коробки.
    Ответ написан
    2 комментария
  • Откуда в сети могли появиться неизвестные устройства?

    @granty
    Routerboard.com - это mikrotik.com (он туда редиректит).
    ASYSTeK - тоже производитель беспроводных сетевых маршрутизаторов.

    Раз засветился MAC-адрес этих маршрутизаторов - они как-то попали к вам в локальную сеть. И, похоже, всё-таки по WiFi - насколько я помню, MAC-адрес через IP не передаётся (если не поднят какой-нибудь NetBios-Over-IP).

    Или это вас хакеры сканировали на предмет уязвимостей (с белым внешним IP ваш маршрутизатор будут сканировать постоянно). Проверьте, что у вас на роутере не открыт наружу порт 8080 (web-интерфейс роутера).

    Или соседские WiFi-маршрутизаторы "отметились", возможно локалка была открыта во время настройки роутера.
    Можно просканировать соседские WiFi на предмет наличия этих моделей маршрутизаторов.
    Ответ написан
    1 комментарий
  • Что лучше показывать 404 ошибку на странице или перенаправлять на 404?

    @granty
    С точки зрения Вебразработки - по стандарту HTTP сервер должен отдавать 404 если страница не найдена (не меняя её URL). Редирект 301/302/307/308 делается когда точно известна куда была перемещена страница.
    Редирект на страницу, которая отдаст браузеру 404, вводит посетителя в заблуждение - не понятно какой URL оказался битым и его невозможно исправить вручную.

    С точки зрения Поисковой оптимизации - надо давать "200 OK", типовую заставку "Страница не найдена" и ставить с неё ссылку на главную страницу сайта (или мини-меню по разделам).
    Поисковики их "склеят по контенту" в одну страницу, но это позволит подобрать статический вес внешних(и внутренних) ссылок на такие не найденные страницы.
    Ответ написан
    2 комментария
  • IP адрес открывается сайт?

    @granty
    Когда на одном IP находится несколько доменов/сайтов, то веб сервер, при обращении к нему по IP, отдаст первый попавшейся сайт (первый сайт из конфига всех сайтов).
    Это плохо, тк сайт начнёт индексироваться и по домену и по IP-адресу.
    Поэтому вместо него надо сделать сайт-заглушку. Отдавайте на этой заглушке 404 not Found, чтобы не грузить сервер.

    Если делать руками - то этот сайт-заглушку прописывают первой в конфиге всех сайтов.

    Если через ISPmanareg (нужен доступ к уровню суперпользователя root), то создайте в разделе WWW-домены домен с любым левым названием, Выберите для него тот же IP-адрес, что и у ISPmgr и отметьте на форме создания домена галку "Приоритетный" (как написал archelon). После этого по IP-адресу будет открываться созданный домен-заглушка.

    PS: В логах этого сайта-заглушки будет отражаться сканирование по IP-адресу - будете знать кого блокировать.
    Ответ написан
    Комментировать
  • CSS не подключается mime type error?

    @granty
    У вас стили присылаются с MIME типом text/html, а должны - с text/css.
    Похоже вы rel='stylesheet' не указали в теге <link href='...' rel='stylesheet' type='text/css'>

    Или веб-сервер криво настроен - на .css отдаёт некорректный MIME-тип.
    Ответ написан
    Комментировать
  • Как перевести трафик с старого сайта на новый?

    @granty
    Трафик с органики (выдачи ПС) в целом определяется 2-я факторами:
    1 ссылочным ранжированием (внешними ссылками на страницу и внутренними ссылками), передаёт статический вес и анкорное ранжирование;
    2 текстовым ранжированием страницы.

    Чтобы сохранить ссылочное ранжирование (перенести его на новый сайт), старый домен придётся оплачивать вечно, и сделать с него редирект на новый. Это позволит переклеить внешние ссылки на новый домен.

    Если вы поменяли структуру URL на новом сайте, придется делать постраничный редирект со страниц старого сайта на "правильные" страницы нового сайта.

    Вместо редиректа можно использовать "мягкий" вариант с rel="canonical", работает и в Яндексе и в Гугле.

    Сохранить текстовое ранжирование 1 в 1 не получится, если вы поменяли тексты, его оформление тегами и изменили ЧПУ в URL.
    Станет оно лучше или хуже - знают только ПС.

    Внутреннее ссылочное у вас тоже поменяется, скорее всего.
    Ответ написан
    Комментировать
  • Существует ли сайты с установкой «платной» капчи к себе на сайт?

    @granty
    rucaptcha.com посмотрите (тоже не реклама, первое что нагуглилось).

    А вообще - гуглите запросы "антикапча" и "сервисы решения капч". Все они используют людей для решения рекапч, значит, имеют своё API.
    И главное, чтобы эти сервисы платили, а не кидали.
    Ответ написан
  • Как правильно распознавать авторизованного пользователя?

    @granty
    Сессия в PHP - это практически те же ваши "куки + БД", только вместо БД используется файл сессии. Он будет свой для каждого пользователя.
    Генерируется уникальный хэш (ID сессии), он садится пользователю в куки, а на сервере создаётся файл с именем == ID сессии. PHP все это делает сам.

    В файле сессии (на сервере) хранятся все переменные, которые вы захотите. Когда поднимается сессия, PHP автоматически инициирует массив $_SESSION
    с вашими переменными (Имя пользователя, IP пользователя, дата последнего логина, права пользователя и тп).

    Под работу с сессиями в PHP есть встроенные функции, они не все работают очевидным образом, но разобраться можно.

    PS: Если не поддерживаются куки, то ID сессии может передаваться как параметр в URL.

    есть ли возможность в случае с сессиями сохранить пользователя к примеру на месяц?
    Да. Ставите у сессионной куки время жизни 1 месяц, и через месяц браузер пользователя автоматически её уничтожит. После этого надо будет авторизоваться заново.
    Но на сервере есть параметр настроек PHP session.gc_maxlifetime, который задает время жизни PHP-сессии на сервере. После истечения session.gc_maxlifetime PHP garbage collection удаляет файл сессии на сервере. То есть, его надо ставить > месяца.

    какой вариант предпочтительнее
    вопрос холливарный. Если есть надо мониторить пользователей (кто, когда и зашёл и что сделал) - по БД это удобнее, чем рыться руками по тысяче файлов.
    В плане безопасности - одинаково, тк работает один и тот же механизм. Угон куков -> подмена сессии.

    PS: На хабре есть неплохая статья Подводные камни использования сессий в PHP.
    Ответ написан
    1 комментарий
  • Название моего сайта Вкусные блюда отображается в title, как его исправить?

    @granty
    Сегодня - 08 мая. На 04 мая на сайте был бестолковый <title> "полезно-вкусные блюда", вместо которого Яндекс брал название сайта для формирования Заголовка:
    5eb53644873bb786153852.jpeg
    В этом легко убедиться, посмотрев кэш вашей страницы, дата её последней индексации - 04 мая.
    Если ссылка на кэш 'протухнет'
    Если ссылка "протухнет" - найдите эту страницу в поиске Яндекса, и кликайте на зелёный треугольничек:
    5eb536cb03194315091578.jpeg и в выпадающем списве выбирайте "Сохранённая копия"


    То есть, после 4 мая вы поменяли тайтл, и хотите чтобы Яндекс за 3 дня полностью переиндексировал ваш сайт и сделал апдейт выдачи?
    Ответ написан
    Комментировать
  • Как создать приложение в котором открывается конкретный сайт?

    @granty
    Пишете манифест к каждому сайту, в манифестах указываете "display": "standalone" чтобы отключить UI браузера.

    После этого иконку сайта можно добавлять на рабочий стол мобильного устройства без магазина приложений, одними штатными средствами Android/iOS: меню -> Добавить на домашний экран. Под Windows 10 на десктопах тоже должно работать.

    Открываться сайт будет по тапу на такую иконку и будет похож на нативное приложение.

    Ссылки по теме
    Ответ написан
    Комментировать
  • Ограничение доступа через .htaccess, разрешаем доступ только однму ип, чет не выходит, как реализовать?

    @granty
    Когда сайт проксируется через Cloudflare, все запросы идут с IP Cloudflare.

    ваше решение - нехорошее, посетитель может прислать собственный заголовок X-Forwarded-For и указать в нём свой IP. И взломает ваш сайт.

    Поставьте на веб сервер mod_cloudflare и не изобретайте велосипед.

    PS: mod_cloudflare работает только для Веб-сервера, то есть ipfirewall/iptables работать не будут - в них будет попадать клаудфларевский IP.
    Ответ написан
  • Писать форму регистрации самому?

    @granty
    Бывают ли такие ситуации, когда лучше самому писать форму регистрации?

    Да. Везде, где есть ваша ответственность за перс.данные и финансы клиента.
    Например - собственный интернет-банкинг.
    Ответ написан
    Комментировать
  • Сколько человек нужно чтобы создать сайт?

    @granty
    интеллект-карту в которой расписано сколько человек нужно чтобы создать сайт и кто из них чем занимается и какие технологии применяет
    Подобные "интеллект-карты" - это сферический конь в вакууме.

    Сайт = Контент(1) + CMS(2) + UI(3) + Хостинг(4)

    Человечество наработало массу готовых решений для типовых задач в (2), (3) и (4); специально обученные "человеки" нужны только если требуется что либо "нестандартное".
    Их количество зависит будете ли вы "допиливать готовое" или "создавать с нуля".

    Для большинства сайтов, главное - это Контент и UI(User Interface). Но для сайтов с "User Generated Content"(пример - youtube) важнее всего UI.
    Поэтому от баланса "важности" между пунктами (1), (2), (3) и (4) в вашем проекте, будет зависеть количество спецов и требования к их специальным знаниям/опыту.
    Ответ написан
    Комментировать
  • Можно ли (и как) определить яндекс бота с помощью PHP?

    @granty
    1. Со 100% точностью - невозможно.

    2. Что в вашем понимании Яндекс.Бот? У Яндекса с десяток различных сервисов, которые самостоятельно лазят по сайтам с разными ЮзерАгентами, исполняют скрипты, применяют стили.
    Я.Метрика - это Яндекс.Бот? Яндекс.Директ это Яндекс.Бот?

    Определять по User Agent можно только роботов-индексаторов, и то не всех. Для индексации мобильной версии сайта, бот-индексатор приходит с User Agent настоящего мобильного устройства.
    И парсеры сайтов часто приходят с Яндексовским или Гугловским юзерагентом.

    Вычислять ботов по IP подсетей Яндекса тоже не даст 100% точности - роботы проверки на клоакинг приходят из "левых" подсетей, чаще всего из Корбины. И есть публичные Яндекс.прокси в "яндексовских" диапазонах IP, например, для режима turbo Яндекс-браузеров.
    Ответ написан
    Комментировать
  • Откуда лезет реклама?

    @granty
    Чтобы показывать рекламу, надо внедрить яваскрипт в HTML-код страницы вашего сайта. Технически это могут сделать:


    =========На вашей стороне:========== (реклама будет только у вас)
    1. провайдер интернет.
    Вставляет рекламу на http-страницы, на https-страницах рекламы нет, через VPN рекламы тоже нет.


    2. браузерные плагины и расширения
    Реклама будет даже на https-страницах, и на любом VPN, так плагины работают с уже расшифрованной странице в браузере.
    Реклама появляется только в браузере с установленным плагином.
    Особо пакостные (типа mail.ru агента) устанавливаются на уровне операционки и гадят во всех браузерах одновременно.


    3. Вирус на компе
    Может вставлять рекламу во все браузеры, и по http: и по https:



    =========На стороне сайта========= (реклама будет у всех)
    4. Хостер.
    5. Взлом хостинга.
    6. Скрипт с чужого домена, используемый вами на сайте.


    Найдите в HTML-коде сайта этот "посторонний" яваскрипт, это сильно облегчит поиск того, кто его вставляет.
    Попросите друзей/знакомых пооткрывать сайт - если у них будет реклама, копайте в сторону пунктов 4, 5, 6

    PS: иногда такая реклама вставляется только на мобильных устройствах. Также рекламы может не быть с зарубежных IP (просто нет рекламодателей для чужой страны/языка)
    Ответ написан
    Комментировать
  • Вывод дескрипшена в сниппет, как реализовть?

    @granty
    Грамотный сеошник знает как работает алгоритм аннотирования ПС, поэтому он формирует тот сниппет, который ему нужен.
    Единственно, нужно помнить, что сниппет - запросозависим.

    Я покажу вам один секретный сайт с демонстрацией работы алгоритмов аннотирования. Там на живых примерах показывается, когда в сниппет попадает текст из alt= картинки, когда сниппет берётся из <title>, а когда из <meta description, как "подверстать" в сниппет номер телефона, как добавить в сниппет спецсимволы ...
    Просто кликаете по ссылкам и видите сформированный сниппет. Потом читаете в описании и смотрите в HTML-коде как это было реализовано.

    Если сможете разобраться - сформируете такие сниппеты, какие захотите.
    Ответ написан
    Комментировать
  • Как создаются современные сайты?

    @granty
    Современные сайты создаются только на CMS. Сайт - это айсберг. "Верстальщики и PSD-макеты" относятся лишь к маленькой видимой части айсберга - то, что видит и с чем взаимодействует посетитель.
    А на вебсервере работает огромная невидимая подводная часть айсберга - множество скриптов, баз данных и тп. В общем, это и есть CMS - система управления контентом. Она может быть связана связана с оплатой, бухгалтерией, наличием товара на складе, системой учета посетителей и кучей всего.

    Даже простые сайты со статьями имеют удобную систему добавления/редактирования текста, фото/видео, структуризации по категориям и тп. Без CMS ими невозможно управлять.

    Поэтому на голом HTML можно сделать только простые сайты-визитки и одностраничные лендинги.
    Ответ написан
    Комментировать
  • Как поисковики относятся к ajax сайтам в 2020 году?

    @granty
    Индексирование сайтов на аякс:
    - Яндекс
    - Google

    PS: Это не вопрос, вся информация есть в хелпе ПС.
    Ответ написан
    Комментировать