• Как использовать сессию для всех клиентов одновременно?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Единственно правильный ответ - никак.

    Такой вопрос можно задать только от безграмотности. От непонимания того, как работают сессии.
    Потому что сессия в обязательном порядке блокирует файл с данными на время работы с ним. И именно отсюда возникают многочисленные вопросы "а почему у меня долгий процесс в одной вкладке блокирует сайт во всех остальных вкладках?". А теперь представим, что один и тот же файл блокирует не один юзер, а все по очереди. Таймаут будет постепенно накапливаться, и в итоге сайт у всех пользователей сначала начнет ощутимо подтормаживать, а потом и вовсе встанет колом.
    Поэтому такая вещь, как "сессия сразу для всех пользователей" заведомо является бессмыслицей.

    Если под "сессией" имелось в виду общее хранилище для всех пользователей, то оно называется "база данных". И в этом смысле "БД не предлагать" выглядит беспочвенным капризом. Как правильно заметил N в комментарии, такое заявление звучит как "Как кушать суп? Ложку не предлагать."
    Такие заявления надо всегда подробно обосновывать. И в этом случае вам либо действительно подскажут, как обойтись без БД, либо объяснят, что это просто блажь.

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

    0xD34F
    @0xD34F
    $grouped = array_values(array_reduce($arr, function($acc, $n) {
      $acc[$n['api_id']][] = $n;
      return $acc;
    }, []));
    Ответ написан
    Комментировать
  • Как проверить дату в дипазанох дат?

    iMedved2009
    @iMedved2009
    Не люблю людей
    select not exists( select 1 from test where "2022-01-03 09:00:00" between date_start and date_end);


    Так?
    Ответ написан
    Комментировать
  • Можно как то суммировать эти цифры использую цикл php?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    array_sum(range(10, 40, 2));
    Это?
    Ответ написан
    1 комментарий
  • Как зарегистрировать домен в aws?

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

    Sanes
    @Sanes
    Куда ещё прощё? К PHP добавь фреймворк и будет счастье. Например Laravel/Lumen/Slim
    Ответ написан
    Комментировать
  • Как вывести значения переменной?

    @DanKud
    echo $$color;

    P.S. Но вообще массив значений нужно хранить именно в массиве, а не так как вы это пытаетесь сделать:
    $intensityofcolor = get_post_meta($post->ID, 'intensityofcolor', 1);
    $arrColors = [
        8 => 93,
        9 => 76,
        10 => 57
    ];
    echo $arrColors[$intensityofcolor];
    Ответ написан
    1 комментарий
  • Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

    Кстати, к чему эта поучительная лапша? Я хотел сказать, что всеми этими модными словами можно пугать друзей и преподавателей, но в реальной жизни все алгоритмы уже реализованы, все типы данных уже подобраны оптимально. Знать их полезно для себя (чтобы мозг не атрофировался), но не для работы. Для работы тебе нужны такие навыки как:

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • Как выбрать случайное знаниче массива?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    меняется если обновить страницу, а если просто открывать новую вкладку с сайтом
    В чём разница между этими двумя действиями?

    У вас кеш какой-то срабатывает, судя по описанию, к php эта проблема не имеет никакого отношения. Php не знает "обновили" вы страницу или "просто открыли новую вкладку". Он просто всегда генерирует случайное* значение.
    Если у вас в массиве мало значений, то вероятность получения одного и того же подряд относительно большая.

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

    @vuldozer
    $fp = fopen("textfile.txt", "r");
    while(!feof($fp)) {
        $filename  = fgets($fp);
    	$nf = fopen($filename, 'w');
    	fclose($nf);
    }
    Ответ написан
    1 комментарий
  • Зачем нужен Yii и другие подобные фремворки?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    CMS - обычно решают конкретные узко специализированные задачи. Тот же WP - это блог и для такого кейса он вполне ок. Если вам нужен не совсем блог, на том же WP разработка вероятно будет сопровождаться анальной болью)). Это просто не целевое применение. То, что на WP и эл. магазины пишут - это просто демонстрация, что вилкой можно в ухе ковыряться))

    Фреймворки обычно имеют более обобщенное целевое предназначение, по этой причине на них обычно легче сделать сайт-визитку, который эл. магазин, немного соц. сеть и частично CRM.

    Пример где стоит использовать CMS: нужен эл. магазин, маленький бюджет и сроки тоже. Берем PrestaShop, устанавливаем, прикручиваем тему, настраиваем. Следующий!

    Пример где стоит использовать фреймворк: вам нужен сайт на подобии того, на котором вы читаете мой ответ. Да, его можно за уши притянуть к понятию "блог", но переписывать и допиливать нужно многовато. Пойдем от обратного (вы таки выбрали WP)
    * Потом поймете, что нужно было еще абстрактный уровень над WP написать, потому как после обновления ваши правки затерлись.
    * Потом вдруг случается несчастье: ваш сайт стал популярным и железо не тянет, вы задумаетесь об масштабировании, но окажется, что система довольно таки целостная и что бы ее разделить придется не хило так по вкалывать.
    * Через какое-то время ваш проект будет на 50% состоять переписанного кода и костылей, обходящих логику WP.
    * Вдруг, на хабре вы читаете статью про уязвимость в вашей версии WP, начинаете ее прикручивать, при этом часть вашего сайта тупо отваливается из-за тех же артефактов и костылей. Вы, ясное дело, фиксите траблюки.
    * В один прекрасный весенний денек, когда птички поют, радость, счастье, улыбки и бла-бла-бла вам звонит руководство и говорит, что "ничего не работает ( с )", отчаянье-печаль-грусть-уныние-безысходность-тлен. Зайдя на главную вы увидите замечательный баннер:
    Вас взломал @ сраный_script_kid. Один глаз начнет немного дергаться, "это нормально ( с )". Восстановившись из бэкапа 4-х недельной давности, вы начинаете судорожно писать 1ккк проверок всего и вся. Система мутирует в еще более страшную и громоздкую хрень.
    * Через какое-то время вас просят добавить фичу "на вчера", а что бы это сделать придется переписать добрую часть вашего монстра, вы (ну судя по количеству факапов) уже с прокачанным скилом "тебе фича не нужна эта" убеждаете руководство в этом, подобные разговоры возникают все чаще и в один прекрасный момент вы, или вас - увольняют.
    * На смену вам компания набирает других человек, которые выльют пару ведер крови из глаз, убедят руководство, что код не саппортабельный и перепишут вашего монстра с 1,5кк строк до 0,3кк на нормальном фреймворке.
    Ответ написан
    1 комментарий
  • Как кодировать url в php (urlencode не подходит)?

    php666
    @php666
    PHP-макака
    все, что тебе нужно - сделать htmlspecialchars:
    <?php
    $url = 'http://server.ru/?var=foo&var=Привет, мир!&XSS=<script>alert(1)</script>';
    $url = htmlspecialchars($url);
    ?>
    <a href="<?=$url?>">link</a>

    все остальные вопросы про безопасность - твои выдумки. тут почитай материал - phpfaq.ru/tech/safety

    Если пользователь вел какое-то авно в строку url-адреса, то это сугубо его личные проблемы, твоя задача лишь при отображении предотвратить XSS. Все.

    Если нужна валидация URL, то самый правильный ответ тут - https://stackoverflow.com/a/1411800
    Ответ написан
    Комментировать
  • Черные ромбы вместо текста, что делать?

    @Klonov Автор вопроса
    Разобрался с этой проблемой, оказалось все очень просто: просто в методе readAsText вторым параметром нужно было указать кодировку windows-1251, т.к. по умолчанию установлена UTF-8
    Ответ написан
    Комментировать
  • Как отсортировать многомерный массив?

    0xD34F
    @0xD34F
    usort($array, function($a, $b) {
      $a = str_split($a['date'], 2);
      $b = str_split($b['date'], 2);
      $monthDiff = $b[1] - $a[1];
      return $monthDiff ? $monthDiff : ($b[0] - $a[0]);
    });
    Ответ написан
    Комментировать
  • Как сделать скролл до якоря с учётом высоты фиксированного Bootstrap меню?

    @trofimovdev
    Python
    $(document).ready(function() {
        $("a").click(function () {
            var elementClick = $(this).attr("href")
            var destination = $(elementClick).offset().top - $('.top_header').height();
            jQuery("html:not(:animated),body:not(:animated)").animate({scrollTop: destination}, 800);
            return false;
        });
    });


    Ну и как-то якорей я у вас не заметил. Для нормального перехода каждому якорю требуется дать имя.
    <a href="#qwerty">К якорю</a>
    <div id="qwerty">123</div>
    Ответ написан
    4 комментария