• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Как из PHP удерживать сессию shell_exec

Full-R

Заблокирован
06.09.2020
72
39
BIT
0
Кароче я прикололся и написал терминал, который работает на системах Linux и Windows через shell_exec :) Приделал коровку и всякие красивости.

Возник у меня вопрос как удерживать сессию, если команда выполняется не сразу(не сразу отдает результат), а имеем в качестве вывода листинг или какой-то прогресс. Нам надо обновлять сессию и получать свежий результат вывода, но как это сделать с помощью PHP?

Я бы смог например интегрировать свой оконный интерфейс в мой фреймворк и даже написать файловый менеджер, который бы работал через shell_exec.

Подскажите пожалуйста.
terminal-revolver.png
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Думаю на PHP стоит смотреть в сторону буферизации

Динамический вывод. Пример с таймером и функцией flush():

PHP:
<?php
  for ($i = 1; $i < 6; $i++) {
    echo $i;
    flush();
    sleep(1);
  }
?>
 

Full-R

Заблокирован
06.09.2020
72
39
BIT
0
Думаю на PHP стоит смотреть в сторону буферизации

Динамический вывод. Пример с таймером и функцией flush():

PHP:
<?php
  for ($i = 1; $i < 6; $i++) {
    echo $i;
    flush();
    sleep(1);
  }
?>


Вы считаете там таймер? Спасибо, проверю. Если сработает - я смогу написать свой десктоп для UNIX прямо из браузера.
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Нет, я не считаю что там таймер, я лишь дал возможное направление (буферизация) куда можно посмотреть. Это простой пример работы с буфером. В данном случае буфер сбрасывается. Если я правильно понял, вы хотите сделать что-то типа терминала bash в окне, чтобы предыдущие команды не стирались.

Я сейчас как раз пишу WEB файл-менеджер на пыхе, который потом переедет в WEB-шелл, очень увлекательно ) Поставил задачу написать используя только HTML+CSS+PHP, без использования JS принципиально. Просто потому, что такого проекта я нигде не встречал, везде JS прикручен, так как разные события через него проще реализовать.
 

Full-R

Заблокирован
06.09.2020
72
39
BIT
0
Поставил задачу написать используя только HTML+CSS+PHP, без использования JS принципиально. Просто потому, что такого проекта я нигде не встречал, везде JS прикручен, так как разные события через него проще реализовать.

А как же динамика(Fetch\AJAX)? Вы делаете совсем простенький менеджер?
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
А как же динамика(Fetch\AJAX)? Вы делаете совсем простенький менеджер?

Как я уже написал выше, принципиально без JS. К тому же у меня нет с ним опыта работы. Любую динамику можно создать только на PHP. Да, конечно на JS получится короче, широкий арсенал обработки событий и всё такое. Но JS тянет за собой или файл, либо ссылку, но тогда менеджер работать будет только с инетом. Я люблю для себя ставить задачи, которые ещё никто не делал. Это очень интересно и познавательно. Файл-менеджер должен быть исключительно одним файлом и без JS. Вопрос зачем? Я так захотел, это сложное задание и меня хорошо продвинет в написании кода на PHP.

Опыта PHP у меня немного, только в этом году с ним начал работать (первая работа), зато HTML+CSS опыта около 20 лет. Нет, файл-менеджер предполагается совсем не простенький, а очень даже функциональный. Я его несколько дней всего делаю, и уже много интересного узнал и реализовал. Вот вчера написал чекбоксы - выделение отдельных чекбоксов или всех вместе. Возвраты и перемещение по директориям, при клике по названию, происходит переход в папку. Также можно вручную вбить нужный путь и нажать на кнопку для перехода. Автоматом выделяются разным цветом файлы/папки с правами на запись, с ограниченными правами, суидники и т.п. Сортировка папки-файлы-линки присутствует, также переход по линкам в реальную папку куда линк указывает. Задумок масса, буду пилить потихоньку. На днях прикручу действия для выбранных в чебоксе элементов.

Пока основное окно выглядит так:

2125.png
 

Full-R

Заблокирован
06.09.2020
72
39
BIT
0
Вам тогда и CSS инлайнить нужно и графику в base_64 загонять. Я еще GET запросы не люблю, поэтому их можно скрыть:

PHP:
// Hide GET parameters for interface and store it
$uri_segment = explode('?', $_SERVER['REQUEST_URI']);

if( isset($uri_segment[1]) ) {

    $_SERVER['REQUEST_URI'] = str_ireplace(

        [ $uri_segment[1], '?', '&' ],

        [ '', '', '' ],

        trim(

            $_SERVER['REQUEST_URI']

        )

    );

}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!