Можно ли прочитать значение cookie / сеанса при выполнении сценария PHP5 через командную строку? - PullRequest
4 голосов
/ 28 сентября 2011

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

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

Ответы [ 3 ]

10 голосов
/ 28 сентября 2011

Cookies отправляются из веб-браузера пользователя.Когда вы запускаете php-скрипт из командной строки, нет браузера для отправки или получения куки.Нет доступа к файлам 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 каждый раз, когда вызываете сценарий.

2 голосов
/ 28 сентября 2011

В CLI нет файлов cookie, так что ... да.

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

0 голосов
/ 30 января 2014

Вы должны попробовать это:

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.

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

...