Я играю с сеансами для аутентификации пользователей и запуска функций.Я использую сеансы между двумя серверами.Ниже описан процесс того, что я делаю.
1) С помощью Server 1
передайте имя пользователя и пароль на основной Server 2
.
public function get_session_auth($username,$password){
$resultArray = array(
'result' => 'succeeded',
'resultText' => null
);
$request = new HTTP_Request2($this->baseUrl. 'index.php/login/get_session_id_via_login?username='.$username.'&password='.$password, HTTP_Request2::METHOD_GET);
if (ENVIRONMENT === 'development') {
$request->setConfig(array('ssl_verify_peer' => false));
}
//$request->setAdapter('curl');
try {
$response = $request->send();
if (200 == $response->getStatus()) {
$resultArray = json_decode($response->getBody(), true);
} else {
$resultArray['result'] = 'failed';
$resultArray['resultText'] = 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
// Here we should write data to log file.
$this->getLogger()->error($resultArray['resultText']);
}
} catch (HTTP_Request2_Exception $e) {
$resultArray['result'] = 'failed';
$resultArray['resultText'] = 'Error: ' . $e->getMessage();
// Here we should write data to log file.
$this->getLogger()->error($resultArray['resultText']);
}
$resultArray['operation_name'] = 'get_session_auth';
return $resultArray;
}
2) Я регистрирую пользователя с помощью username
и password
в Sever 2
, запускаю сеанс и сохраняю информацию, такую как ( id, user_id, role = (Admin, Batch) )
в $_SESSION
.3) Я получаю session_id
и передаю его обратно Sever 2
$session_id = session_id();
return $session_id;
4) Теперь я вызываю некоторые функции в Server 2
, используя GET
из Server 1
, и я также передаюsession_id
в качестве переменной в URL-адресе
public function dosomething($session_id)
{
$resultArray = array(
'result' => 'succeeded',
'resultText' => null
);
$request = new HTTP_Request2($this->baseUrl. 'index.php/payment/dosomething/true?session_id='.$session_id, HTTP_Request2::METHOD_GET);
if (ENVIRONMENT === 'development') {
$request->setConfig(array('ssl_verify_peer' => false));
}
//$request->setAdapter('curl');
try {
$response = $request->send();
if (200 == $response->getStatus()) {
$resultArray = json_decode($response->getBody(), true);
} else {
$resultArray['result'] = 'failed';
$resultArray['resultText'] = 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
// Here we should write data to log file.
$this->getLogger()->error($resultArray['resultText']);
}
} catch (HTTP_Request2_Exception $e) {
$resultArray['result'] = 'failed';
$resultArray['resultText'] = 'Error: ' . $e->getMessage();
// Here we should write data to log file.
$this->getLogger()->error($resultArray['resultText']);
}
$resultArray['operation_name'] = 'dosomething';
return $resultArray;
}
5) Я извлекаю session_id
из URL-адреса в Server 2
и затем пытаюсь использовать
session_id( 'session_id' );
session_start();
6)проблема в том, что я ожидаю, что переменная $_SESSION
будет иметь ранее сохраненную (id, user_id, role=(Admin,Batch)
, но переменная $ _SESSION` пуста, даже если идентификатор_ сеанса тот же, в котором я хранил эту информацию ранее.
Так как я могу получить информацию, которую я сохранил в первом $_SESSION
?