Возможно ли прочитать значение cookie / session при выполнении скрипта PHP5 через командную строку?

Мне нужно прочитать некоторые значения из cookie или сессии, когда я выполняю свой PHP-скрипт с помощью командной строки. Как я могу это сделать?

Как получить доступ к файлу cookie или значению сеанса из командной строки Windows?

Solutions Collecting From Web of "Возможно ли прочитать значение cookie / session при выполнении скрипта PHP5 через командную строку?"

Файлы cookie отправляются из веб-браузера пользователя. Когда вы выполняете скрипт php из командной строки, браузер не может отправлять или получать файлы cookie. Невозможно получить доступ или сохранить файлы cookie, и ничего не отправлено в скрипт, кроме параметров, которые вы передаете в командной строке.

При этом есть способ прочитать сеанс, когда кто-то с браузером уже получил доступ, если вы знаете свой файл cookie PHPSESSID.

Предположим, кто-то получил доступ к вашему скрипту с помощью веб-браузера, а их PHPSESSID – a1b2c3d4, и вы хотите выполнить скрипт с их сеансом. Выполните следующую команду в командной строке.

php -r '$_COOKIE["PHPSESSID"] = "a1b2c3d4"; session_start(); require("path_to_php_script.php");' 

Где path_to_php_script.php – это путь к скрипту php, который вы хотите выполнить. И на самом деле вам не нужно начинать сеанс, если файл php, который вы хотите выполнить, запускает сам сеанс. Итак, вы можете попробовать эту команду:

 php -r '$_COOKIE["PHPSESSID"] = "a1b2c3d4"; require("path_to_php_script.php");' 

Хорошо, теперь предположим, что вы не хотите получать доступ к чей-то сессии, но просто хотите выполнить сценарий, как если бы у вас уже был сеанс. Просто выполните предыдущую команду, но введите любой сеанс, который вы хотите. И ваша сессия останется неповрежденной между вызовами сценария, если вы используете один и тот же PHPSESSID каждый раз, когда вы вызываете скрипт.

В CLI нет файлов cookie, поэтому … да.

Вы можете передать нужное имя сеанса в качестве аргумента или переменной среды, а затем использовать session_name() чтобы установить его в свой скрипт.

Вы должны попробовать следующее:

 exec('php -r \'$_COOKIE["'.session_name().'"]="'.$_COOKIE[session_name()].'";include("file_path.php");\''); 

Затем на вашем скрипте сделайте следующее:

 session_start(); @session_decode(@file_get_contents(session_save_path().'/sess_'.$_COOKIE[session_name()])); 

И теперь у вас есть готовность к сеансу!

Помните, что функция session_save_path() получит путь по умолчанию, установленный в .ini-файлах.

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