Ответы пользователя по тегу PHP
  • Какие способы декодирования существуют в PHP?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Обычный обфусцированный код.
    Достаточно отворматировать, чтобы уловить что там

    \x74\x69\155\145 - юникодная запись = time
    (upd: подобные строки легко перевести в читамеый вид, закинув ее в consol.log в браузере
    Или в phpStorm Вырезать/Вставить Ctrl-X/Ctrl-V)

    $O8666750554638273663 - переменная
    O6505149678668561343: - метка

    $list = ["openInventory" => [
      "name" => "Taking Inventory",
      "requires" => []
    ];


    public function __construct(Server $O8666750554638273663) {
            goto O1970219884901744879;
    
            O6505149678668561343:
            $O1777212593691497481 = @fopen($this->path, "wb");
            goto O4083818622447351734;
    
            O3393899177948378635:
            $this->fp = $O1777212593691497481;
            goto O0537484758143303834;
    
            O8048393773490650940:
            $this->encodeData();
            goto O2278372111902823051;
    
            O2791274778590356360:
            $this->generalData();
            goto O8382244228756303546;
    
            O1005405451303321896:
            $this->data["time"] = $this->time;
            goto O6370898434236048902;
    
            O8942154602257954378:


    Можно закинуть в IDE, сделать автоформат, посидеть, переименовав переменные в нормальные имена и всё. А если дорабатывать собрались, то пожалуй стоит сделать рефакторинг, избавившись от goto. Тут придется посидеть подольше.
    Ответ написан
    Комментировать
  • Какой самый простой способ собрать PDF файл с данными из БД?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Самый простой способ – вывести данные на страницу и отправить эту страницу на печать в пдф файл.
    Способ посложнее – использовать какую-нибудь библиотеку для создания пдф. Например mpdf.
    Ответ написан
    3 комментария
  • Как сохранить старое значение для input type file?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    никак этого ни сделать.
    Обычно в таких случаях выводят ID уже загруженной картинки из базы плюс возможно сама картинка тегом img или просто ее название. А в бэке уже смотрим, если прилете ID при сохранении то смотрим еще в $_FILES, если там новая картинка, то меняем, иначе просто ничего не трогаем. Если ID не прилетел, значит это первая загруженная картинка, просто ее сохраняем.
    Ответ написан
    Комментировать
  • Занесение данных из формы в базу данных?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Опуская замечания о sql-инъекциях, строковые значения должны быть в кавычках
    $sql = "INSERT INTO admins (id, login, pass, name) VALUES ($id, '$login', '$pass', '$name')";


    А вообще, сначала прочитайте это https://habr.com/ru/articles/662523/
    Ответ написан
    2 комментария
  • Для чего нужны буквы с двоеточием?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Поняли, в целом, правильно. Это сериализованные данные.
    https://www.php.net/manual/ru/function.serialize.php
    https://www.php.net/manual/ru/function.unserialize.php
    Ответ написан
    Комментировать
  • Как реализовать диалоговый бот на PHP?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Но на сколько я знаю, в PHP можно сохранять все данные в сессию, это я бы и хотел реализовать.


    Реализуйте. https://www.php.net/manual/ru/book.session.php

    в самом начале кода:

    session_start();

    Потом в любом месте

    //записать
    $_SESSION['link'] = 'https://...';
    $_SESSION['number'] = 123;
    
    //прочитать
    $link = $_SESSION['link'];
    $number = $_SESSION['number'];
    Ответ написан
  • Почему пишет, что класса не существует?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    попробуйте выполнить в консоли команду
    composer dumpautoload

    Это пересоздаст автозагрузчик классов.

    Перед этим убедитесь, что у вас в composer.json присутствует секция

    "autoload": {
            "psr-4": {
                "App\\": "app/",
                "Database\\Factories\\": "database/factories/",
                "Database\\Seeders\\": "database/seeders/"
            }
        },


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

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Согласен с dollar отчасти, но попробую дать направление.

    Для старта таймера делается некий запрос, например переход на страницу start_timer.php
    Здесь скрипт берет текущее время, прибавляет к нему необходимый интервал, например пять минут, записывает новое время куда-нибудь, например в базу данных.
    Далее пользователь отправляется на скрипт ожидания wait_timer.php
    Этот скрипт берет текущее время и время из базы, вычисляет разницу, если она положительная, то формирует html страницу с javascript таймером, передавая туда вычисленную разницу - это время, которое осталось до окончания работы таймера. Джаваскрипт таймер начинает тикать. Когда дойдет до конца, он сделает обновление страницы. Скрипт wait_timer.php снова проверит оставшийся интервал, если он стал нулевым или отрицательным, отправит пользователя на третью страницу end_timer.php. Если разница все еще положительная, скрипт wait_timer.php так же сформирует страницу с js таймером и отдаст ее.

    Разделение скриптов на start, wait и end - условное. Это вполне может быть один и тот же скрипт (страница), просто где-то на сервере, сохраняется состояние для текущего пользователя, что его таймер уже запущен, или наоборот еще не запущен.

    В таком простом варианте не учитывается разница времени из-за длительности http-запроса, поэтому, если нужна миллисекундная точность, то нужно будет применить дополнительные методы синхронизации.
    Ответ написан
    Комментировать
  • Как подключить базу данных Access к PHP?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    https://www.php.net/manual/ru/odbc.installation.php

    Пользователи Windows должны включить php_odbc.dll, чтобы использовать этот модуль.
    Ответ написан
    Комментировать
  • Как упросить данный код if else?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $links = [
        'первый',
        'второй',
        'третий',
    ];
    
    foreach ($links as $link) {
        if(strpos($searchname, $link) !== false) {
          header('location: '. $link);
          die;
        }
    }
    
    echo 'Ничего не нашли';
    Ответ написан
    1 комментарий
  • Как удалить все до и после второго символа?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Навскидку, не проверял
    preg_match('~^([.\d]+)/.*/([.\d]+)$~', $string, $m);
    var_dump($m);
    Ответ написан
    Комментировать
  • Как из объекта платежа ЮКассы получить идентификатор платежа?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $client = new Client();
    $client->setAuth( … );
    $payment = $client->createPayment( … );
    echo $payment->id;
    // or
    echo $payment->getId();
    Ответ написан
    Комментировать
  • Вопрос по отправке данных на сервер и обработке ответа?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Представление самой страницы

    …
    <div id="table">
      @include('table')
    </div>
    …


    Отдельная вьюха для таблицы

    <table>
        <tr>
        ...
        </tr>
        @foreach ($data as $element)
           <tr>
               <td>{{ $element['date'] }}</td>
               ...
           </tr>
        @endforeach
    </table>


    Отдельный маршрут для запроса таблицы
    Route::get('getTable', function(){
      ...
      return response()->json([
        'target' => 'table',
        'html' => view('table', [...])->render()
      ])
    });


    B универсальная функция запроса в js

    function getChank(url, data) {
      return fetch(url, {
        body: data,
      }).then(response => response.json())
        .then(response => {
            const target = document.getElementById(response.target);
            target.innerHTML = response.html;
        });
    }


    -------
    А еще посмотрите в сторону Liveware. С ним все получится намного удобнее и красивее.
    Ответ написан
    1 комментарий
  • Почему не работает?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Чтобы значения отправлялись, нужно полям формы (input, select, textarea и т.д.) обязательно указывать атрибут name

    <select name="opt">
    Ответ написан
    Комментировать
  • Какую библиотеку выбрать для построения графиков/диаграмм для проекта на Laravel?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Графики обычно рисуются на стороне клиента, джаваскриптом.
    И библиотеки для этого есть - Charts, Highcharts и куча других, более или менее навороченных.
    Эти две я пробовал. Charts позволяет сделать многое и довольно простая.
    А Highcharts - это вообще бомба, там куча настроек и кастомизаций https://www.highcharts.com/demo

    Причем здесь теги laravel и php я вообще не понял...
    Ответ написан
    3 комментария
  • Как сделать продажу файлов на PHP?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Все файлы складываете в недоступное из web место.
    Даже на шаред хостингах у вас есть домашняя директория, в которой расположен каталог public_html, в котором уже лежит ваш сайт. Вот на одном уровне с public_html, в домашнем каталоге создайте папку files и складывайте туда.

    Далее генерируете пользователю ссылку вида
    https://mysite.ru/download/sadlflksdjfkj
    Hash кладете в табличку в бд и устанавливаете время жизни, связываете ее с зарегистрированным пользователем и нужным файлом.
    Регистрируете в приложении маршрут
    '/download/{hash}'
    в обработчите маршрута получаете это хэш, ищете в базе запись с ним. Проверяете, не истекло ли время жизни, тот ли пользователь ее открыл, и если все норм, с помощью readfile отдаете нужный файл на скачивание.
    Ответ написан
    1 комментарий
  • Как организовать хранение заявок и клиентов в БД?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Я бы сделал одну таблицу
    application_orders с полями
    id, type, name, phone_number, email, message.
    type - тип заявки - продукты или звонок
    Ответ написан
    4 комментария
  • Как вызвать метод класса внутри другого метода?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    метод validateItems() может вернуть ответ с ошибками, но вы этот ответ в createNewTitles() не получаете и не пересылаете клиенту.
    Ответ написан
  • Ошибка с смещением строки, как решить?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Потому что у вас там одна запись
    Ее нужно просто вывести без цикла

    <span class="rules-intro__text">
        <?=$rulesCategoryOne['content']?>
    </span>


    Либо фетчить все строки

    $rulesCategoryAll = $queryCategoryOne->fetch_all();
    // Я не знаю как у вас называется такой метод!!!
    
    
    <?php foreach($rulesCategoryAll as $rule): ?>
    <span class="rules-intro__text">
        <?=$rule['content']?>
    </span>
    <?php endforeach; ?>
    Ответ написан
  • Как из цикла РНР передавать Ajax?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Например так.

    document.querySelectorAll('.element').forEach(el => {
      const id = el.getAttribute('id');
      fetch('https://mysite.com', {
        body: {
          id
        }
      })
      .then(response => response.json())
      .then(response => {
        if (response.status === 'ok') {
          el.style.color = 'green';
        } else {
          el.style.color = 'red';
        }
      })
      .catch(err => {
        console.log(err);
        el.style.color = 'red';
      });
    });


    на сервере

    $id = $_GET['id'];
    // Что-то делаем
    $result = doSomething($id);
    $response = [
      'status' => $result ? 'ok' : 'error'
    ];
    echo json_encode($response);
    die;
    Ответ написан
    Комментировать