PHP получает cookie по идентификатору сессии (или иным образом передает данные между двумя разными соединениями) - PullRequest
1 голос
/ 08 февраля 2012

Обычно я пытаюсь отформатировать свой вопрос как основной вопрос, а затем объясняю свою ситуацию, но решение, которое я ищу, может быть совершенно неправильным, поэтому вот проблема:

Я строюкаталог приложений для сайта аукциона, который имеет возможность сохранять отдельные лоты.До сих пор это работало замечательно, просто создав cookie-файл с разделенным запятыми списком идентификаторов для этих лотов, используя что-то вроде этого:

$_COOKIE["MyLots_$AuctionId"] = implode(",",$arrayOfIds);

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда я идунапечатайте лоты, я использую wkhtmltopdf через командную строку, чтобы запросить URL распечатки, которую я хочу, например:

exec("wkhtmltopdf '$urlofmylots' filename.pdf");

Проблема в том, что я не могу передать cookie для этого вызовапотому что Apache видит внутренний запрос, а не запрос пользователя.Я попытался поместить его в строку get, но как только у меня будет больше заданного предела для параметров GET, это значение исчезнет из массива $ _GET на целевом URL.Я не могу найти способ отправить данные POST между ними.Мои следующие возможные идеи следующие:

  1. Может быть, просто передать идентификатор сессии для URL-адреса и посмотреть, есть ли способ, с помощью которого я могу использовать PHP, чтобы копаться в файлах cookie для этого сеанса и извлекатьправильный cookie, но это звучит так, как если бы PHP-сервер позволял рисковать с точки зрения безопасности (позволить одному сеансу быть в курсе другого).Пример:

    exec("wkhtmltopdf '$urlofmylots?sessionId=$sessionIdFromThisRequest' filename.pdf");
    
  2. Возможно, установите переменную сеанса, а затем передайте этот идентификатор сеанса и посмотрите, могу ли я использовать PHP для просмотра этой информации (вместо использования файла cookie).

  3. Смогу ли я просто создать массив и каким-то образом заставить этот другой скрипт знать об этом, возможно, включив его?Это на самом деле не решает проблему того, что wkhtmltopdf ожидает адрес, обращенный к сети, в качестве первого параметра.

  4. (не совсем идея, но некоторые рассуждения) В других случаях использования этого,Я только что передал идентификатор скрипту, который генерирует разметку для анализа wkhtmltopdf, и скрипт использует этот идентификатор для получения данных из базы данных.Я не хочу хранить эти данные в файле или базе данных для простой цели передачи данных от вызывающего к вызываемому в этом случае.Файлы cookie и сеансы кажутся более чистыми, поскольку apache / php управляет распределением памяти для этих сеансов.

Главная проблема здесь в том, что я пытаюсь заставить мой второй скрипт (на который ссылается здесь $ urlofmylots) узнать о данных, доступных для вызывающего скрипта, но он выполняется так, как если быэто был внешний веб-запрос, а не два php-скрипта, вызываемые из корневого веб-каталога.

Кто-нибудь может подсказать здесь что-нибудь?

1 Ответ

1 голос
/ 08 февраля 2012

Вы можете рассмотреть рендеринг любого вывода $urlofmylots?lots=$lots_to_print во временный файл и запуск wkhtmltopdf для этого файла.

...