2016-10-12 4 views
1

Это PHP Curl код, я использую, чтобы поддерживать HTTP сессию с печеньемКак сохранить сеанс cURL HTTP без сохранения файла cookie?

 if(!function_exists("\curl_init")){ 
     \load_curl(); 
     echo "curl loaded"; 
    } else { 
     echo "curl already exists "; 
    } 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, ''); //could be empty, but cause problems on some hosts 
    curl_setopt($ch, CURLOPT_COOKIEFILE, ''); //could be empty, but cause problems 

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_URL, $url1); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $startInterview); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $startInterviewHeaders); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    //curl_setopt($ch, CURLOPT_HEADER, 1); 

    $startInterviewresponse = curl_exec($ch); 
    //echo $response; 

    $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    $curl_errno= curl_errno($ch); 
    echo "</br> HTTP status: " . $http_status . "</br> cURL error: " .$curl_errno . "</br>"; 
    //curl_close($ch); // close cURL 
    echo $startInterviewresponse; 

    $investigateHeaders = array("SOAPAction: xxx"); 

    curl_setopt($ch, CURLOPT_POSTFIELDS, $investigateXML); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $investigateHeaders); 
    $investigateResponse = curl_exec($ch); 
    echo "</br>"; 
    echo $investigateResponse; 

    curl_close($ch); 

Проблема, система этот код должен быть развернут на не позволяет хранить куки и код просто не работает. Итак, как я могу изменить этот код, чтобы использовать PHP-переменные вместо временного файла для поддержки сеанса HTTP?

Спасибо

+0

Вы можете использовать 'CURLOPT_COOKIE', чтобы установить необработанные значения cookie (предположительно те, которые находятся в переменной), и вы можете проверить заголовки ответов на файлы cookie, отправленные сервером. – apokryfos

ответ

0

Вы можете использовать php://memory поток для сохранения информации сеанса в памяти вместо файловой системы, если вы не можете использовать файловую систему.

В качестве альтернативы, вы можете разобрать идентификатор сеанса из ответа Set-Cookie заголовка на первом запросе, сохраните его в переменной и отправить его в Cookie заголовка или с помощью CURLOPT_COOKIE на каждом последующем запросе.

Смежные вопросы