Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как получить ID сессии
Форумы портала PHP.SU » » Вопросы новичков » Как получить ID сессии

Страниц (1): [1]
 

1. Amirer - 20 Сентября, 2019 - 14:34:44 - перейти к сообщению
Такой вопрос

С сайта http://TestDomen1.com, который я обслуживаю
нужно выполнить скрипт (http://TestDomen1.com/Site.php), который обращается к стороннему ресурсу
http://TestDomen2[dot]com для передачи данных с http://TestDomen1[dot]com

Ресурсы http://TestDomen2[dot]com и http://TestDomen2[dot]com расположены на разных доменах и на разных серверах.

скрипт http://TestDomen1[dot]comp/Site.php (пример)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header('Content-Type: text/html; charset=utf-8');
  3. $_SESSION['a']=10;
  4. var_dump($_SESSION['a']);
  5. echo '<br>';
  6. '<a href="http://TestDomen2.com/GetData.php">вернуть контент с помощью Curl</a>'.
  7. '<br>'.
  8. '<a href="http://TestDomen1.com/pContent.php">вернуть контент</a>'
  9. );
  10. ?>
  11.  

Известно, что скрипт http://TestDomen2[dot]com/GetData.php выполняет загрузку
контента, с помощью библиотеки Curl, подготовка которого, выполняется скриптом
http://TestDomen1[dot]com/pContent.php например так:

скрипт http://TestDomen2[dot]com/GetData.php (пример)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   header('Content-Type: text/html; charset=utf-8');
  3.   $curlh = curl_init();
  4.   $url = 'http://TestDomen1.com/pContent.php';
  5.   $postdata = array('123');
  6.   curl_setopt($curlh, CURLOPT_URL, $url);
  7.   curl_setopt($curlh, CURLOPT_RETURNTRANSFER, 1);
  8.   curl_setopt($curlh, CURLOPT_POST, 1);
  9.   curl_setopt($curlh, CURLOPT_POSTFIELDS, http_build_query($postdata));
  10.   $out = curl_exec($curlh);
  11.   curl_close($curlh);
  12.   echo $out;  
  13. ?>
  14.  

скрипт http://TestDomen1[dot]com/pContent.php (пример)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header('Content-Type: text/html; charset=utf-8');
  3. if (isset($_SESSION)) {
  4.   var_dump($_SESSION);
  5. }  
  6. else {
  7.   echo 'session empty';  
  8. }
  9.  

При загрузке контента посредством скрипта http://TestDomen2[dot]com/GetData.php
теряется содержимое сессии определенное в http://TestDomen1[dot]comp/Site.php

скрипт http://TestDomen2[dot]com/GetData.php не доступен для редактирования (создал грубый пример)
т. е. передать SID в этот скрипт
curl_setopt($curlh, CURLOPT_COOKIE, 'PHPSESSID='.session_id()); не возможно.

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

Данные из сессии, которая стартует в http://TestDomen1[dot]comp/Site.php нужны для
организации аудита операций, выполняемых при обработке данных контента, скриптом http://TestDomen1[dot]com/pContent.php

Как в данном случае получить в http://TestDomen1[dot]com/pContent.php
SID сессии открытой в http://TestDomen1[dot]comp/Site.php ?

 

Powered by ExBB FM 1.0 RC1