Задать вопрос
  • Могу ли я прогнать через password_hash пароли в бд, которые md5, чтобы не сломалась авторизация?

    @alexalexes
    Смену способа хеширования пароля вы можете провернуть только при участии каждого пользователя, в два этапа.
    1 этап.
    Делаете патч в функцию авторизации.
    Когда пользователь авторизуется, проверяете, что заполнено поле по хешу новой функции.
    Если оно заполнено по новой функции, то все проверки верности пароля проводите с ней, поле старой функции игнорируете.

    Если хеш по новой функции не заполнен, то проверяете, что пароль верен с точки зрения хеша старой функции. Если верен пароль, то записываете хеш по новой функции, так как у вас есть исходный пароль.
    Так вы накапливаете базу пользователей, которые часто заходят. И для них вы бесшовно меняете хеши.

    2 этап
    Когда число поменянных хешей примерно будет равно числу активных пользователей за определенный период, то в патче запрещаете пользоваться старым хешем для проверки паролей, отправляете пользователя принудительно восстанавливать пароль по другим учетным данным, например, по эл. почте.
    При восстановлении доступа пароль хешировать новой функцией.
    Все, с этого момента можно избавиться от логики использования старого хеша.
    Ответ написан
    Комментировать
  • Можно ли настроить запросы к php через вебсокет и http одновременно?

    3. Вебсокет и unix сокет - это совершенно разные вещи. Websockets - это протокол обмена информацией по TCP/IP.
    Как работают websockets:
    - Клиент начинает с простого HTTP запроса с просьбой апгрейднуться до websockets.
    - Сервер соглашается, и тогда между Клиентом и Сервером устанавливается постоянное TCP/IP соединение, по которому данные могут ходить туда-обратно по протоколу websockets уже без кучи церемониальных ритуалов, как принято в обычном HTTP.

    1. Изначально PHP совершенно не подходил для постоянного соединения, потому что он создавался как скриптовый язык. Скрипт должен был отработать один раз и почистить все следы своего выполнения. Поэтому создатели особо не заботились об утечках памяти и т.д. В результате было очень обременительно создавать постоянно-живущие процессы, необходимые для websockets. Но в настоящее время PHP очень сильно развивается, разработчики уделяют очень много внимания такому сценарию использования языка. PHP стал производительнее и гораздо надёжнее работает с памятью. Однако, напрямую реализовывать долгоживущий сервис самому всё еще муторно, поэтому лучше всего использовать отличные сторонние фреймворки/библиотеки.

    2. Что можно использовать:
    - Ratchet
    - Swoole / OpenSwoole
    - Workerman

    У каждой из этих асинхронных библиотек/фреймворков есть свои особенности и нюансы. Но это всё очень хорошо описано в их документации, так что просто следуйте тому, что там написано, и не волнуйтесь. Советовать что-то одно не буду, потому что на вкус и цвет все фломастеры разные, и выберете то, что будет отвечать вашим конкретным задачам.
    Ответ написан
  • Как сделать веб-скрейпинг сайта?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нанять программиста.
    Ответ написан
    Комментировать
  • Как двумерный массив записать в одномерный php?

    Ge1i0N
    @Ge1i0N
    Пройдите по второму массиву в цикле и запишите как вам надо в первый массив. Запишите значения ключа Field как ключ, а info как значение, как вы и описали.

    В чем сложность, что именно не получается?
    Ответ написан
    Комментировать
  • Как добавить в скрипт заявки тему для письма?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если используете функцию mail, то должны сами озаботиться соблюдением всех стандартов. В частности, все заголовки, в том числе и тема письма, должны быть закодированы согласно RFC 2047. В заголовках допускаются только символы из ASCII-128.
    $subject = '=?UTF-8?B?' . base64_encode($pagetitle) . '?=';

    А лучше используйте PHPMailer, он сам приведёт всё в нормальный вид.
    Ответ написан
    4 комментария
  • Как получить родительскую ноду PHPSTAN?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Первый же вопрос в FAQ:

    How can the parent of a node be obtained?
    -----
    The AST does not store parent nodes by default. However, the `ParentConnectingVisitor` can be used to achieve this:
    ...
    Ответ написан
    Комментировать
  • Возможно ли сделать такие запросы-замены в таблице?

    @Everything_is_bad
    Проще написать скрипт на php, python и т.п., и уже на уровне ЯП выполнить очистку и прочую обработку.
    Ответ написан
    3 комментария
  • Есть ли в PHP оптимизация при передаче массива по значению?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Есть, называется copy-on-write.
    https://habr.com/ru/articles/226707/
    Ответ написан
    Комментировать
  • Стоит ли настраивать SELinux для Telegram?

    @Everything_is_bad
    Ты только что придумал проблему с которой будешь мужественно бороться. Псс, только никому не говори, а еще так же все куки браузера можно угнать.

    В результате взломать аккаунт можно простым копированием файла tdata
    и вот тут перепутана причина и следствие.
    Ответ написан
    Комментировать
  • Как найти удалённую работу с 20+ лет опыта в разработке?

    TrueBers
    @TrueBers
    Гуглю за еду
    Что я делаю не так?
    Например, всё.
    Уехать из России и искать работу на hh... ну, это очень непонятное решение, мягко говоря. Банковские карты поменял, место жизни поменял, а hh-помойку и мышление не поменял.

    Пробовал освоить Linkedin, но я устал от ботов и спама, забил на них. Выхлопа ноль.
    С ресурса, где 90% всех вакансий мира нет выхлопа? Очень странный вывод. Звучит как оправдание не искать работу. На LinkedIn есть всё. И блоги, и эйчары, и компании, и такие же соискатели. Можно общаться, буквально с любым сотрудником любой компании, достучаться хоть до CEO при желании.
    Про ботов вообще первый раз слышу. Ни разу не писали боты за 15+ лет аккаунта.
    hh по сравнению с LinkedIn просто земля и небо.

    Вижу 2 решения: либо вернуться в РФ и продолжать по накатанной как привык. Либо поменять мышление, избавившись от СНГшных принципов поиска работы. Создать нормальный аккаунт на LinkedIn, заняться откликами плотно, законнектиться с сетью единомышленников, подписаться на фиды интересующие. И будут сами писать по несколько эйчаров в неделю минимум.
    А уж получить минимальный оффер, в несколько раз превышающий по сумме СНГшный — дело пары недель.
    Ответ написан
    5 комментариев
  • Как найти удалённую работу с 20+ лет опыта в разработке?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Но в 2024-м что-то изменилось. Все вдруг резко стали требовать работу в офисе, либо удалённо на территории России.

    Потому что до властей предержащих вдруг дошло, что тот, кто находится вне России - не должен зарабатывать в России
    Иностранных компаний на hh.ru стало кратно меньше.

    Это разве удивительно? Удивительно то, что там они еще есть.
    Получал зарплату и криптой, и на нероссийские банковские карты.

    Желающих рисковать и подставлять свою #опу под конский МПХ государства, которое запросто может усмотреть в этих переводах финансирование терроризма - стало меньше.
    почему раньше работу находил легко, а теперь не могу найти.

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

    Ищете работу. Как Вы докажете например понетциальному работодателю, что не работаете на СБУ?
    Ответ написан
    7 комментариев
  • Где хранить ключи api используемые для тестирования открытого по?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Что-то у вас намешано.
    Юнит-тестам не нужен никакой ключ (подойдёт любая строка). Конечным пользователям не нужно тестировать пакет, разумнее его мокать.

    Но если хочется всё-таки проверить, например, корректность инициализации, то решение о том, как создавать инстанс класса библиотеки, за конечным пользователем. То есть, пользователь передаёт в конструктор какую-то строку. Где он эту строку возьмёт - зависит от конкретного приложения. Современный стандарт - заполнять контейнер конфига из ENV, а потом этот контейнер использовать. Следовательно, зашивать строку в phpunit.xml - вполне нормальное решение. Если на конкретном проекте это почему-то не работает, то нужно обсуждать предметно.
    Ответ написан
    5 комментариев
  • Что выбрать для хостинга сайта: 2 ядра до 5 ГГц или 6 ядер до 3.2 ГГц?

    @Everything_is_bad
    VDS-сервера
    берешь минимальный сервер, проверяешь нагрузку, без проблем апаешь на тариф выше, если текущий не вывозит. Повторять пока не достигнешь желаемый результат
    Ответ написан
    16 комментариев
  • Как вывести данные из связанной таблицы?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Изучить хотя-бы основы SQL
    Конкретно для данного случая - слово JOIN.
    Ответ написан
    9 комментариев
  • Как лучше сделать базу данных?

    @Everything_is_bad
    В итоге работа с этой таблицей может стать крайне затруднительной, а в последствии и не возможной.
    это ты придумал

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

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Такое ощущение, что код пропустили через какой-то markdown-редактор, который посчитал, что запись вида u.id это адрес сайта и автоматически заменил на соответствующий markdown-синтаксис ссылок. Такое может быть, например, при пересылке кода как обычного текста в мессенджерах.
    67bc7a1565357335276039.png
    Ну а малограмотный кодер вставил этот markdown-код не задумываясь.
    Так что причина - копипаста без знания синтаксиса конкретного диалекта SQL.
    Ответ написан
    1 комментарий
  • Какие есть инструменты минификации shell кода или bash-скриптов?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Таких инструментов не существует. Причем, скорее всего потому что они никому не нужны.
    Ответ написан
    Комментировать
  • Подключение класса внутри класса: Правильно ли я делаю?

    @GeKskill
    В вашем случае все работает потому что используете include_once о чем говорит само название функции, она подключает ваш класс только единожды. Если не хотите использовать composer с автозагрузчиком классов, можете в своем main файле ( откуда стартует вообще приложение ) разместить все нужные include для классов.
    Ответ написан
    Комментировать