Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как раскодировать JSON в PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    наверное, такой вопрос и надо задавать? Не "как раскодировать json", а как удалить лишние слеши в строке?
    И внезапно ответ найдется сам собой
    Ответ написан
    Комментировать
  • При попытке записать апостроф в SQL выдает ошибку? Как это исправить?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Учить РНР надо не по написанным нубами при царе Горохе руководствам, а по нормальным учебникам.
    Или хотя бы по нормальным ответам на тостере.
    https://qna.habr.com/q/918033#answer_1847841

    Никакого $data в запросе быть не должно. Любые переменные должны отправляться в БД отдельно
    Для этого надо
    Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    Привязать переменные к запросу.
    Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $title, $discription, $date, $path);
    $stmt->execute();


    bind_param() принимает в качестве параметров все переменные, которые должны попасть в запрос, в том же самом порядке, в котором стоят плейсхолдеры в запросе. Но кроме того, сначала в этой функции должны быть указаны типы для всех переменных, в виде строки, где тип переменной обозначается одной буквой. То есть букв в этой строке должно быть ровно столько, сколько дальше будет переменных. К счастью, можно особо не париться с типами и для всех переменных указывать тип "s".

    И тогда никаких ошибок запроса уже никогда не будет. Не говоря уже про инъекции.
    Ответ написан
    2 комментария
  • Как прописать классы в php коде?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Объясняем на простом примере, как в программировании можно использовать логическое мышление.
    $description = "<div id='details-2' class='col-12 col-xl-4 col-lg-12 mb-xl-5 mb-5'><div class='d-flex b-skills'><div class='height:70px;'><div class='text-bold'>";
    echo $description,"\n";
    echo addslashes($description);

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

    И откройте уже для себя волшебные клавиши Ctrl-U
    При проблемах с генерацией хтмл, надо смотреть ровно то что нагенерил ваш код, а не те красявости, которые старательно подрисовывает к нему инспектор.
    Ответ написан
    5 комментариев
  • Почему sql запрос не выполняется?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Когда запрос спотыкается на имени таблицы или колонки, то сразу идем сюдой, и ищем наше имя колонки: https://dev.mysql.com/doc/refman/8.0/en/keywords.h... (только если после нее стоит буковка (R). Слово без неё проблем не вызывает)
    И после этого идем читать про identifier quote character, https://dev.mysql.com/doc/refman/8.0/en/identifier...
    Ответ написан
  • Замена MongoDB?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Отличный повод избавиться от этого нелепого недоразумения и начать использовать нормальную БД.
    Если речь идёт о базе данных, то выбор огромный: mysql, postgres, sqlite, sql-server, oracle
    Можно выбрать себе СУБД по вкусу, спланировать структуру БД вместо той оргии с гетерами, которая применяется в Монге и начать пользоваться.
    Если речь идет об in-memory key-value storage то выбор поменьше, о тоже есть - redis или подзабытый уже нынче мемкеш.
    Ответ написан
    Комментировать
  • Почему не работает REGEXP в mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Потому что во-первых, идиотский формат хранения "через запятую". В нормальной БД никакая регулярка не нужна и все прекрасно работает.
    Во-вторых, непонятно, с какого перепугу вообще эта странная кривизна должна работать. Что должны означать все эти развесистые баяны?
    Ответ написан
    4 комментария
  • Какие есть схемы аутентификации, не требующие ввода пароля на разных устройствах?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для мелкого проекта выходного дня можно сделать авторизацию по принципу Неуловимого Джо.
    У меня больше 10 лет работает несколько таких проектов, где авторизовываться не требуется - достаточно написать любое имя. Обычно нормальным людям не приходит в голову заниматься такими шутками как имперсонация, и всё прекрасно работает без каких-бы то ни было конфликтов или нареканий.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если я правильно понял, то здесь требуется не клон, а форк.
    То есть надо
    1. Клонировать
    2. Создать в гите новый репозиторий
    3. Сделать его апстримом к текущему коду

    git clone https://github.com/userName/Repo New_Repo
    cd New_Repo
    git remote set-url origin https://github.com/userName/New_Repo
    git remote add upstream https://github.com/userName/Repo
    git push origin master
    git push --all

    В общем все как написано тут
    Ответ написан
    4 комментария
  • Что лучше выбрать Partitioning или вынос данных в другую базу (таблицу)?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда, человек выстрелил себе в ногу, но ищет почему-то партитуру Маленькой ночной серенады Моцарта.
    Казалось бы, при чем здесь партиционирование, если проблема в том, что в БД хранятся файлы?

    Ну вот как можно быть настолько слепым, и не видеть реальной проблемы, а уноситься фантазиями в какие-то совершенно голубые дали, вообще никак не связанные с реальностью?

    Партиционирование применяется, когда в БД много строк.
    А физический размер БД не имеет значения.

    Надо во-первых, выкинуть файлы из БД
    А во-вторых, решать только реальные проблемы, а не "что-то у меня база растолстела"
    Ответ написан
    2 комментария
  • Насколько реально с нуля выучиться на информационного безопасника?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Всё в жизни достижимо.
    В 21 веке, и особенно в айти, всё можно изучить самостоятельно.
    Все знаменитые хакеры получили свои знания самостоятельно, а не на каких-то курсах.
    При этом они не спрашивали посторонних, стоит ли им это делать или сложно ли это будет сделать. Они просто делали то что им нравилось.

    Вам тоже никто не мешает заниматься тем, что нравится.
    Тут главное мотивация и целеустремлённость.
    Вам никто не мешает сесть за стол, и вместо первого письма на хабр открыть гугл, набрать бесплатные курсы по программированию, и начать осваивать его не на базовом уровне.
    Сейчас не 19 век, когда надо работать с 6 утра до 10 вечера чтобы только-только прокормиться. Свободного времени у людей вагон. Его никто не запрещает использовать на то, чтобы изучить любую специальность.

    Подобные письма на Хабре публикуются примерно раз в неделю.
    И сам факт его публикации вызывает обоснованные сомнения в успешности данного предприятия, именно в контексте ИБ, по двум причинам:
    1. Специалист по ИБ должен уметь работать с информацией. Находить её там, где её вообще нет. По каким-то косвенным крупицам восстанавливать ход событий. Не говоря уже о том, чтобы просто поднять с пола то огромное количество информации, которое открыто лежит в интернете по интересующему вопросу. В частности по вопросу "Можна мне вайти, и если да то как?"
    2. Специалист по ИБ, который занимается не бумажками (как это чаще всего бывает в реальности), а "шифрами, взломами и всем что связано", должен обладать нечеловеческой усидчивостью и умением концентрироваться. Подходить к любому вопросу основательно, и не останавливаться, пока он полностью не проработан.

    А рассуждениями лежа на диване, "как бы хорошо было, если бы вдруг от дома провести подземный ход или чрез пруд выстроить каменный мост, на котором бы были по обеим сторонам лавки" специалистами по ИБ не становятся.

    Вот монолог настоящего хакера, https://habr.com/ru/post/27055/
    Сравните его со своим "Хочу ли я?.. Могу ли я?.. "
    Ответ написан
    3 комментария
  • Как правильно составить SQL запрос SELECT PDO PHP для получения данных по двум строкам?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ написан
    Комментировать
  • Как узнать ip пользователя?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Всегда стоял стандартный говнокод, которые ламеры всего мира старательно переписывают друг у друга, не понимая его смысла. Из него надо оставить только
    $ip=$_SERVER['REMOTE_ADDR'];
    а всю остальную ересь на помойку.

    Читать тут: phpfaq.ru/tech/ip
    Ответ написан
  • Сервис по загрузке книг на английском для изучения анлийского?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я может чего-то не понимаю, но зачем для этого нужен какой-то сервис?
    Перевод ищем на рутрекере. Читаем, чтобы понимать общий контекст. Открываем оригинал, читаем, непонятные слова смотрим в гугле.

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

    Язык куда лучше усваивается, если ты читаешь связный текст. Значение большей части незнакомых слов будет понятно без всякого словаря, просто из контекста. Причем это будут нормальные, живые значения, а не какие-то огрызки, как, например, "cry", которое переводится в советских школах как "плакать". В английском практически каждое слово имеет по 2-5 значений и больше. И зубрить какое-то одно совершенно нет смысла. Слова надо учить не по отдельности, а в контексте. А связный текст как раз и даст такой контекст.

    Вот например случайное предложение, A gentle breeze wafted the scent of roses in through the open window. в нем я не знаю слово waft, но тут даже не нужно лезть в словарь - если легкий ветерок что-то через открытое окно запах роз, то это что-то - "доносил".

    Кроме того, знание отдельных слов вообще ничего не даёт. Потому что всегда важен контекст, размещение в тексте, использование в устойчивых словосочетаниях. С английским совершено нередки случаи, когда знаешь значение каждого слова в предложении, но вообще не въезжаешь в его общий смысл. Ну и смысл тогда зубрить отдельные слова?

    Опять же, чтобы это работало, читать нужно не механически, а погружаться в текст, держать в голове картинку, представлять себе, о чем идет речь. Скорее всего, воспитанные планшетами зумеры этого не умеют, но это уже другой вопрос. Если уж взялся учить английский по книжкам, то делать это надо нормально, а не способом биения головой об стенку. Здесь поможет прочитать сначала перевод. И тогда читая оригинал, уже будешь представлять себе о чем идет речь, и просто смотреть, как это описывается английскими фразами.
    Ответ написан
    Комментировать
  • При изменении значений в ячейке таблицы вылетает ошибка mysqli_query(): Couldn't fetch mysqli, где я ошибся?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Couldn't fetch mysqli возникает в том случае, если соединение с БД уже было закрыто.
    Есть такие старательные любители везде пихать mysqli_close
    Надо им всегда бить по рукам, и отучать писать эту бессмысленную строчку.
    Ответ написан
    4 комментария
  • Как организовать Unreal проект и Git?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Научиться отличать репозиторий от файлопомойки.
    2. Залить мусор на CDN, и только код поместить в репозиторий.
    Ответ написан
    4 комментария
  • Пользователь регестрирует чужую почту, как реагировать?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ничего никуда доносить не надо. В этом случае он воспользуется ссылкой "восстановить пароль".
    Ответ написан
    Комментировать
  • Есть ли способ улучшить данный код?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    можно, но для этого надо знать, откуда берется $request

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

    плюс, конкретно этот код совершенно бессмысленный, он переносит проблему на ступеньку ниже
    и теперь уже при обращении к $result будет та же самая ошибка.
    Ответ написан
    8 комментариев
  • Как искать мальварь в open source?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очень смешной вопрос. Я тоже такой могу:
    Как стать хирургом? Хочу поизучать вопрос с практической части, попробовать отрезать пациенту что-нибудь. Хочется понять хотя бы что примерно искать.
    Ответ написан
    5 комментариев
  • Как сделать уникальность получения данных при большом количестве запросов на один элемент?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    https://qna.habr.com/q/1126850

    в данном случае достаточно будет проверять affected_rows у запроса который делает сылку активированной.
    у кого вернулась 1 - тот и папа
    Ответ написан