2014-11-13 5 views
0

Я получил ответ curl в следующем формате.удаление идентификатора сеанса из завихрения

HTTP/1.1 200 OK Date: Thu, 13 Nov 2014 05:34:03 GMT Server: Apache/2.4.9 (Ubuntu) Set-Cookie: sid=o58lq30rgnqsep720kbje8cap5; path=/ Cache-Control: no-cache Allow: POST Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"Response":{"reasonCode":"0","reasonText":"The consumer was successfully logged in with a session cookie","reasonImageURL":"","satn":"213456","rrn":"1415856843"}} 

Я хочу получить идентификатор сеанса для его хранения. Я попробовал некоторые ссылки, чтобы решить проблему, но ничего не получилось. Пожалуйста помоги!!

ответ

0

Это должно помочь

preg_match('/SID=(\w+)/', $response['body'], $matches); 
$sid = $matches[1]; //sid 
+1

Это не work.first, он не будет соответствовать строка OP в еще потому вы не использовали флаг 'i'. В то же время вы должны использовать' \ w + 'вместо'. + ', иначе он будет захватывать все (вплоть до новой строки) после части' sid = '. – Himal

+0

Привет Химал, это правильно. Я добавил \ w + вместо. + И это сработало. Спасибо –

+0

@himal редактировать мой ответ –

0

Для правильного решения этого необходимо выполнить синтаксический анализ ответа HTTP правильно ...

$response = ""; 
list($headers, $body) = explode("\r\n\r\n", $response, 2); 
$raw_headers = explode("\r\n", $headers); 
array_shift($raw_headers); // exclude first row 'HTTP/1.1 200 OK' 
$headers = array(); 
foreach($raw_headers as $header) { 
    list($key, $value) = explode(": ", $header, 2); 
    $headers[strtoupper($key)] = $value; 
} 
$cookie = $headers['SET-COOKIE']; 
preg_match('/sid=([a-f\d])/i', $cookie, $matches); 
if ($matches) { 
    $session_id = $matches[1]; 
} 
Смежные вопросы