Необходимо продолжить сеанс браузера при вызове другого php-скрипта через CURL

У меня есть «основной» PHP-скрипт (фактически набор скриптов), с которыми пользователь взаимодействует через браузер. У меня не было проблем с использованием сайта, так как информация о сеансе работает от страницы к странице.

Однако один из сценариев должен напрямую вызывать другой «вторичный» php-скрипт на моем сайте с помощью CURL, и этот «вторичный» скрипт должен получать информацию о сеансе php (который содержит текущего пользователя, вошедшего в систему, и т. д.) от «основного». ". Мне нужно передать информацию о сеансе из «основного» php-скрипта в «вторичный» в CURL. Любые предложения о том, как я могу это сделать?

Нет, я не хочу использовать здесь файлы cookie (слишком небезопасно).


person Steve    schedule 21.10.2009    source источник
comment
Зачем нужен cURL? Как насчет virtual() (при условии, что вы используете Apache), include() или require()?   -  person outis    schedule 21.10.2009
comment
да, если вы находитесь на том же сервере, почему бы просто не использовать обычный механизм включения.   -  person RageZ    schedule 21.10.2009
comment
Я использую CURL, потому что вторичный php-скрипт принимает переменные GET и возвращает некоторые значения, которые нужны основному php-скрипту.   -  person Steve    schedule 21.10.2009
comment
а сделать функцию не лучше???   -  person RageZ    schedule 21.10.2009
comment
Привет RageZ - нет, файл php вызывается с переменными GET и из другого источника.   -  person Steve    schedule 21.10.2009


Ответы (3)


Я знаю, вы сказали, что не хотите использовать файлы cookie, потому что они небезопасны. В следующем решении файл cookie сеанса на стороне клиента «перенаправляется» на второй запрос. Пересылка файла cookie на локальный компьютер не должна создавать проблем с безопасностью.

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

$curl_cookies = session_name() . '=' . session_id() . '; path=/';
curl_setopt($ch, CURLOPT_COOKIE, $curl_cookies);

Для простоты я передаю только файл cookie PHPSESSID (я также предполагаю, что это ключ файла cookie вашего сеанса).

person Brian McKenna    schedule 21.10.2009
comment
Привет, Брайан, Бен. Я работаю над вашими предложениями, но отправляю session_id() в качестве параметра GET в свой вторичный скрипт. Однако, когда я делаю следующее во втором скрипте и пытаюсь загрузить первый, браузер просто зависает и не загружает страницу. $sessionid = urldecode($_GET['sessionid']); идентификатор_сеанса ($ идентификатор сеанса); сеанс_старт(); Что мне нужно сделать, чтобы второй скрипт использовал сеанс первого? - person Steve; 21.10.2009

почему бы просто не отправить параметр строки запроса http с идентификатором сеанса?

например (в псевдокоде):

curl.send('http://myserver.com/myapplication.php?session_id= ' .getSessionId());

person David    schedule 22.10.2009