• Централизованное обновление нескольких сайтов?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    Git/*, Composer. Я думаю есть множество разных способов это сделать
    Ответ написан
    Комментировать
  • Как решить проблему с конкуренцией запросов на чтение в PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для начала, вопрос получает приз за самый нерелевантный заголовок. Конечно же, дело в скорости работы условных операторов в РНР.

    А тебе нужна блокировка на чтение
    START TRANSACTION;
    SELECT views FROM page where id=1 FOR UPDATE;

    Заблокирует тебе строку на чтение и запись. Дальше можешь ее апдейтить и коммитить. После этого следующий, кто успеет схватить блокировку, заставить остальных ждать. И так далее.

    Господь, жги.
    Эту толпу обезьян уже не спасти.
    Ответ написан
  • Поможет ли такой php-код защититься от sql-инъекций и XSS, какие в нём есть уязвимости?

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

    Но самый, конечно ад - это ответы.

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

    Тем, кто предлагает отрезать кавычки от quote, надо самим что-нибудь отрезать.

    И это неловкое чувство, когда 2015 году слышишь самую заветную мантру мадагаскарских гамадрилов: "mysql_real_escape_string зашышает от ынъекцый!". Стоит, блин, такой "устаревший", но еще крепкий архангел с пылающим мечом, и разит супостата прямо в темечко - вот так представляет себе принцип работы этой функции средний пользователь похапе.
    Ответ написан
    Комментировать
  • Как защитить пароль при передаче формы на сервер?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Три ответа и куча лайков.
    Что характерно, если тех же самых людей спросить, надо ли хэшировать пароли на сервере - все дружно, строем и хором ответят - НУЖНО!

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

    Это квинтессенция подобныйх сайтов. Ответ почему-то всегда даётся самый буквальный. При этом вопрос никогда не подвергается сомнению или хотя бы минимальной проверке на осмысленность. Такое ощущение, что отвечающие воспринимают вопрос как экзамен что ли? Или как челендж - ответить любой ценой, пусть даже и неимоверных извращений и ГАРАНТИРОВАННЫХ граблей в будущем. Или - как сейчас - ценой СНИЖЕНИЯ защищенности! Но зато ответ буквальный. И так не только здесь - так практически в любом ответе. Ну никогда ни у кого не твремени задуматься над вопросом - все торопятся отвечать.

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

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

    Перед тем как отвечать, НАДО СНАЧАЛА ПОДУМАТЬ. Посчитать на ход вперед - "а что будет, если сделать, как я советую?" Посчитать на ход назад - "а зачем ему нужно это? Не похож ли этот вопрос на мой собственный, который я когда-то задавал от недостатка знаний?" И попробовать ответить так, чтобы РЕАЛЬНО помочь спрашивающему, а не просто выдать зазубренный ответ.

    Возвращаясь к вопросу: нет, нельзя без SSL. Хэширование на сервере важнее.
    Можно эмулировать SSL для передачи пароля, но куда проще воспользоваться готовым механизмом. На дворе 2014 год, все основные сайты перешли на шифрование всего трафика вообще. Пора переставать бояться SSL.
    Ответ написан
    11 комментариев
  • Какой PHP-фрэймворк выбрать для REST-сервисов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Symfony2 + FOS/Rest + JMS/Serializer + Doctrine. Для очень простых штук возможно избыточно, но покрывает все кейсы. Для чего-то маленького мне нравится использовать Silex.

    Отдельно посмотрите в сторону HTTP Middlewares. Их можно поставить на любое приложение на базе HttpKernel (то есть Symfony2, Silex, Laravel и т.д.)

    stackphp.com

    Среди мидлваров вас могут заинтересовать OAuth (для авторизации) и CORS. Ну и можно свои полностью реюзабельные компоненты делать.
    Ответ написан
    Комментировать
  • Как сделать фреймворк с архитектурой как в Yii?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    наплюйте на принципы единой ответственности и инверсии зависимостей, влепите сингелтон и вуаля! Ах да, и не забудьте про один базовый класс аля CObject или CComponent для вообще всего что есть во фреймворке (ну или в большей части его частей).

    А если серьезно, то зачем? В целях обучения? Если так, то может имеет смысл сразу почитать литературу на эту тему? Сразу больше всего откроете для себя.
    Ответ написан
    2 комментария
  • Как перенести данные с одной базы в другую?

    metamorph
    @metamorph
    Сколько безысходности в одном коротком посте...
    Ответ написан
    2 комментария
  • PHP extension с автовызовом при запуске процесса PHP

    miraage
    @miraage
    Старый прогер
    Посмотрите в сторону pinba, zabbix.
    Ответ написан
    Комментировать
  • Как сделать «фоновый» парсинг?

    @lnked
    cron!
    Ответ написан
    Комментировать
  • Что должно быть на рабочем столе у верстальщика?

    Если под рабочим столом иметь ввиду стол, на котором лежат клавиатура, мышь, то самое полезное это обычный калькулятор. Самое то вычитать складывать пиксели.
    Ответ написан
    Комментировать
  • Стоит ли использовать MongoDB?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    MongoDB поудобнее будет для вашей задачи, причем на производительности минимально скажется.
    Ответ написан
    3 комментария
  • Какими условными операторами лучше воспользоваться если функция имеет 2 определенных сценария и третий сценарий по умолчанию?

    shineblu
    @shineblu
    Добрый день,

    +1 за switch-case, т.к. мало ли какие-новые параметры/типы книг Вы захотите добавить

    Успехов!
    Ответ написан
    Комментировать
  • Как высчитывается такая математическая задача?

    это просто бред
    Ответ написан
    Комментировать
  • Стоит ли переходить ли на OpenCart с PHPShop?

    nowm
    @nowm
    В целом, насколько я вижу из своего опыта (я «переезжал» сайты с Bitrix, WebAsyst и Shop-Script), переезд на Опенкарт может обойтись примерно в 17-20 тысяч (миграция категорий/товаров/производителей/атрибутов/опций, создание/миграция шаблона).

    Сам движок вообще прикольный, хотя в нём до сих пор используется mysql-функции. Я недавно пытался сделать пулл-реквест, который нормально организовывал поддержку PDO с обратной совместимостью, но Даниэль меня, образно говоря, послал нахер (даже при условии, что несколько человек меня поддержали), и я что-то теперь разочаровался в этом движке, хотя целый год вообще работал только с ним — излазал вдоль и поперёк, делал кучу архитектурных усовершенствований для клиентов, писал модули.

    Сорри за лирическое отступление — я всё никак не найду, кому поплакаться в жилетку. :)

    Реально ли вообще построить на Open Cart серьезный проект?

    Да, на Opencart вполне возможно построить серьёзный магазин. У него большой плюс в том, что модули к нему можно очень легко и быстро писать. Даже, в принципе, начинающий программист может с этим справиться. И людей, которые что-то дорабатывают/пишут, очень много. Много всего можно найти на opencartforum.ru.

    С какими проблемами можно столкнуться в первое время?

    В первое время можно столкнуться с тем, что он будет тормозить на большом количестве продуктов и категорий. Он всё время пытается считать количество товаров в каждой категории, даже если в настройках это отключено. В официальный репозиторий больше года назад была принята правка, которая этот момент исправляет, но почему-то в последние версии эта правка так и не попала, как я вижу (и в v1.5.6 и в v1.5.6.1 эта недоработка всё ещё присутствует). Если этот момент исправить, скорость поразительно увеличивается. Я один раз умудрился $150 заработать на этом моменте — за пару минут работы. Там всего-то две небольшие правки сделать нужно.

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

    Какие могут быть размеры вложений для исправления основных проблем этой CMS?

    150 долларов — это была удача. Вообще, цена такой правки — примерно рублей 500, но вы наверняка можете и дешевле найти на профильных ресурсах. В MaxyStore, кажется, вообще этот момент поправлен. Так что он вполне нормально будет из коробки работать, и никаких основных проблем исправлять вообще не придётся.

    Оправданы ли мои опасения насчет того, что бесплатный продукт может принести слишком много проблем?

    Продукт продукту рознь. Сам Opencart особенно много проблем вам не принесёт. Но проблемы могут принести дополнительные модули. У Opencart довольно-таки низкий порог вхождения, поэтому качество кода может быть ужасным. Один модуль может начисто убить весь jQuery на странице. Другой сделает так, что у вас отзывы о продукте не будут отправляться. Третий (от какого-нибудь французского разработчика, который очень любит делать навигационные модули) будет на каждый пук дёргать базу данных, генерируя по 86 дополнительных запросов к БД на одной странице. Вообще, в ситуации с Опенкартом, лучше постоянно работать с одним и тем же программистом, который будет и модули устанавливать и дорабатывать и ошибки устранять и т.д. Мороки будет меньше, потому что на русскоязычных ресурсах расспрашивать, почему выскакивает такая-то и такая-то ошибка — неблагодарное дело.

    Есть проект MaxyStore на основе OpenCart - может стоит взглянуть в его сторону или нет смысла?

    Попробуйте ещё посмотреть в сторону ocStore с сайта opencartforum.ru. Мне кажется, что он немного лучше. С позиции разработчика мне лично MaxyStore не нравится. Я не могу внятно описать причины, но в ситуации, когда есть выбор между MaxyStore и Opencart, я однозначно выберу Opencart.

    У таких сборок, как MaxyStore и ocStore плюс в том, что они интегрируют много полезных модулей.

    Минусы. Они часто отстают по версиям на 1-2 релиза. К примеру, какой-нибудь новейший ***Store может быть основан на версии Opencart, которая вышла больше года назад.

    Зачастую финтиклюшки, которые разработчики сборок добавляют в ядро, замедляют работу движка. Как я вижу (может быть я не прав), разработчики движков на основе Opencart больше внимания уделяют внешнему виду, а не архитектурным вопросам, которые позволят повысить скорость или безопасность. А если они и начинают заниматься архитектурными вопросами, то движок частично теряет совместимость с модулями, написанными для оригинального Opencart.

    На какие еще CMS стоит обратить внимания, учитывая мои требования?

    Я вообще после того, как мой пул-реквест отшили, решил вообще больше не заниматься Opencart (такой вот я чувствительный) и перейти на разработку для Magento. Из всех движков, о которых я слышал (или которые щупал) он мне больше всего нравится. Хотя, вообще-то, я не так уж и много движков щупал.
    Ответ написан
    3 комментария
  • Как сделать автозагрузку с помощью spl_autoload() и namespace'ов, не регистрируя функцию spl_autoload?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    composer и psr-4 (или psr-0). Пора идти в ногу со временем.

    Поясню, вам никто не мешает использовать composer, достаточно просто один раз сгенерировать загрузчик, либо посмотореть как это реализовано там. Без spl_autoload_register не обойтись, так как spl_autoload будет искать только в include директориях и не более того. Он не будет учитывать namespace.
    Ответ написан
    3 комментария
  • Можно ли использовать break в конструкции if?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    break используется для «выхода» из блоков for, foreach, while, do-while или switch, как пишет документация. Так что пропустить следующие в блоке if{...} инструкции не получится, если только этот if не находится внутри одной из вышеперечисленных легитимных структур.

    Аналогичный вопрос на SO. Там рекомендуют в случае крайней необходимости обернуть всё в do{...} while(0).
    Ответ написан
    Комментировать
  • Какой фреймворк php лучше для средних и highload проектов?

    Перестал следить за Yii, раньше только на нем писал, сейчас же Yii2 на сколько я знаю еще в бета-версии и не совсем стабилен, поэтому я бы не стал использовать его для фундаментальных проектов. На данный момент использую Symfony2, мне нравится этот фреймворк своей масштабируемостью и модульностью. Из легковесных мог бы посоветовать laravel - его сейчас хвалят, но я не стал его дальше осваивать, ибо устал метаться, остановился на Symfony. Также использовал CodeIgniter, понравился своей простотой в освоении, кстати на основе него написан очень хороший движок интернет-магазина ImageCMS
    Ответ написан
    Комментировать
  • PHP while последний элемент

    egor_nullptr
    @egor_nullptr
    $strings = [];
    while ($res = mysql_fetch_assoc($req)) {
        $strings[] = sprintf('{"id" : "%d", "sd" : "%s", "ds" : "%s"}', $res['id'], $res['sd'], $res['ds']);
    };
    
    echo implode(',', $strings) . ';';
    Ответ написан
    1 комментарий
  • PHP while последний элемент

    @tushev
    Если вы пытаетесь сделать вывод в формате JSON, то может быть лучше сначала запихать выборку из БД в массив-таблицу, а потом вывести все через json_encode().
    Ответ написан
    1 комментарий