• Освобождается ли память?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В общем, зависит от того, какие именно данные лежат в массиве.
    Если всякая мелочь типа чисел, то не уменьшается.
    Если что-то другое - то уменьшается.

    Но если память настолько критична, то в первую очередь не должно быть массива исходно.
    Вместо того чтобы получать данные все скопом в массив, их брать и обрабатывать по одной строчке.
    Ответ написан
  • Возможно ли переопределить статический метод?

    Adamos
    @Adamos
    static public function method($parameter1, $parameter2 = null) {
      if($parameter2 === null) {
        // your first method code
      } else {
        // your second method code
      }
    }
    Ответ написан
    2 комментария
  • Как сделать неодинаковое количество записей в двух столбцах mysql?

    @zhaar
    Фигня такой подход - появится еще одна мадам, придется переделывать структуру таблицы?
    Делаешь 2 таблицы - users и messages
    users
    id, name

    messages
    userid, msgid, message

    и работаешь с ними через джойны.
    Ответ написан
    Комментировать
  • Звонки из WebCRM?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Стандартное решение - обратный вызов. Можно организовать через call-файлы, AMI Originate или ARI channels.
    Как правило, сначала идёт вызов сотрудника, а когда он поднимает трубку, то начинается набор клиента.
    Ответ написан
    Комментировать
  • Вебсокеты вместо обычных соединений?

    Stalker_RED
    @Stalker_RED
    Кеширование? Не, не слышал.

    Вы конечно на своем проекте можете использовать что угодно, хоть дымовые сигналы одеялом отправлять. Никто вам не запретит.
    Может однажды вам скажут: а чойто у нас конверсия не очень, и гугл оценивает в 29 баллов из ста? И тогда вы переделаете.
    А может вам никто ничего не скажет, и оно так и проработает до закрытия.

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

    Гугль, например никак не решает эту проблему, он просто пишет, вы не можете залогиниться потому что у вас неправильно настроено время на компе.
    Ответ написан
    Комментировать
  • Как разместить addFlash - сообщение в нужном МНЕ месте а не по умолчанию?

    @bkosun
    use Symfony\Component\HttpFoundation\Request;
    
    public function update(Request $request)
    {
        // ...
    
        if ($form->isSubmitted() && $form->isValid()) {
            // do some sort of processing
    
            $this->addFlash(
                'notice',
                'Your changes were saved!'
            );
            // $this->addFlash() is equivalent to $request->getSession()->getFlashBag()->add()
    
            return $this->redirectToRoute(...);
        }
    
        return $this->render(...);
    }


    {# templates/base.html.twig #}
    
    {# read and display just one flash message type #}
    {% for message in app.flashes('notice') %}
        <div class="flash-notice">
            {{ message }}
        </div>
    {% endfor %}
    
    {# read and display several types of flash messages #}
    {% for label, messages in app.flashes(['success', 'warning']) %}
        {% for message in messages %}
            <div class="flash-{{ label }}">
                {{ message }}
            </div>
        {% endfor %}
    {% endfor %}
    
    {# read and display all flash messages #}
    {% for label, messages in app.flashes %}
        {% for message in messages %}
            <div class="flash-{{ label }}">
                {{ message }}
            </div>
        {% endfor %}
    {% endfor %}


    https://symfony.com/doc/master/controller.html#fla...
    Ответ написан
    4 комментария
  • Как построить массив из двух массивов?

    0xD34F
    @0xD34F
    $c = array_map(function($n) use($b) {
      return $b[$n] ?? 'NaN';
    }, $a);
    Ответ написан
    Комментировать
  • Как при помощи phpDoc описать сразу два варианта метода, перегруженных через __call и __callStatic?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    ide не рассчитана на подобный говнокод
    Ответ написан
    31 комментарий
  • Как учиться алгоритмизации? И стоит ли?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я на кодварсе гоняю желающих вкачать алгоритмы и структуры данных, хотя бы до 4 кью надо вкачаться имхо.

    Это не даст всеобъемлющего владения, но позволит на практике отработать на мелких и достаточно простых задачках ходовые паттерны, выработать рефлексы, а это хороший трамплин для серьезного погружения в теорию.
    Ответ написан
    Комментировать
  • Как сделать самый простой деплой в GitLab?

    Maksclub
    @Maksclub
    maksfedorov.ru
    И как бы сделали вы.

    Поставил бы Deployer, на нем уже есть таски:
    - GIT
    - зависимости NPM/Composer
    - чистка кеша и вот это все
    - релизы (в случае ошибки -- не катить релиз и миграции откатить)
    - расстановка прав и прочие штучки, если нужно
    - если есть тесты -- прогон их, также phpstan и прчоее
    все таски по желанию

    В Gitlab CI вызывал бы в вашем случае примерно так:
    deploy-master:
        stage: deploy
            script: dep --file=deploy/deploy.php -vvv deploy prod

    Где:
    dep -- запуск деплоера
    prod -- название проекта из настроек самого деплоера (или окружение для нескольких проектов)

    Работает так:
    - создаются папки с релизами
    - актуальный релиз линкуется на последний успешный
    - при выкате нового -- создается папка с релизом и на него все ставится, если успешно -- ссылка преекидывается на него, если нет -- все остается как есть, нужно только учесть работу с миграциями

    Если нужно очень просто
    (а сейчас достаточно просто)
    То просто у деплоера написал бы минимум тасок -- выложить из мастера ГИТ и перелинковать релиз
    Ответ написан
    1 комментарий
  • Существует ли автозагрузка переменных в PHP?

    @Arik
    если свойства public $controller; нет физически, то можно добавить методы __get() и __call(), от них уже отдавать что вам нужно
    Ответ написан
    Комментировать
  • Взлом или развод?

    flapflapjack
    @flapflapjack
    на треть я прав
    Может ли злоумышленник, получив данные о списках таблиц так же получить и содержимое этих таблиц?


    В зависимости от степени экранирования символов при фильтре какого-то из параметров.

    По сути, скорее всего инъекция была сделана именно на вашем сайте, следовательно запрос выполнялся от имени вашего пользователя, у которого есть все права на БД - следовательно может и удалять и читать любые записи.

    Нужно как-то отследить место SQL-инъекции.

    Я в этом не спец, но например можно посмотреть лог mysql на наличие строки SHOW DATABASES или SHOW TABLES, а так же по поиску слова UNION, коим часто пользуются при создании инъекций. Найдя в логах время исполнения данного запроса можно глянуть в access.log у апача запрошенный адрес сайта, который был запрошен в то же время, что и инъекция в SQL.

    Имея точное расположение скрипта можно поставить вставки функции для логирования $_SERVER['REQUEST_URI'] и определить что за запрос был сделан, и от этого плясать.
    Ответ написан
    1 комментарий
  • Как исправить ошибку синтаксиса?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Чтобы исправить ошибку синтаксиса, надо научиться считать и выучить синтаксис РНР.

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

    seganim
    @seganim
    PHP-программист, программный инженер
    Автор, ты не прав. Выполняя file2.php ты меняешь значение переменной в file1.php только в рамках file2.php. Когда ты запускаешь file3.php, переменная там берется из file1.php, где она определена. PHP не хранит изменения в файлах, они происходят только в окружениях исполняемого файла.

    Для хранения значений при переходе по скриптам используй куки, сессии или БД - в зависимости от контекста задачи.
    Ответ написан
    Комментировать
  • PHP как суммировать массив по ключам?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    о господи.
    никакой таблицы archive, никакого ада с explode, никакого крона и никакого колупания с массивами в пхп тут быть не должно.
    в таблице results должно быть поле с датой.
    вся нужная информация берется из нее одним запросом
    SELECT user, sum(km) FROM results WHERE date BETWEEN начало AND конец GROUP BY user

    Вместо начало и конец подставить нужные даты - хоть неделя, хоть месяц, хоть год.
    Ответ написан
    Комментировать
  • Не работает условие если в условии есть || в чём причина?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    ($dir == 'первый-вариант') || ($dir == 'второй-вариант')
    Директория равна первому варианту ИЛИ директория равна второму варианту. Это условие будет выполняться только при двух перечисленных значениях $dir.

    ($dir != 'первый-вариант') || ($dir != 'второй-вариант')
    Директория не равна первому варианту ИЛИ директория не равна второму варианту. Это условие будет выполняться всегда - если $dir не равна ни одному из вариантов, то условие выполнится. Если равна первому, то заведомо не равна второму и наоборот - условие всегда выполняется.

    Вы не указали что вы подразумеваете под "условие работает", но, полагаю, вам нужно это:
    if (
      ($APPLICATION->GetCurDir() != '/otdykh-u-ivanycha/')   
      && ($APPLICATION->GetCurDir() != '/otdykh-u-ivanycha/banya-1/') 
    ) {}
    Ответ написан
    Комментировать
  • Скрипт для отслеживания переходов по ссылкам?

    kawabanga
    @kawabanga
    По первому варианту, когда ваш сайт и есть доступ к аналитике -
    https://www.owox.ru/blog/articles/how-to-use-utm-tags/

    По второму варианту, когда надо редиректить на другой сайт - отправляете на свой сайт, записываете посещение - делаете редирект на конечный сайт.
    Ответ написан
    6 комментариев
  • Наговнокодил, на сколько все плачевно?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Классическая sql-инъекция.
    Пароль в md5.
    Сначала делается запрос, а потом проверяется, что логин и пароль заполнены.
    Сначала используются данные запроса, потом проверяется, что он был успешен.
    Блоки условий не обёрнуты в скобки.
    Пароль и логин зачем-то сохраняются в куки.
    У кук нет флага http-only.

    Спасать здесь нечего, нужно выбросить и сделать нормально в соответствии с современными стандартами и практиками.
    Ответ написан
    Комментировать