Задать вопрос
  • Как пересобрать ссылку php?

    @alexalexes
    Вот способ с parse_url, вместе с вариантами обработки ошибок.
    $url_comps = parse_url($url, PHP_URL_HOST | PHP_URL_PATH);
    if(!isset($url_comps['host']) || $url_comps['host'] !== 'music.yandex.ru')
    {
      echo 'Не Яндекс.Музыка!';
       exit;
    }
    if(!isset($url_comps['path']) || strllen($url_comps['path']) == 0 || strpos($url_comps['path'], 'album') === false || strpos($url_comps['path'], 'track') === false)
    {
      echo 'Нет параметров альбома и трека!';
    }
    $url_path_params = explode('/', $url_comps['path']);
    $url_path_params_count = count($url_path_params);
    $album = null; $track = null;
    
    for($i = 0; $i < $url_path_params_count; $i += 2)
    {
      if(isset($url_path_params[$i]) && isset($url_path_params[$i + 1]) && is_numeric($url_path_params[$i + 1]))
      {
        if($url_path_params[$i] === 'album')
           $album = $url_path_params[$i + 1];
         if($url_path_params[$i] === 'track')
           $track = $url_path_params[$i + 1];
      }
    }
    if(is_null($album))
    {
      echo 'Не задан числовой параметр альбома!';
      exit;
    }
    if(is_null($track))
    {
      echo 'Не задан числовой параметр трека!';
      exit;
    }
    $output = "https://music.yandex.ru/iframe/#track/".$album."/".$track."/";
    Ответ написан
  • Если можно зашифровать открытым ключом и расшифровать закрытым, то можно ли зашифровать закрытым и расшифровать открытым?

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

    @alexalexes
    Только если каждая строка - отдельная таблица с нулевым margin сверху и снизу. Еще придется повозиться с толщиной границ с использованием table:first-child, table:last-child, но это мелочи.
    Ответ написан
    Комментировать
  • Запросите разрешение от "Бога" при удалении этой папки?

    @alexalexes
    Режим бога доступен, если загрузится в ту операционную систему, в которой плевать на ограничения файловой системы NTFS. Например, в какой-нибудь Линукс. Либо использовать сервисные утилиты, например, Acronis Disk Director, либо Paragon Hard Disk Manager, загруженные вне Windows.
    Windows в запущенном состоянии имеет ограничения на критические для ее функционирования каталоги ее системного диска. Эти ограничения специально сделали, чтобы глупый пользователь не спиливал сук, на котором сидит базовый функционал ОС.
    Ответ написан
    Комментировать
  • Как можно улучшить охлаждение?

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

    @alexalexes
    Если хоть один из продуктов производителя будет занесен в некачественные, то этот запрос для любого продукта этого производителя будет выводить spent = 1.
    SELECT distinct p1.`id`,
     p1.`name`, 
     p1.`serial`, 
     case
      when (select count(*)
      from `products` as p2
       join `spent`  as s2 on p2.`id` = s2.`product`
                                         and s2.`issued` = 1 -- какое значение в качестве некачественного продукта ?
     where p2.`serial` = p1.`serial`) > 0
      then 1
      else 0
       end as `spent` 
    from `products` as p1
    Ответ написан
    4 комментария
  • Как переписать код в PDO?

    @alexalexes
    Нужно заменить на PDO аналоги функций в этих строчках:
    $conn = mysqli_connect("localhost", "root", "", "db_user");
    ...
    $sql = "SELECT * FROM users WHERE email = '".$email."' AND apiKey = '".$apiKey."'"; // а тут нужно использовать подготовленный запрос для того, чтобы безопасно добавить параметры 
                    $res = mysqli_query($db, $sql); // в подготовленном запросе на этом месте у вас будет execute-метод
                    if (mysqli_num_rows($res) != 0) {
                        $row = mysqli_fetch_assoc($res);
    ...

    PS: Вероятно, у вас проблема не в PDO, а в вообще, как переписать в подготовленный запрос.
    Ответ написан
  • Как правильно сделать выборку из БД из двух таблиц?

    @alexalexes
    ВЫБРАТЬ (атрибуты таблицы из таблицы комментариев) ИЗ таблицы комментариев ГДЕ КодПользователя НЕ СУЩЕСТВУЕТ в подзапросе (выборки из таблицы игнор-листа с таким же кодом пользователя).

    Переводите это предложение буквально на синтаксис SQL - получите решение.
    Ответ написан
  • Как правильно использовать функции array_filter() и in_array()?

    @alexalexes
    Не знаю, как на стрелочных функциях, но на классической анонимной функции внутрь ее контекста нужно передавать доп. аргументы через use (замыкание):
    $array2_ = array_map(function($row){return $row['value'];}, $array2); // тут бы value вытащить в отдельный массив
    $result = array_filter($array1, function($row) use ($array2_) {return in_array($row['code'], $array2_);});
    Ответ написан
    Комментировать
  • Можно ли заряжать 19-вольтовый ноутбук от 12-вольтовой бортовой сети автомобиля?

    @alexalexes
    Если есть аккум от ИБП на 6 вольт или пару лишних банок 18650, которые есть возможность заряжать отдельно, то можно добрать до 19 вольт последовательным соединением. Если очень надо.
    Ответ написан
    Комментировать
  • PHP. Вместо символа кириллицы печатается заменяющий символ �. Как исправить?

    @alexalexes
    Нужно сообщить браузеру, в какой кодировке будет страница, при помощи http-заголовка:
    header('Content-Type: text/html; charset=utf-8');
    Так как присутствия
    <meta charset="utf-8" />
    недостаточно, если браузер взаимодействует с php сервером.
    PS:
    // $lastSymmbol = substr($ar['surname'], -1);
    Помните, что для utf-8, как для разновидности двухбайтовой кодировки, нужно использовать другой спектр функций mb_*, в данном случае mb_substr.
    Но чтобы одни работали, нужно убедиться, что включено расширение mbstring в настройках php.
    Ответ написан
  • Есть ли проги для проверки целосности файлов *.pdf....?

    @alexalexes
    Если к этим файлам не прилагался файл со списком контрольных сумм содержимого каждого файла - то никак.
    Единственная реальная ситуация, по которой можно восстановить такие файлы - это если они все были скачаны с торрент-трекера и у вас от каждой раздачи остался .torrent файл (он как раз содержит те самые контрольные суммы). Тогда можно было бы натравить Torrent-клиент на каталог с такими файлами и проверить целостность, к тому же клиент еще и докачает испорченный контент.
    Ответ написан
    Комментировать
  • Не работают стили css на https wordpress. почему?

    @alexalexes
    Если страница грузится по https, то и все подключаемые ресурсы должны быть по https.
    Все, что по http подключено, будет блокироваться браузером как небезопасный источник.
    Пример ресурса, который будет блокироваться:
    <link rel="stylesheet" id="elementor-icons-theme-icons-css" href="http://13.50.160.133/wp-content/uploads/2021/08/theme-icons/style-1.css?ver=1.0.0" type="text/css" media="all">
    Ответ написан
    3 комментария
  • Как можно считывать все запросы отправленные в базу данных с момента её создания?

    @alexalexes
    Любая обвязка логирования какого-либо процесса работы в базе данных вносится в ТЗ и разрабатывается и настраивается с такой же тчательностью, как и процессы работы с основными данными. Если заранее это не настроено, и не обговорено, какую форму отчета хотим получить по этой обвязке - то извиняйте.
    Ответ написан
    Комментировать
  • Как записать данные с LocalStorage в таблицу?

    @alexalexes
    for(let i = 0;i < rows;i++){ // вы собираетесь сначала создать строку, а по кол-ву строк идут игроки, значит нужно брать число rows, а не cols
            let tr = document.createElement('tr');
      
          for(let j = 0;j < cols;j++){ // а тут cols, но тут еще нужна другая переменная для счетчика, i уже используется для индекса rows
            let td = document.createElement('td'); 
            if(j == 1) // мы ведь хотим добавить контент на вторую колонку (по индексу 1)?
            {
             td.innerHTML = localStorage.getItem(i + ""); // добавляем значение, "" - нужен, чтобы получить ключ по j в виде строки
            }
            tr.appendChild(td);
          }

    ЗЫ: Мне не нравится, что у вас некий массив очков вывален по индексам (которые 0-3) прямо в хранилище по ячейкам ключ-значение. Хорошо бы, чтобы этот массив лежал в одной ячейке хранилища под своим именем. Для этого этот массив нужно преобразовать в JSON и положить в отдельную именованную ячейку. И пользоваться значением этой ячейки нужно будет с кодированием и декорированием JSON строки.
    Ответ написан
    1 комментарий
  • Заморозка сервера в конец срока оплаты?

    @alexalexes
    У PHP сервера есть настройка в конфиге php.ini - макс. время выполнения скрипта - max_execution_time.
    Для долгоиграющих скриптов, обычно, разработчики либо в конфиге (повлияет на все скрипты), либо в htaccess (повлияет на скрипты в пределах каталога), либо в самом скрипте через функцию set_time_limit() корректируют этот параметр, чтобы таким скриптам хватило время на выполнение. Выкручивать этот параметр не нужно для всего сервера, иначе если в частонагруженных скриптах будут проблемы по зацикливанию, то их зависание скушает всю оперативную память сервера при многократном запуске.
    Ответ написан
  • Как ограничить длину массива?

    @alexalexes
    Можно старым добрым процедурным методом ограничить.
    function present () {
      if(visitinMagazine.length < 25)
        visitinMagazine.push(true);
      else
      {
       // что-то сделать при переполнении
      }
    }
    function absent() {
      if(visitinMagazine.length < 25)
        visitinMagazine.push(false);
       else
      {
       // что-то сделать при переполнении
      }
    }

    Или вам нужно чтобы сам тип данных "массив с ограничением" это делал?
    Ответ написан
    Комментировать
  • Как узнать есть ли на кнопке клас?

    @alexalexes
    1. Вставить класс.
    2. Передернуть поток выполнения JS, чтобы класс добавился в DOM, то есть вызвать вашу функцию внутри обертки setTimeout c нулевым временем ожидания.
    Ответ написан
    Комментировать
  • Возможно ли в electron-приложении защитить данные?

    @alexalexes
    Надежен до момента, пока пользователь не имеет возможность скопировать образ раздела жесткого диска с ОС и восстановить его где-нибудь на другом железе/виртуальной машине.
    От какого пользователя защищаетесь?
    От обычного пользователя, у которого нет прав на администрирование/восстановление ОС (или он это не умеет). Или от продвинутого, который за каждой мелочью правит конфиги и реестры, умеет переустанавливать ОС и делать восстановление из образа?
    Если нужно привязать софт к конкретному пользователю и к конкретному железу, то стараются собрать об окружении ОС, в которой выполняется софт, как можно больше сведений: версия ОС, какое имя текущего пользователя системы, идентификаторы процессора, материнской платы - этот набор данных представляет собой фингерпринт, который отправляется при каждом запуске софта на сервер разработчика софта и прикрепляется за учетной записью клиента софта в виде полных сведений, либо в виде хэша по значимым характеристикам (хэш получают только на стороне сервера). Если значимые параметры отличаются от того, что прислал клиентский софт, то значит есть факт изменения конфигурации оборудования и можно принять решение о блокировке софта/учетной записи (оно же лишение лицензии).
    Ответ написан
  • Куда передаются и как извлечь данные через FETCH()?

    @alexalexes
    Объясните простыми словами новичку в javascript, куда передаются данные через fetch

    Данные передаются из браузера (он же клиент) передаются на сервер.
    Постоянно вижу разные примеры кода и везде прописывают файл назначения разным

    Это не файл, это url - адрес на сервере, от которого любым способом запустится какой-то скрипт, который сможет сформировать ответ для браузера (то есть для клиента).
    Если в url указан путь к файлу на сервере, то сервер может отдать статичный файл - но для сервера не принципиально, что отдавать по какому url, можно настроить любые правила взаимодействия.
    А ловят данные вообще через какой-то "php://input"

    Сервер ловит обращение по url (он же запрос), выясняет по настройкам, что нужно сделать: запустить серверный скрипт, отдать статичный файл или ответить каким-нибудь статусом (например, 404). Если по url запрос попадает на запуск скрипта, то в этом скрипте вы можете обработать параметры запроса. Параметры запроса как правило вылавливают в $_GET или $_POST, либо парсят часть url, либо в дополнение смотрят вложения $_FILES.
    Либо в вашем варианте смотрят сырцы запроса через php://input, если что-то нестандартное нужно обработать.
    Тогда зачем вообще эти файлы, которые указывают в Fetch? Причем одни с абсолютным адресом, другие с относительным, где-то указывают расширение (html, json и т.д.), где-то вообще без него.

    Сервер может отдать разные данные клиенту. Где-то их можно забрать из файла статично, где-то сгенерировать ответ серверным скриптом динамично. А можно на статичные пути генерить динамичные данные, по виду url это мало чего говорит.
    Нужно создавать файл какой-то на сервере в который якобы будет передаваться эта информация из JS через POST запрос?

    Да, на сервере должен быть скрипт, который сформирует ответ, если для клиента нужно сформировать нечто динамическое, зависящее от параметров запроса.
    Я создаю, у меня не выходит ничего, значение, при чтении этого файла или php://input (file_get_contents("php://input")) после передачи POST пустое.

    Указываете на клиенте метод POST - на сервере ловите параметры методом POST он будет в $_POST.
    Отправляете параметры GET или вшиваете их в url - ловите параметры на сервере в $_GET.
    Вкладываете файл на клиенте - получаете атрибуты файлов на сервере в $_FILES.
    Все просто.
    На клиенте:
    fetch('/foranswer.php', { //указываете скрипт на сервере, который сформирует ответ для клиента
                                                method: 'POST',
                                                headers: {
                                                    'Content-Type': 'text/plain'
                                                },
                                                body: player.signature
                                            });

    На сервере:
    Скрипт foranswer.php
    <?php
    var_dump($_POST); // Посмотрите, а что вообще пришло в пост параметрах.
    // Например, вам нужен параметр param1, забираем его значение из поста
    $param1 = isset($_POST['param1']) ? $_POST['param1'] : null;
    // Если param1 задан - что-то делаем
    if(!is_null($param1))
    {
      // Например, при наличии параметра param1 нужно прочитать некий ресурс на сервере
      $out = file_get_contents("/file.txt");
      // и отдать его содержимое клиенту
      echo $out;
    }
    else
    {
      // Нет обязательного параметра, отдаем ответ клиенту, что что-то не так.
      echo "Нужен обязательный параметр param1";
    }
    ?>
    Ответ написан
    1 комментарий