Ответы пользователя по тегу PHP
  • Кто знает, есть ли уже какие-то готовые решения (CMS) на PHP7?

    Adamos
    @Adamos
    А что, еще есть CMS на PHP (кроме Битрикса), не отрапортовавшие о готовности свежей версии работать на РНР7?
    Ответ написан
    3 комментария
  • Как решить проблему кодировки в zip архиве php с ubuntu на windows?

    Adamos
    @Adamos
    А что вы "пробовали перекодировать"?
    Проблема только в том, что zip хранит имена файлов в однобайтовой кодировке, и на русских виндах это cp1251.
    Содержимое файлов архивируется совершенно одинаково.
    Так что достаточно не называть архивируемые файлы кириллицей.
    Ответ написан
    Комментировать
  • Как вы бы ускорили этот php код?

    Adamos
    @Adamos
    Не стоит тратить свою юность на mysql_ - функции. Они мало того, что ужасны, так еще и устарели.
    Пока вам не требуется сложная работа с базой, можно пожить, например, с SafeMySQL. Это, конечно, не панацея и в перспективе вообще тупик, но по сравнению со спагетти из функций - радость и благорастворение воздухов.

    Не стоит мешать код и верстку. Рано или поздно все равно дойдете до их разделения, лучше рано. Сначала весь PHP: подготовьте все данные, которые будут выведены. Потом пошла страница с минимальными вставками уже подготовленных данных. Максимум допустимой логики - вывод данных в цикле.

    Если у вас тяжелые внешние ссылки, сделайте ленивую загрузку. Хотя бы элементарно - выводите страницу со всей версткой, но без конкретики, а в конце пишите javascript, который назначает конкретным картинкам конкретные src. Это несложно, правда. Впрочем, если для этого познакомиться хотя бы и с общеизвестным JQuery, все станет еще проще...
    Ответ написан
    Комментировать
  • Как сделать автоматическую карту сайта php?

    Adamos
    @Adamos
    Вам нужна та карта сайта, которая для пользователей - или sitemap.xml, которая для поисковиков?
    Первая должна бы строиться самой CMS, если у нее внутри не бардак.
    Вторая делается элементарно скриптом Google Sitemap Gen по логам сервера.
    Ответ написан
  • Как разбить большую функцию на несколько мелких?

    Adamos
    @Adamos
    Архитектура измеряется не длиной функций, а их назначением. Функция, выполняющая ровно одну задачу, обычно и не будет длинной.
    Подойдите к вопросу со стороны тестирования. Вас устроит тест этой функции как единого черного ящика? Или у нее есть конкретные части, которые выполняют полноценные подзадачи, под которые хорошо бы иметь отдельный тест на случай, если в функции будут изменения? Если нет и у вас просто однородная простыня - разбивать незачем. Если есть - почему нет?
    Ну, а если вас смущает накопление никому больше не нужных функций - вспомните, что в РНР есть ООП и все это может быть собрано в класс, а нигде больше не используемые функции - сделаны приватными.
    Ответ написан
    Комментировать
  • Как оптимизировать время сайта?

    Adamos
    @Adamos
    var t = new Date();
    t.setTime(<?= strtotime('now') ?>);
    write(t.toLocaleTimeString());
    Ответ написан
    Комментировать
  • Как правильно настроить AJAX и mPDF?

    Adamos
    @Adamos
    Вы не используете возврат ajax-запроса (в котором, собственно, тот самый pdf).
    Собственно, для скачивания файла проще как раз сделать submit динамически заполненной формы - ajax здесь ни к чему.
    Ответ написан
    Комментировать
  • Как выгнать ботов из анонимного чата?

    Adamos
    @Adamos
    Юзерам ведь тоже надоели спамеры?
    Так дайте зарегистрированным пользователям возможность попросить полномочия модератора-спамореза, способного единолично, одной кнопкой, скрыть любое сообщение от анонима.
    Адекватным завсегдатаям - дайте.
    Останется вам только отслеживать злоупотребляющих этим делом и отбирать у них плюсометы.
    Ответ написан
    Комментировать
  • Дубли страниц из-за комментариев, как убрать?

    Adamos
    @Adamos
    Сделайте sitemap - автоматически, указав в настройках скрипта пропуск таких ключей.
    И скормите его поисковикам.

    Ну, и то, что ссылка на ту же самую страничку идет через get-параметр, а не через # - неаккуратненько...
    Ответ написан
  • Функция вызывает сама себя и через несколько тактов "падает", что можно с этим сделать?

    Adamos
    @Adamos
    Рекурсии сплошь и рядом можно развернуть в цикл.
    Однако если она у вас уже через несколько тактов падает, вы, видимо, создаете в ней кучу новых объектов, которые ей приходится хранить до конца рекурсии?
    Так с пыхом нельзя...
    Ответ написан
    Комментировать
  • Комментарии кода на русском - это плохо?

    Adamos
    @Adamos
    Кириллица в РНР - вообще не очень хорошо.
    Если вам доведется как-нибудь перевести проект с cp1251 на utf8 или обратно - прочувствуете, почему...
    Ну, и пара мелочей:
    1. ($array != $аггау) === true. Сами догадаетесь, почему?
    2. Вам же оплачивают ваше время работы? Добавьте к нему бесплатную практику в английском - думая о процессе по-английски, называя переменные по-английски, добавляя комментарии по-английски. Гугля, если понадобится, на английском... Со временем вы не только прокачаете язык, но и действительно будете думать о коде в английских терминах. Не понадобится переключать контекст в голове. А это дольше, чем переключение раскладки, даже если вы этого не замечаете.
    Ответ написан
  • Как проще всего перетянуть шаблон на битриксе?

    Adamos
    @Adamos
    Завести применение нового шаблона на условие (какой-нибудь ключ в GET).
    В Битриксе по умолчанию так сделан шаблон "для печати", например.
    Отладить. Оттестировать.
    Применить ко всему сайту.
    Ответ написан
  • Редирект в Paypal после удачной оплаты и получение платежной инфо: как изменить метод?

    Adamos
    @Adamos
    Любая современная платежная система работает так:
    - клиент на сайте хочет за что-то заплатить
    - сайт формирует заказ под уникальным номером, сохраняя, кто, что и за какую сумму оплачивает
    - клиент отправляется на сайт платежной системы с номером заказа и его ценой
    - если клиент оплатил этот заказ, платежная система возвращает его на сайт, но это НЕВАЖНО
    - потому что некоторые платежи могут час идти от клиента до платежной системы (хотя к PP это, может быть, и не относится)
    - когда ПС удостоверится, что клиент оплатил заказ, она дергает скрипт на нашем сайте, сообщая ему, что заказ номер такой-то проплачен такой-то суммой. Тут может быть предварительное подтверждение, что этот заказ стоит именно столько - только при этом условии с клиента вообще что-либо снимется. Но в любом случае информацию о том, что заказ проплачен, на сайт приносит не браузер пользователя (это дырища), а сервер ПС
    - когда клиент заходит после этого на сайт, сайт уже в курсе, что этот клиент проплатил этот заказ, и действует соответственно

    Любые прочие "быстрые кнопки" или велосипеды - это несерьезно и, вполне возможно, уязвимо для халявщиков.
    Ответ написан
    Комментировать
  • Как лучше зашифровать URL?

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

    Adamos
    @Adamos
    Я бы сделал кроме личных сообщений - оповещения (те, которые всем). Можно в той же таблице, просто с нулевым адресатом.
    И к ним дополнительную таблицу - последний id оповещения, которое получил пользователь.
    Все оповещения, которые еще им не были получены, выдаются ему при первом же входе, при этом в таблицу заносится id последнего выданного.
    Хотя им неплохо бы и срок жизни иметь - через год-два смысла в них точно не будет...
    Ответ написан
    Комментировать
  • Существуют ли универсальный framework на PHP активно использующий ООП для разбора, импорта и экспорта таблиц?

    Adamos
    @Adamos
    Проблема, собственно, не в том, что CMS разные.
    Проблема в том, что Ёксель - это не данные. Это всего лишь таблицы.
    А чтобы "творить чудеса", на вход все-таки нужно получать данные.
    Так что единственный путь, который хоть куда-нибудь ведет - это отбрасывание костылей и исключение Ёкселя из техпроцесса в принципе.
    Пока это не сделано - портянки и головная боль неизбежны.
    Ответ написан
    4 комментария
  • Шифрование пароля от БД на сервере?

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

    Пароль БД не защищают от администратора сервера, его защищают от пользователей веб-сервера. Для этого шифрование не требуется.
    Ответ написан
    Комментировать
  • Как наити участки кода где идет большая задержка?

    Adamos
    @Adamos
    1. Сделайте отчет не в PhpExcel, а просто в HTML.
    2. Если и он делается долго - проверяйте логику, вставляя сверку microtime.
    3. Когда добъетесь быстрого вывода отчета, сохраните этот HTML в файл с расширением XLS и не связывайтесь со всякими убогими форматами.
    Ответ написан
  • Xорошие статьи про защиту в php?

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

    Adamos
    @Adamos
    Использование VCS в разработке - это Закон. Разве мы не люди? ;)

    Если нет, можете запустить какой-нибудь Meld, открыть удаленную и локальную папки и устранять различия вручную. Зато все изменения под личным контролем...
    Ответ написан
    Комментировать