Ответы пользователя по тегу PHP
  • Какой интерфейс ReadOnly настроек выбрать?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    То, что вы ищите обычно называют не мутабельными моделями.

    Все настройки задаются в конструкторе, там же они валидируются и присваиваются приватным свойствам. Сеттеров нет, только геттеры (вариант 3).

    Конкретно для настроек имеет смысл создать класс с константами, например в таком виде:

    config/AbstractConstant.php - общие настройки для всей системы И настройками "по умолчанию".
    config/Constant.php (Наследует AbstractConstant) - это класс содержит настройки для текущего окружения.

    В итоге в любой части системы вы получите доступ к настройкам примерно так:
    \Contant::MYSQL_USER
    Ответ написан
  • Как защитить сайт от вредоносных атак?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1. Пользователь всегда врет. Все без исключения входящие данные ОБЯЗАТЕЛЬНО должны валидироваться, в случае ошибки - шлем на йух.
    2. Для средних систем - вполне норм подход: во всех публичных методах выполнять обязательную проверку всех аргументов простых типов, чуть что не так - исключение. Так как проверок будет море - критично время их выполнения, можете посмотреть мой проектик: https://github.com/ko-ko-ko/php-assert

    Пример использования:
    /**
     * @param string $login
     * @param string $password
     * 
     * @return int
     * @throws \InvalidArgumentException
     */
    public function login($login, $password)
    {
        Assert::assert($login, 'login')->lengthBetween(4, 16);
        Assert::assert($password, 'password')->lengthBetween(6, 20);
        
        // Business logic here
    }

    Код конечно после таких действий не самый красивый, но надежный. В случае действительно крупного проекта - вполне норм делать проверки в приватных и защищенных методах. Многомерные массивы как аргументы методов можно использовать только в безвыходных ситуациях.
    3. Гетеры и Сеттеры - обязательно. По хорошему классов с публичными свойствами быть не должно.
    4. Права на запуск ТОЛЬКО у точек входа, например index.php.
    5. Log - твой друг. Каждое исключение обязательно должно сохраняться для выяснения причин.
    6. Жесткая блокировка типов запросов. Например на главной - только GET, на login - только POST.
    7. По хорошему в мир должен смотреть только 80/443 порты.
    8. Блокировка сканнеров - в случае подключения запросов на то, чего у вас нет публично, pma (phpmyadmin) например - банить по ip на час, или больше. *Если у вас таки есть публичный pma - сами себе злобные буратины))
    9. По хорошему - стоит снимать метрики работоспособности вашей системы, например в zabbix, это косвенно решает проблему безопасности: отклонение метрик - маячок.
    10. Система контроля версий на проде обязательна, но с заблокированным push + системные файлы vcs закрыты для мира.
    11. Доступ к проду только у сисадмина и тим лида.
    12. Ручные правки кода в не релизное время выполняет тимлид и только после апрува руководства. Эти правки ОБЯЗАТЕЛЬНО должны быть сохранены в репозиторий в ближайшее время, например в течении 3-х дней.
    Ответ написан
    1 комментарий
  • Чего не хватает сервису?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    С точки зрения бизнеса ваш проект опасен. Передавать трафик третьему лицу (т.е. вашему сервису), вместо того что бы выполнять эту задачу собственными силами как-то не правильно. Тот же даже очень нагруженный чат реализуется через сервера очередей, или кластер redis(pub/sub) с нодой на фронте.

    Тема пожертвований - это конечно мило, но что вам мешает помимо целевых сообщений, передавать еще например рекламу? Сам пользователь будет думать, что это либо его собеседник, либо мой сервис, про hawk он даже не будет иметь ни малейшего представления.
    Ответ написан
  • Знаете ли вы хорошие русскоязычные блоги или сайты по PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Ответ написан
    Комментировать
  • Как исправить синтаксическую ошибку?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Дата рождения: ".$row['day']." ".$row['month']." ".$row['year']"

    Предпоследний символ, не хватает точки.

    В остальном - noooooooo, в смысле кровь из глаз.
    Ответ написан
    Комментировать
  • Есть ли подводный камень у данной конструкции?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Не плохо бы еще проверять тип, например $x может быть строкой, но после вашего условия вы будете считать, что это int.
    Прочитайте требования к оформлению кода PSR-2
    if ( !isset($x) )
        $x = 123;

    Такая конструкция - признак очень плохого тона.

    В вашем случае я бы использовал тернарный оператор
    Ответ написан
  • Возможно ли исправить?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    охтыжёб...
    Парень, заклинаю тебя, пока не поздно, изучи MVC + PSR + не используй deprecated функции mysql_*.

    Конкретно по вопросу: можешь сделать проверку входных параметров, если каких-то не хватает - редиректить на основную страницу.

    Возьмите любой сайт, где есть выборка и там будет типа

    Дело говоришь, посмотри любой фреймворк, реализующий это)) не обязательно эл. магазин, вывод таблиц есть практически всюду, не смотри CodeIgniter - это говно мамонта, которое приучает к ущербным практикам практикам
    Ответ написан
    5 комментариев
  • Где достать обфускатор для сайта, чтобы можно было из php шифровать html содержимое?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Ctrl+Shift+I вы тоже собираетесь обфусцировать? Зачем? Эти данные вы передали клиенту, тот, кто захочет - взломает, остальным мягко говоря насрат*
    Ответ написан
    6 комментариев
  • Стоит ли начинать стартап?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Не используйте слово "стартап", если можно найти хотя бы один аналог вашей идее.

    Смысла в еще одном конструкторе сайтов особо нет.
    Ответ написан
    Комментировать
  • Какой выбрать язык для серверной части highload проекта?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    С нодой очень вероятно - хлебнете горя на утечках памяти. Нода - конечно не плохая штука, но вы должны понимать, что ограничены N потоков запросов к БД, где N - количество CPU(в случае, если модуль кластер использовать не будете N = 1). То, что касается IO - нода очень даже синхронная.
    На счет C++ - будьте осторожны, скорость разработки и поддержка вероятно будут больным вопросом.
    На счет питона ничего не скажу.
    Можете посмотреть в сторону Golang или Java.

    Вообще говоря - нельзя подбирать технологию по паре абстракций типа "работа с postgre", "логика проекта", "highload")) Это как подбирать пароль зная, что но был написан на желтой бумажке. Слишком мало информации.

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1. Отформатировать, например в PHPStorm
    2. Под виртуалкой запустить с XDebug
    3. Осознать
    Ответ написан
    Комментировать
  • Как выполнить php код при нажатии?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Конечно можно. Для этого вам потребуется написать интерпретатор php на js и запустить его в браузере. Это всего каких-то 10+ человеко-лет работы.
    Ответ написан
    Комментировать
  • Как со 100% точностью определить ОС телефона?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    По серым данным приходящим от клиента вы хотите 100% точности и правильности?)))
    Ответ написан
    Комментировать
  • Каков план личностного развития Senior PHP Developer'а?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Если вы идете на php-шника, тавтология конечно, но - идите на php-шника)). Если задумали дауншифтниг до юниора ruby - тогда ищите соответствующие вакансии. В крайнем случае, если компания - "боди-шоп", и есть множество разнообразных проектов - используйте это как аргумент.
    Ответ написан
    Комментировать
  • Свой шаблонизатор на php?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Осиль twig, или smarty, лучше все равно не напишешь.

    Например требуется вывод всех групп из таблицы БД в цикле foreach.

    Шаблон работает с БД на прямую? Меняй драг диллера))
    Ответ написан
    Комментировать
  • Как лучше хранить остатки товаров?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Зачем вам это в бэкенде? Вы в любом случае полностью зависите от пользовательской куки. Если человек зайдет с другого браузера вы его отличить не сможете.

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

    Товар лучше сделайте чем-то "не делимым", остальное - это уже группы товаров.
    Ответ написан
  • Как установить PHP 5.4 на Ubuntu Server 14.04?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    askubuntu.com/questions/50344/how-to-have-two-vers...

    Но лучше под каждый проект - окружение на vagrant, или docker
    Ответ написан
  • CMS или писать движок самому?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1. Под какую нагрузку рассчитываете?
    2. Чем не подходит вариант нанять опытных программистов?
    Ответ написан
    Комментировать
  • HMVC vs? Есть альтернатива, для высоконагруженного проекта?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Просмотри в сторону SOA (OnYourLips) написал. Следующий шаг - микросервисные решения
    Ответ написан
    2 комментария