Ответы пользователя по тегу PHP
  • Как с помощью PHP проверить существует ли номер телефона в месседжерах Viber или Telegram?

    Adamos
    @Adamos
    Вы оперируете неверными представлениями об этом API.
    Вам никто не позволит посылать сообщения произвольным пользователям.
    Только тем, кто подписался на ваш аккаунт.
    Их ID можно получить списком в get_account_info.
    И вам все-таки стоит обратиться к людям, которые умеют.
    Просто потому, что я, например, увидел это API 10 минут назад... а вы с ним без подсказок разобраться не смогли.
    Ответ написан
    5 комментариев
  • Как сделать выполнение команды каждую секунду?

    Adamos
    @Adamos
    Если поискать по аналогичным вопросам хотя бы на Тостере, легко сделать простой вывод.
    Если вам нужно сделать выполнение какого-либо действия на пыхе чаще, чем позволяет крон - значит, вы либо неверно сформулировали задачу, либо решаете ее не тем инструментом.
    Ответ написан
    Комментировать
  • Почему PNG отображается а SVG нет?

    Adamos
    @Adamos
    То, что вы назвали "ответом" - это не ответ.
    У вас, судя по всему, перед Апачем стоит Нджинкс.
    И у него прописано, что PNG - это статика, которую можно отдавать сразу по запросу.
    А SVG вы с такой настройкой отдаете Апачем, хотя и не перенаправляете в пых.
    Вам нужно все-таки указать Нджинксу, что SVG - тоже статика и ее можно просто сразу отдать, не напрягая бэк-сервер. А заодно посмотреть, что там с JS и CSS.
    Или вовсе выкинуть Апач и нормально настроить один сервер...
    Ответ написан
    Комментировать
  • Как правильно работать с мультибайтовыми строками в php7 и чем плох func_overload?

    Adamos
    @Adamos
    Для внутреннего понимания: strpos в РНР - это тупая обертка над С-функцией, принимающей в качестве аргументов два char* и выдающая в ответе количество байт, через которое второй массив байт совпал с первым.
    Она знать ничего не знает ни о каких кодировках, и это хорошо, но не то, что вам нужно.
    func_overload - это костыль для легаси-кода, в котором люди, не думающие о будущем, обрабатывают строки так, как будто они всегда будут однобайтными. Воцарение UTF-8 нарушило эту идиллию, а переписывать тонны кода зачастую просто некому - вот и подперли проблему настройкой, которая подсовывает mb_-функции вместо архаичных.
    Если вы пишете новый код и он работает со строками, а не с потоками байт - вам следует забыть об этих функциях и никогда не использовать ничего, кроме mb_*, в коде.
    Ответ написан
    6 комментариев
  • Что значит такое выражение if(0 !== 0): в php?

    Adamos
    @Adamos
    Этот блок заблокирует скрипт при условии, что он пройдет через интерпретатор РНР.
    А вот если он почему-либо обрабатывается браузером в "сыром" виде - выполнится скрипт.

    А еще в этом коде очень легко заменить один из нулей на О - и незаметно для читающего условие начнет выполняться. С предупреждением, конечно, но на проде они часто отключены...
    Ответ написан
    1 комментарий
  • Существенная ли разница между php.ini настройками и ini_set() в начале каждого скрипта, каждой страницы?

    Adamos
    @Adamos
    Не все настройки могут быть заданы в скрипте.
    Например, короткие теги - до того, как пойдет на выполнение ваша донастройка, пых уже вывалит ошибку в файле...
    Ну, а настройки, которые будут "в каждом скрипте, на каждой странице" - и вовсе ядерные грабли, положенные себе же на самой дороге.
    Ответ написан
    2 комментария
  • Как можно добавить класс на последние 8 строк таблицы?

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

    Adamos
    @Adamos
    Из здесь обсуждавшихся самый простой способ обломить ботов - скрытое поле, в которое скрипт на странице вводит длину сообщения перед отправкой. При заполнении ботами оно будет либо отсутствовать, либо пустовать.
    Капча - не помогает. Рекапча - здорово мешает пользователям, сидящим на загруженных каналах (мобильных, например). Угадывание витрин и лестниц на мутных фотках... так ли им нужен ваш сайт?
    Ответ написан
    1 комментарий
  • Как организовать обработку больших объемов данных?

    Adamos
    @Adamos
    Вообще в комбинаторных задачах хранение - самое узкое место, и в первую очередь стоит думать не о том, как его оптимизировать, а как его избежать. То есть свести алгоритм к поточной обработке данных, как только они поступили, и сразу выбрасывать те, что не актуальны для дальнейшей работы.
    Ответ написан
    2 комментария
  • В чем отличие возвращаемого массива от объектов?

    Adamos
    @Adamos
    Немного опыта и больших проектов - и понимание, чем
    function f(array &arr)
    хуже, чем
    function f(KnownObject o)
    станет простым и естественным.
    Тем более, что даже в простых проектах можно долго искать причину, по которой не работает
    echo $arr['namе'];
    Сомневающимся предлагаю определить, в чем проблема последнего примера.
    Ответ написан
    7 комментариев
  • Как сделать обработчик данных?

    Adamos
    @Adamos
    Когда пользователь регистрируется на сайте то он вводит туда свои личные данные.

    Тем самым вы просто теряете пользователей, которые не собираются заполнять анкеты без реальной на то необходимости. И вдобавок получаете в качестве данных, которые собрались впихнуть в заказ - "Красная пл., д. 1 к. 1. Ленин Владимир Ильич".
    P.S. А так-то у Битрикса есть профили пользователя (множественные, потому что заказ он может делать не только себе, но и родителям, например).
    Ответ написан
    Комментировать
  • Где лучше качество кода?

    Adamos
    @Adamos
    В порядке увеличения энтропии:
    $opinionList = $dao->getOpinionList(
        $bar['id'], 
        $_SESSION['isMobileOnly'] ? 3 : null
    );
    Ответ написан
    Комментировать
  • Какой есть 100% способ перекодировать строку в utf-8?

    Adamos
    @Adamos
    Рассматривайте закодированный текст как шифр замены. Если у вас в этом тексте предполагаются русские слова - частотным анализом и сопоставлением буквенных пар легко определяется тот вариант перекодирования, который выдает реальный текст.
    Ответ написан
    Комментировать
  • Как указать путь за пределами корня в PHP?

    Adamos
    @Adamos
    $_SERVER['DOCUMENT_ROOT'] === 'localhost/web'?
    Тогда вы не можете выдать этот файл веб-сервером напрямую, по ссылке.
    Собственно, обычно так и делается, если вы хотите выдавать файл только избранным.
    Пых позволяет либо загрузить этот файл и выдать пользователю его содержимое, либо создать на него временную ссылку в пределах веб-сервера (localhost/web/links/, например) и отдать пользователю уже ее.
    Ответ написан
    Комментировать
  • Оптимальная обработка на php содержимого большого количества файлов?

    Adamos
    @Adamos
    grep/sed/awk по крону. Результаты скидывать в папочку, которую уже будет разбирать пых.
    Ответ написан
    3 комментария
  • Есть ли готовые решения для сайта по работе с таблицами на подобие exсel?

    Adamos
    @Adamos
    Заказчики не могут выйти из плоскости - они ни черта, кроме Ёкселя, не видели, и не представляют себе, что данные можно обрабатывать по-другому. Покажите ему какие-нибудь CRM и попробуйте вместе понять, какие данные ему реально нужно обрабатывать и как. И ему польза, и вам работа...
    Ответ написан
    3 комментария
  • Как использовать кириллицу при создании XML?

    Adamos
    @Adamos
    Первая же ссылка в гугле:
    https://copist.ru/ru/blog/2014/03/04/simplexml-and...
    Ответ написан
    Комментировать
  • Стоит ли передавать значение переменной из php в js?

    Adamos
    @Adamos
    window.myPurposes = {
      someVar: <?php echo $some_value;?>;
    }

    Просто чтобы не засорять глобальное пространство. Ну, и со временем туда же можно ввалить функции и прочее.
    А можно, как уже отметили, сделать и
    window.myPurposes = <?php echo json_encode($arr); ?>;
    Ответ написан
    Комментировать
  • Как обновлять массив данных по мере завершения циклов в коде PHP?

    Adamos
    @Adamos
    Во-первых, четыре одинаковых цикла не имеют смысла - их стоит объединить в один вложенный, прописав таблично отличия в полях формируемого объекта.
    Во-вторых, я бы собирал в цикле изменения и дополнения для БД, а уже потом их вносил - просто чтобы не делать Update одного и того же элемента четырежды, как может произойти у вас.
    Ну, и если вам так нужен поиск по артикулу - так собирайте данные в массив, ключи которого - те самые артикулы, поиск сильно облегчится ;)
    Ответ написан
    Комментировать
  • Классы, объекты, шаблоны - как правильно!?

    Adamos
    @Adamos
    Как именно я должен хранить данные конфига?!

    Смотрите. У вас есть конфиг, есть классы, которым нужно получить данные этого конфига.
    Как именно он хранится - эти классы не знают и знать не желают.
    Потому что вы сделали класс конфига, у которого есть внешние функции "получить нужные данные" и внутренний механизм, который реально берет их оттуда, где они хранятся. Это же ООП.
    Мне нужно сделать это через класс с ограничением видимости или как-то еще?

    Да, внутренняя часть делается через ограничение protected / private
    Если это будет класс, нужно ли в данном случае использовать конструктор?

    Если данные, например, хранятся в базе и один раз считываются из нее в кэш, из которого уже и отдаются по каждому запросу - логично сделать это в конструкторе. Если у вас просто простыня РНР-массива, обращение к которому ничего не стоит - он может быть статикой, и методы тоже. Но лучше сразу предполагать, что все может измениться и сделать пустой конструктор и нестатические методы даже в этом случае. Чтобы потом не переписывать те классы, которые обращаются за данными.
    Ответ написан
    Комментировать