• Как правильно экранировать символы в SQL запросы, если нужно отправить HTML-код?

    @granty
    Как я уже говорил, функций, которые начинаются на mysql, в языке давно нет. Остаются только те, которые начинаются на mysqli и PDO.
    Справедливости ради, mysql есть в расширении mysqlnd, которое ставится и в PHP7.
  • Не заносятся данные в БД с регистрации?

    @granty
    Как сервер узнает, под каким именем из формы прислано значение?

    Вы должны дать имена полям input:
    < input type="text" name="'username"
    тогда на сервере под этим именем вы сможете получить присланное этим инпутом значение:
    $username = $_POST['username'];

    тоже касается полей email и password - у вас нет < input> с такими именами - ничо и не присылается


    и
    $connection = mysqli_connect('localhost', 'root', '');
    вы коннектитесь к БД под рутом без пароля? Я про 'root', ''
  • Что указывать при создание таблиы MYSQL?

    @granty
    Роман Мирр, и солёный :)

    PS: Хранить пароль в БД, даже зашифрованный - полный моветон. Есть же SRP-6 аутентификация.
  • Почему такая ситуация с координатами примерного местоположения в Google аккаунте?

    @granty
    Андроид и так всегда залогинен в аккаунт Google, по-моему, ему этого достаточно.

    Я никогда не включал синхронизацию. Гугль вел за мной историю местоположений с 2015 года, пока я это случайно не обнаружил.
    Но я периодически логинился в аккаунт Google (почта, Адсенс), поэтому он вёл историю действий за ноутбуком.

    Без детальных экспериментов не разобраться и не ответить на все ваши вопросы. Посмотрите рекомендации Google по настройке геолокации, откалибруйте компас если он есть.

    На некоторые вопросы ответ можете найти только вы сами - телефоны у вас все разные, у какого-то может быть поломан датчик.
    Вон, в статье Миссия невыполнима 6 телефонов в одном кармане показывали разный трекинг мест посещения.
  • Почему такая ситуация с координатами примерного местоположения в Google аккаунте?

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

    Поэтому, если вы уехали в город и там делаете поиск "банкомат сбербанка", Гугль будет показывать вам банкоматы рядом с вашей текущей локацией. Банкоматы из вашего "основного посёлка" смысла показывать нет.

    Поэтому геолокация должна определяться без задержки. Другое дело, что в "Истории местоположений" Гугл может показывать что попало.

    Проверьте правильность определения Гуглем геолокации.
    На страничке https://www.w3schools.com/html/tryit.asp?filename=... даёте разрешение на доступ браузера к геолокации(там будет всплывающее окошко) и смотрите ваши гео-координаты, как определил их браузер. Нас интересует Гугл Хром, хотя Firefox тоже их покажет, но по своим данным.
    На страничке https://www.w3schools.com/html/html5_geolocation.asp если кликнуть/тапнуть на синюю кнопочку "Ty it" браузер покажет ваше местоположение на карте(насколько точно он смог его определить).

    Будете в следующий раз кататься по городу - зайдите на эти странички - будет ли он показывать вас в посёлке, или в городе.
    И потом сравните их с метками местоположений у поисковых запросов.

    Я так понимаю, эти гео-данные должны браться из одного и того же места (WiFi/базовые станции/IP-адрес). Значит, браузер Хром должен показывать вас в посёлке, когда вы катаетесь по городу.
    А если он правильно покажет вас в городе - то скорее всего лажает История местоположений Google.

    PS: Кстати, можете включить WiFi в городе(где есть кафешки с бесплатным вайфаем) и посмотреть как изменятся ваши гео-координаты.
  • Почему выходит ошибка 404 при том что файл есть в каталоге?

    @granty
    alizhakupov, отлично!
    Тогда создайте файлик с именем типа zebrJ7qQ5k9lixT0Cwg-9wEaPSY-mL4usZkHeZIT8_k, такой должен показываться, он ровно 43 символа длиной.
  • Google начал удалять из поиска заведомо несуществующие страницы?

    @granty
    dimonchik2013, да, ложечки то нашлись, но осадок остался...
    Мне ж надо было всё проверить досконально, прежде чем ответить.
  • Почему выходит ошибка 404 при том что файл есть в каталоге?

    @granty
    alizhakupov, ещё раз, для тех, кто в танке:
    На папку /acme-challenge/ действует регулярное выражение (вы его не видите, оно прописано у вашего хостера):
    RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"

    Имя вашего txt-фала не проходит эту регулярку, и вы получаете 404.

    На папку /.well-known/ эта регулярка не действует, поэтому ваш файл показывается.

    Я же показал вам конфиги сервера для подтверждения сертификатов Let`s encrypt по http-01, там видно как оно работает. Точно такой же конфиг прописан в httpd.conf у вашего хостера. Этот конфиг распространяется на все ваши сайты.


    PS: В папке /acme-challenge/ должен быть токен формата http:// domain.ru/.well-known/acme-challenge/XXXXXXXX-XXXXXX-XXXXXX-XXXX, судя по регулярке - длиной не менее 43 символов.
    Всё остальное регулярка отправляет на 404 Not found, она для этого там и поставлена.

    PPS: Почему вы ленитесь хотя бы бегло почитать как оно работает, там же всё на русском.
  • Почему выходит ошибка 404 при том что файл есть в каталоге?

    @granty
    Не, это шаблон на все конфиги сайтов, он прописывается в httpd.conf для Apache. Для nginx - конфиг будет другой.

    Но, судя по этому вопросу, httpd.conf вам недоступен. У вашего хостера всё это должно быть уже прописано.
    А ваш "файл без расширения" не попадает под регулярку(п 3 в предыдущем камменте), поэтому вы получаете 404.

    Если вы запишете в папку acme-challenge правильный проверочный файл - он будет доступен.
  • Google начал удалять из поиска заведомо несуществующие страницы?

    @granty
    zemavo,
    DMCA https://www.lumendatabase.org/notices/20061111 полностью соответствует критериям заданного вами вопроса:
    5e45ac21513c3120215923.jpeg
    Поэтому я дал ответ по существу вашего вопроса.

    Риторический вопрос:
    Вы не боитесь регистрировать сайт в зоне RU? (я про soderzhanki2.ru). Это уже юрисдикция РФ, данные о владельце домена и кто его оплачивал открываются на раз-два-три. А в российском суде вас правообладатели раскатают по полной.
  • Как вывести статьи в зависимости от сочетания двух select/option используя php и mysql?

    @granty
    stepahryukin,
    Для начала гляньте этот, у него внизу есть демо-страница посмотреть как оно работает. Сам PHP-код на сервере там сделан некрасиво:
    - разбит на кучу отдельных файлов
    - отправляет текстовые данные (грамотнее отправлять json)
    но чтобы понять принцип работы - подойдёт.

    А потом посмотрите по запросам типа Связанные списки select на jQuery json.
    Там, кстати даже есть ссылка на qna.habr.com - Как правильно заполнить select опциями из объекта Json?, то есть, "наши" уже решали подобные вопросы.
  • Почему данные не выводятся?

    @granty
    FanatPHP,
    первые три пункта.

    с этим не поспоришь.
    Топикстартеру надо было отладить именно его кусок кода, я решил не травмировать его психику принципами ООП.
  • Как создать кодировку подключения?

    @granty
    @FanatPHP
    Такого адового шаманизма и карго культа я давно не видел.

    Если знаете другой способ работать с БД в UTF-8, когда по дефалту подключение к mysql в my.ini на сервере установлено в cp1251 - поделитесь :)

    mysqli_set_charset() появился в PHP >= 5.0.5
    mysql_set_charset() появился в PHP >= 5.2.3
    И что можно было ему ответить, не зная его конкретики?

    А, главное, автор все равно не понял ни слова из того что тут понаписал.
    Честно говоря, я уверен, что автору не надо переводить подключение к БД в utf8, на всех хостингах оно уже и так в нём по дефалту.
    Трогать дефалтную кодировку приходится только если надо переконвертировать старые бэкапы из других кодировок.

    Но он спросил, я ответил максимально обстоятельно.
  • Почему данные не выводятся?

    @granty
    FanatPHP, вы не могли бы уточнить, что именно?
    - делать die() вместо нормальной обработки ошибок?
    - использовать устаревший mysql_ ?
    - смешивать обработку данных и их визуализацию?
    - или вы просто сторонник синтаксиса:
    mysql_connect("localhost", "admin", "pass") or die (mysql_error ());
  • Почему данные не выводятся?

    @granty
    После:
    $rs = mysql_query($strSQL);
    добавьте:
    if ($rs ===FALSE)  die( mysql_error () );
    echo 'Получено записей: '.mysql_num_rows($rs).'<br>';

    на случай ошибки в запросе "SELECT * FROM sell", хотя там возможна только одна ошибка - нет таблицы sell (или имя_таблицы является служебным словом).
    А mysql_num_rows($rs) покажет количество полученных записей, может, у вас таблица пустая.

    Тогда диагностика будет полная, останутся только синатксические ошибки PHP.

    Лучше явно получить ID подключения к БД, он может понадобиться:
    $conn_id = mysql_connect("localhost", "admin", "pass");

    И вместо or die (mysql_error ()) писать в явном виде:
    if ( !is_resource($conn_id) ) die( 'failed connect to DB: '.mysql_error () );
    if ( !mysql_select_db("db") ) die( 'Error select DB: '.mysql_error() );
  • Как создать кодировку подключения?

    @granty
    Люто плюсую. И неплохо ещё добавить в конце запроса site:habr.com (искать только по Хабру), чтобы сразу получить ответ от профессионалов, и не рыться в куче мусорных сайтов:)
  • Как лучше разбить заголовок H1 с точки зрения SEO?

    @granty
    Snatch08,
    Если правила меняются постоянно, то наверное логично сомневаться, не?
    Изменение правил было продиктовано логикой и здравым смыслом.

    Возьмём запрос "банковская пластиковая карта", и текст "Банковская система создала её. Она была пластиковая и очень удобная. Эта карта не раз выручала меня."
    Алгоритмы Яндекса 2008 года считали этот текст нерелевантным запросу "банковская пластиковая карта" - ибо слова находятся в разных пассажах (грубо - предложениях). Такой текст просто не проходил кворум при ранжировании.

    Но если постоянно писать в тексте "банковская пластиковая карта" - такой текст плохо воспринимается человеком. Ведь не зря же у нас в человеческом языке были придуманы короткие слова он/она/её, чтобы ссылаться на ранее упомянутое.
    spoiler
    Да и сеошники внесли свою лепту - начали массово автогеренить тексты, предназначенные для роботов ПС, с вхождением всех слов подряд. Технически реализовать это было очень просто, это же не "Войну и Мир" написать

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

    Вот Яндекс и смягчил условия прохождения кворума, разрешив ключевым словам находится и в соседних пассажах, и быть частичными сочетаниями слов из полного запроса.

    Но если в начале текста употреблено слово "банковская", в середине - "пластиковая", а в конце - "карта", этот текст явно не о пластиковой банковской карте.
    Поэтому "расстояние" между ключевыми словами по-прежнему играет роль, просто её чуть ослабили.

    nvdfxx,
    "Влияние переноса строки на результаты в выдаче" - звучит, как seo головного мозга.
    увы, на результаты выдачи может повлиять даже незакрытый тег. И не поставленный пробел после '.' перед началом нового предложения, и использование заглавных/строчных букв.
    Сейчас за попадание в выдачу по каждому запросу конкурируют тысячи сайтов, важна каждая мелочь, влияющая на ранжирование.
  • Как при клике на элемент перемещаться на нужную метку на Яндекс карте?

    @granty
    Вам надо начать мыслить событийно, иначе с Я-картами не поладить :)

    1. Уберите из вашего скрипта кусок:
    function clickGoto() {
    
            // город
            var pos = this.textContent;
            result.textContent = pos;
    
            // переходим по координатам
            myMap.panTo(destinations[pos], {
                flying: 1
            });
            return false;
        }
    
        // навешиваем обработчики
        var col = document.getElementsByClassName('goto');
        for (var i = 0, n = col.length; i < n; ++i) {
            col[i].onclick = clickGoto;
            result.textContent = result.textContent + ' ' + i;
        }
    и все продолжит работать как раньше. Клик по балуну обрабатывается мимо вашего кода (это действие Я-карт по умолчанию, которое вы не отменили при создании балунов/пласемарков).

    2. Добавьте после строки myMap.geoObjects.add(myPlacemark9);:
    myPlacemark.events.add('click', function (e) { myMap.setZoom(16, {duration: 1000}) });
     myPlacemark2.events.add('click', function (e) { myMap.setZoom(16, {duration: 1000}) });
     myPlacemark3.events.add('click', function (e) { myMap.setZoom(16, {duration: 1000}) });
     myPlacemark4.events.add('click', function (e) { myMap.setZoom(16, {duration: 1000}) });
     myPlacemark5.events.add('click', function (e) { myMap.setZoom(16, {duration: 1000}) });
     myPlacemark6.events.add('click', function (e) { myMap.setZoom(16, {duration: 1000}) });
     myPlacemark7.events.add('click', function (e) { myMap.setZoom(16, {duration: 1000}) });
     myPlacemark8.events.add('click', function (e) { myMap.setZoom(16, {duration: 1000}) });
     myPlacemark9.events.add('click', function (e) { myMap.setZoom(16, {duration: 1000}) });
    это повесит на балуны обработчики события onClick, которые будут масштабировать карту.

    3. Можете добавить в конец вашего скрипта контролл масштаба карты:
    var zoomControl = new ymaps.control.ZoomControl({
        options: {
            size: "small"
        }
    });
    myMap.controls.add(zoomControl);
    по ползунку будет видно текущий масштаб.

    PS: Так яваскрипты писать не надо, это просто отладочный кусок кода.
  • Какой код нужно добавить чтобы работало как на видео?

    @granty
    Mak_Pet, на 4-ой. Но у меня старый браузер FF 52.9, может в новых показывается другое видео :)

    Как на этой демке, только не по клику, а захватывается мышкой по drag-and-drop и вытаскивается, сдвигая вправо основной контент. Задвигает за обратно тоже по по drag-and-drop.
  • Какой код нужно добавить чтобы работало как на видео?

    @granty
    Там меню слева выдвигается мышкой по drag-and-drop.

    Но тут что-то не так:
    - студент МГТУ им Баумана
    - думает написать javascript вручную
    но при этом даже не может нормально сформулировать вопрос чего он хочет.