• Почему PHP теряет популярность?

    AleksandrB
    @AleksandrB
    PHP не мода, php - классика, а классика никогда не умирает. Если умрет php, то умрут все остальные языки backend разработки потому что появится что-то такое, что сможет в разы превзойти пхп в простоте, скорости и удобстве, на данный момент что джава, что питон, что руби +- одинаковые, каждый подходит для своих целей. Тот же питон выбирают из-за простоты интеграции нейронных сетей, но если говорить не о узких, а о главных параметрах (функционал, скорость и тд) все популярные бэк языки более или менее одинаковые смотрите те же сухие графики.
    А о уменьшении вакансий - глупость несусветная. трын тут приведена статистика за 2018 год и обоих графиках по вакансиям лидирует в сравнении с java/python PHP, при том на первых двух пишут как бэкэнд, так и миллион других штук. А на втором графике и вовсе пхп опережает js (единственный язык в самой популярной сфере разработки).

    А вот если речь идет о реально крупных компаниях (amazon, google...) там как раз предпочитают python из-за выше упомянутой простоты интеграции нейросетей.

    Меньше слушайте диванных экспертов, пхп предрекают смерть с 00-х годов, что то он слишком долго дергается для мертвеца.
    Ответ написан
  • Как правильно подключить древнюю библиотеку в современный фреймворк (PHP)?

    BoShurik
    @BoShurik
    Symfony developer
    https://getcomposer.org/doc/04-schema.md#classmap
    Положить файлики библиотеки в отдельную директорию (e.g. legacy-lib/) и прописать
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        },
        "classmap": ["legacy-lib/"]
    },
    Ответ написан
  • Что изменить/добавить на сайте?

    Zoominger
    @Zoominger
    Сись админ
    Убожество. И на рекламу похоже.
    И абсолютно не нужно в условиях существования сотни подобных сервисов с куда менее вырвиглазным интерфейсом.

    О Г-ди, зачем я перешёл в другой раздел:
    5d02941417180708806740.png
    Ответ написан
  • Что конкретно делает эта функция mysqli_real_escape_string()?

    @FanatPHP
    Это хороший вопрос, в первую очередь потому что найти человека, который знает правильный ответ, практически нереально. Опроси 10 похапешников, 10 из них тебе наплетут ереси, которая не имеет с реальностью ничего общего. Любой, кто заикнется про SQLинъекции, уже облажался.

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

    Как ты, наверное, уже знаешь, строки в SQL берутся в кавычки:
    SELECT * FROM table WHERE name='vasya'
    Вот чтобы vasya не приняли за имя таблицы или ключевое слово, его берут в кавычки. Очень просто. Но иногда у человека имя не просто вася. Что будет вот с таким запросом?
    SELECT * FROM table WHERE name='Я Д'Артаньян, а все вокруг ...'

    Мясорубка будет. БД решит, что имя - это 'Я Д', а дальше какая-то фигня, которую она не понимает. И выдаст ошибку.
    Поэтому кавычки надо экранировать.
    SELECT * FROM table WHERE name='Я Д\'Артаньян, а все ...'

    никаких ошибок не выдаст.
    Вот mysqli_real_escape_string() как раз этим и занимается - экранирует кавычку слешем, а заодно и сам слеш, потому что если слеш окажется в конце строки,
    SELECT * FROM table WHERE text='Мну сегодня в любви вкладкой ошиблись :\'

    то БД решит, что последняя кавычка экранирована, и строка не заканчивается. Снова мясорубка.
    Также mysqli_real_escape_string() экранирует еще несколько символов, но уже из чисто эстетических соображений.

    Еще одна функция этой функции - принимать в расчет кодировку текста. Есть кодировки, в который слеш - это не слеш, а часть другого символа. И когда БД будет парсить запрос, она не поймет, что это слеш, а решит что это просто буква. И снова мясорубка.
    Поэтому перед использованием mysqli_real_escape_string() надо сказать БД, в какой кодировке у нас данные, с помощью функции mysqli_set_charset().

    Но читатель уж сучит ножками в нетерпении - а что же SQL инъекции, о которых так долго говорили большевики? Не может же быть, чтобы они были совсем не при чем. Ок, в качестве побочного эффекта, строка, в которой экранированы спецсимволы (слеш и кавычка), не пропустит инъекцию. Но здесь следует понимать две вещи

    1. Строки надо форматировать в любом случае, независимо, ждем мы инъекцию, или нет. Мясорубка нам точно так же не нужна.
    2. Строками синтаксис SQL запросов не исчерпывается. Есть числовые литералы, есть имена полей. Для всех них mysqli_real_escape_string() бесполезна чуть более чем полностью.

    То есть, отсюда можно сделать вывод, что нельзя использовать mysqli_real_escape_string() для защиты от инъекций. Она предназначена для другого. Вот для этого другого, для форматирования строк, ее использовать можно. Но не нужно.

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

    В принципе, mysqli умеет так делать, но криво и неудобно. Поэтому вместо нее надо использовать PDO:
    $stmt = $pdo-prepare("SELECT * FROM table WHERE name=? or name=?")
    $stmt->execute(["Vasya", "Д'Артаньян"]);
    $rows = $stmt->fetchAll();
    - и получить, в итоге, готовый массив с данными, которые вернула БД.

    И при этом никакой тебе возни с кавычками, слешами, real, escape, и прочей ерундой. просто, быстро, лаконично и безопасно.
    Ответ написан
  • Где сейчас тусуются серьезные PHP программисты?

    @FanatPHP
    Завсит от цели, для чего это спрашивается.

    Если чтобы поприставать с нубскими вопросами - то нигде.
    Если чтобы почитать умных мыслей - РНР дайджест на Хабре прекрасно суммирует все, что было написано за две недели. У меня например никогда не хватает времени, чтобы прочесть всё. Куда больше-то - я уж и не знаю.
    Если чтобы поучаствовать в серьезном прокете - на гитхабе, выбирай любой.
    Если чтобы послушать интересные доклады и пообщаться вживую - то конференции.
    Если интересует внутренне устройство языка - то php internals.
    Если интересует, что пишут пхп селебрити про что угодно, кроме программирования - то твиттер (Расмус показывает картинки из аэропортов и роботов, которых собирает его сын, Сара постит котиков - и так далее).

    Где точно не тусуются:
    Тостер и всякие подобные ресурсы типа стаковерфлоя.
    Ну то есть специалиста можно найти, если поискать, но концентрация будет гомеопатическая, если учитывать количество восторженных щеночков, которые увидели язык вчера, и спешат срочно поделиться уже накопленным багажом знаний.
    Чаты. Телеграм, дискорд - вот это вот все.
    Самая адовая трата времени, которая в принципе бывает в жизни.
    Опять же, люди пишут о чем угодно, кроме программирования, и ради пары полезных строчек надо убить весь день.
    Ответ написан
  • Отзывы о loftshool?стоит ли учиться?

    AnatolTh
    @AnatolTh
    Full Stack Developer
    Если с нуля и если нужен наставник, то конечно стоит, либо тот же htmlacademy, либо в свободном доступе курсы Специалист.
    Ответ написан
  • Отзывы о loftshool?стоит ли учиться?

    totalcount
    @totalcount
    Про Лофт не могу ничего сказать — нет такого опыта. Но есть опыт по Нетологии и по ГикБрейнс. Нетология получше имхо, и доверяют на рынке ей больше (тоже имхо). ГикБрейнс похуже, на мой взгляд. Советовал бы все же пойти в Нетологию.
    Ответ написан
  • Объясните как работает php-fpm?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для начала почитайте что такое SAPI. Затем представьте что apache + mod_php разделили на web-сервер, который проксирует запросы на php-fpm и отдает статику, и собственно отдельный web-сервер который имплементит SAPI и выполняет запросы связанные только с php. То есть статику отдавать мы можем только через php. Суть примерно та же что и у apache2 + prefork + mod_php но оптимизированный только для работы с php. Так же можно поставить на фронт более быстрый и легковесный сервер который умеет проксировать запросы.

    То есть php-fpm это эдакий fast-cgi сервер который постоянно держит готовые для работы пул-процессов (сколько в пуле процессов настраивается, так же как и от какого пользователя их запускать и все такое прочее). Каждый новый запрос уходит в какой-либо процесс из пула, запрос отрабатывает, возвращаем результат тому кто попросил (web-серверу обычно). Если процесс падает (fatal допустим) - поднимаем новый.

    Принципиальной разницы между apache2+mod_php нету, просто упрощается инфраструктура. Наш web-сервер должен только уметь проксировать запросы и отдавать статику, а php-frpm вообще может быть на разных машинах (балансировщиком можно раскидывать запросы). Ну и сами понимаете, nginx + php-fpm будет быстрее обрабатывать запросы чем apache2+mod_php какой бы мы менеджер процессов не использовали в апаче. Минусов по сравнению с apache+mod_php я даже не могу предложить.

    А php-runtime не зависит от этого. Он один на всех, CLI, FPM, mod_php...
    Ответ написан
  • Как создать секретный ключ для API?

    mamadaliev
    @mamadaliev
    Intern Java Developer
    Согласен, вариант достаточно надежен, но я бы ещё добавил что нибудь не относящийся к стандартным переменным. Например,
    md5("{id}_{user_id}_mytext1_{friends_status}_mytext2_{application_secret}")
    Ответ написан
  • Почему не рекомендуют начинать с фриланса?

    opium
    @opium
    Просто люблю качественно работать
    Потому что процентов 95 людей не умеют правильно самообучаться и принимать сложные решения, а остальные пять процентов такие глупые вопросы на задают
    Ответ написан
  • Что подучить в добавок к PHP / JQuery веб разработчику?

    DedalX
    @DedalX Автор вопроса
    Web разработчик, IT бизнесмен
    Нашел занятную инфографику, которая поможет и мне и другим определится что еще стоит выучить:

    5b641d6e31507639641032.png
    Ответ написан
  • Как правильно использовать методы контроллера в laravel для вызова в другом контроллере?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Никак, так делать не надо. Вынесите код в класс-сервис и дёргайте его из обоих контроллеров. И вообще, логика в контроллерах это не есть хорошо.
    Ответ написан
  • Как постранично загружать большого объема pdf файл?

    webinar
    @webinar Куратор тега PHP
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Никак. Толи Вы средствами браузера его листаете, толи с помощью js, в любом случае нужен целый файл полностью.
    Поэтому думать надо в сторону, как не использовать глупости типа файлов pdf большого размера. Например разбить страницы на картинки или на отдельные файлы. И скармливать ридеру постепенно. Но у любом случае постепенно - это файл за файлом, а не кусочками кода. Это же не потоковое видео.
    Ответ написан
  • Почему не хочет подключаться к бд?

    mashletov
    @mashletov
    Math.random()
    Раскомментировать в php.ini extension= pdo_mysql. Если сервер апач, то перезапустить его.
    Ответ написан
  • Как сравнить элементы двух массивов?

    profesor08
    @profesor08
    Сравни сначала их длину, потом если одинаковая, то обойди их циклом сравнивая каждый элемент, первый с первым, второй со вторым и тд. Если тебе не понятно о чем идет речь, то сочувствия не жди и иди учись.
    Ответ написан