• Как получить только PHPSESSID?

    @AndryG
    $str = 'mail_info_10999781={"count":4,"lastPostId":"442384768","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1586381539,"countNew":"4"}; mail_info_4180878=[]; mail_info_2329300=[]; mail_info_10982672=[]; mail_info_10524789={"count":3,"lastPostId":"444114528","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587504640,"countNew":"3"}; mail_info_9061283={"count":3,"lastPostId":"444114548","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587504666,"countNew":"3"}; mail_info_4767868=[]; mail_info_2307930=[]; mail_info_3713915={"count":4,"lastPostId":"444115078","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587505121,"countNew":"4"}; mail_info_11019215=[]; uidc=75e9f7984b904a; mail_info_7521919={"count":3,"lastPostId":"444119300","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587509668,"countNew":"3"}; mail_info_5249555={"count":3,"lastPostId":"444119305","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587509682,"countNew":"3"}; mail_info_9721044={"count":3,"lastPostId":"444119330","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587509739,"countNew":"3"}; mail_info_9200661={"count":1,"lastPostId":"444119783","playerId":"10978816","playerName":"Букая","text":"Перса верните","dateAdded":1587511049,"countNew":"1"}; mail_info_3775637=[]; mail_info_10950336=[]; mail_info_2728587=[]; mail_info_10799719={"count":4,"lastPostId":"444145953","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587543962,"countNew":"4"}; mail_info_3782473={"count":4,"lastPostId":"444146002","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587543991,"countNew":"4"}; mail_info_8929282={"count":5,"lastPostId":"444146020","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587544010,"countNew":"5"}; mail_info_6872423={"count":4,"lastPostId":"444146071","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587544041,"countNew":"4"}; mail_info_10947584=[]; mail_info_5361529=[]; mail_info_11024570=[]; mail_info_10824306={"count":3,"lastPostId":"444149063","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587546093,"countNew":"3"}; mail_info_9126714=[]; mail_info_9412550=[]; mail_info_8087106=[]; PHPSESSID=720e9a61f3ce5acf34e005ba0811a4e0.1587566959.5217338; mail_info_10209738=[]; lastSyncDate=1587568026488mrush.mobi';
    if(preg_match('/PHPSESSID=(.+?);/', $str, $matches)){
        echo $matches[1];
    }else{
        echo 'Oops';
    }
    Ответ написан
    4 комментария
  • Насколько будут нагружать сервер ежесекундные ajax запросы?

    @AndryG
    Без keepAlive будет уходить много времени на соединение, а ssl рукопожатия вообще долго могут проходить.
    С keepAlive, насколько я понимаю, каждый пользователь сервера отберет себе монопольно worker, что ограничивает к-во одновременных пользователей.

    Нужно озвучить фичу
    Ответ написан
    2 комментария
  • Как сделать роутинг на чистом php, перенаправляя абсолютно все запросы в index.php?

    @AndryG
    Добавлю для потомков. Единая точка входа может быть построена на более простом модуле, 99% уже используемом, - mod_dir

    Часто желательно, чтобы один файл или ресурс обрабатывал все запросы к конкретному каталогу, кроме тех запросов, которые соответствуют существующему файлу или сценарию. Это часто называют «фронтальным контроллером».

    В более ранних версиях HTTPD, этот эффект , как правило , требуется mod_rewrite, и использование из -fи -dтестов для файлов и каталогов существования. Теперь для этого требуется только одна строка конфигурации.

    FallbackResource / index . PHP
    Существующие файлы, такие как изображения, файлы CSS и т. Д., Будут обслуживаться в обычном режиме.

    Используйте disabledаргумент, чтобы отключить эту функцию, если наследование от родительского каталога нежелательно.



    Пример с работающего сайта:
    ...
        <Directory "$base/$proj/www/i">
          FallbackResource disabled  - в папке картинок отключаем обработчик
          Header set Cache-Control "public, max-age=31536000"
        </Directory>
    
        <Directory "$base/$proj/www">
            Options -Indexes
            Require all granted
            DirectoryIndex disabled
            DirectorySlash Off
            FallbackResource /entry.php
        </Directory>
    </Macro>
    Ответ написан
    Комментировать
  • Как организовать работу над проектами из любого места?

    @AndryG
    github и "нужно постоянно скачивать проект на комп" ... что-то тут не то.
    Вы git пользовались при этом?
    Ответ написан
    Комментировать
  • Как преобразовать массив строк в массив чисел?

    @AndryG
    Ответ написан
    Комментировать
  • Как выбрать только одну строку с нужными значениями?

    @AndryG
    Отбираете через where сообщения, где юзер является отправителем или получателем.
    Затем группируете " по контрагенту" и с группы выбираете бОльший номер отправления (если вам все же нужны последние, а не первые сообщения).

    схема
    CREATE TABLE m (
      id INTEGER(11) NOT NULL AUTO_INCREMENT,
      u_from INTEGER(11) NOT NULL,
      u_to INTEGER(11) NOT NULL,
      PRIMARY KEY USING BTREE (id)
    ) ENGINE=InnoDB
    AUTO_INCREMENT=8 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
    ;
    
    INSERT INTO `m` (id, u_from, u_to) VALUES
      (1,7,1),
      (2,7,1),
      (3,7,1),
      (4,7,1),
      (5,1,7),
      (6,1,4),
      (7,4,1);
    COMMIT;


    select
      max(id) id,
      if(u_from = 1, concat('TO ', u_to), concat('FROM ', u_from)) last_msg,
      u_from,
      u_to
    from m
    where u_from = 1 or u_to = 1
    group by if(u_from = 1, u_to, u_from)
    order by id
    Ответ написан
    3 комментария
  • Настроить сортировку на сайте?

    @AndryG
    В сортировке по нескольким полям важно менять не только направление сортировки, но и порядок полей. Возможно, именно с порядком полей в сортировке у вас непонятки.
    Ответ написан
    Комментировать
  • UTF-8 vs UTF-8 без BOM - что когда использовать?

    @AndryG
    Добавлю. что разница для "не php" файлов есть. Например, .js файлы, как правило, браузеры отдают без указания charset в заголовках. Если BOM метка есть в файле, то он читается как UTF, в противном случае каждый браузер читает как хочет. У меня лиса открыла JS без BOM как latin1, а хром - cp1251
    Ответ написан
    Комментировать
  • Почему браузер некорректно воспринимает кодировку js файла?

    @AndryG
    Если в .js файл добавить BOM метку, то бразуер образумится и прочтет скрипт как UTF8
    Ответ написан
    Комментировать
  • Убрать слэш / в конце URL

    @AndryG
    Наткнулся в доках на косых чертей. Может это вам надо?

    DirectoryCheckHandler Directive
    Перенаправление «трейлинг-косой черты» выдается, когда сервер получает запрос на URL-адрес servername/foo/dirname где dirname - это каталог. Каталоги требуют mod_dir косой черты, поэтому mod_dir выдает перенаправление на servername/foo/dirname .


    ru https://code.i-harness.com/ru/docs/apache_http_ser...
    Ответ написан
    Комментировать
  • Как получить разницу двух дат?

    @AndryG
    public static function endingsForm($n, $form1, $form2, $form5) {
        $n = abs($n) % 100;
        $n1 = $n % 10;
        if ($n > 10 && $n < 20) return $form5;
        if ($n1 > 1 && $n1 < 5) return $form2;
        if ($n1 == 1) return $form1;
        return $form5;
    }
    
    endingsForm(7, 'год', 'года', 'лет')
    Ответ написан
    Комментировать
  • Кто как укладывает бизнес правила в БД?

    @AndryG
    У нас говорят на подобную задачку "Ты собираешься на написаном для тебя интерпретаторе написать свой интерпретатор для другого программиста?"

    Даже если вы напишете свой удобный язык, то программировать на нем будете лишь вы. И закодировано на нем будет с десяток различного рода правил, потому как бизнесу много на самом деле и не надо. Это мы программисты пытаемся объять невпихуемое, а бизнес работает по понятным и простым правилам. )

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

    @AndryG
    Не надо вырезать никакие теги!
    Безопасность, как и в сексе, определяется правильным применением контрацептивов :)
    При записи в БД ваши данные перед попаданием в текст запроса должны пройти через escape-обработку mysqli_real_escape_string() php.net/manual/ru/mysqli.real-escape-string.php
    При выводе в браузер ваш текст, независимо от того, ожидаете вы в нем теги или нет, должен пройти через htmlspecialchars() php.net/manual/ru/function.htmlspecialchars.php

    Эти два простые правила позволят вам получить море наслаждений с минимальным риском.

    Маленькое дополнение. Если в редакторе используется bbCode, то подумайте над хранением обеих версий текста: оригинальный текст с редактора и скомпилированный html-код. Так вам придется выполнять дорогую операцию компиляции bbCode лишь при изменении оригинала.
    Ответ написан
    8 комментариев
  • Как встроить обработчик ajax запроса на страницу с контентом?

    @AndryG
    jQuery для jajx-запросов прописывает доп. заголовок, выставляет правильный заголовок mime (если вы запрашиваете json/script). А значит можно обойтись без "самому добавлять параметр ajax".
    Ответ написан
    Комментировать
  • Платежный агрегатор, с ВМ без аттестата?

    @AndryG
    Принимать платежи от участников системы WebMoney Transfer можно, не имея кошелька WebMoney и не являясь участниками системы. С помощью платежных интеграторов можно принимать платежи клиентов путем зачисления средств на свой банковский счет

    https://www.webmoney.ru/rus/business/accept-paymen...
    Ответ написан
    Комментировать
  • По какой схеме работают агрегаторы платежных систем и как реализовать такую схему для личного пользования?

    @AndryG
    Вижу ваш вопрос как две задачи:
    - избавиться от чужих агрегаторов и научиться самому работать с разными платежными системами напрямую
    - научить мою одну точку оплаты работать с несколькими моими же точками продаж.

    Если всё верно, то первый вопрос реализуется очень просто. Достаточно изучить пяток апи разных платежек. Могу поделиться своим вариантом (серверной частью) (сейчас его и перекраиваю из опыта использования https://toster.ru/q/327212).

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

    @AndryG
    На каждой странице пропишите кому-нить из родителей меню уникальный класс и разруливайте дальше CSS. Я прописывал класс прямо body и потом правилами css разруливал "на какой именно странице находится мой шаблончик, и с каким извратом его показать".
    /*типа такого*/
    body[place="privat"] menu item.privathidden{
    diplay:none
    }


    А можно каждому пункту меню поставить уникальный класс/значение параметра и на самой странице вписывать css, "активируя" нужный итем.

    А можно параметром в body указывать параметр menu-activate=m1 и по загрузке страницы скриптом находить нужный пункт и добавлять ему класс active
    Ответ написан
    Комментировать