Файлы cookie PHP CURL POST, но не аутентифицированы - PullRequest
0 голосов
/ 11 марта 2019

У меня остроумие с этой проблемой.

Я пытаюсь использовать PHP и CURL для входа на веб-сайт, получения куки-файлов с этого веб-сайта, а затем использовать куки для POST на поисковом веб-сайте.

Если я использую Postman,Кажется, что он работает нормально, и куки остаются для этого сеанса.Я могу сделать поиск и получить результаты.

Однако, если я попытаюсь сделать это с помощью PHP-кода через CURL, поисковый скрипт попытается выйти из меня, несмотря на передачу файла cookie.

Вот мой код:

<code><?php 

$cookieArray = login2();

foreach ($cookieArray as $key => $value) {
    $sessid = $key;
    $sessvalue = $value;    
}

$cookieSet = $sessid.'='.$sessvalue;

$result = search_name ($name_last, $name_first, $start_dt, $end_dt, $userid, $cookieSet);

echo "<pre>"; print_r($result); echo "
"; // войти в систему и вернуть cookie cookie login2 () {// установить поля сообщения $ post = ['login_id' => 'xxxxx', 'pw '=>' xxxxx ',]; $ ch = curl_init (' https://xxx.xxx.org/login.asp'); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ post); curl_setopt ($ ch, CURLOP),curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 0); // выполнить! // $ response = curl_exec ($ ch); if (! curl_exec ($ ch)) {die ('Ошибка: "'. curl_error ($ ch). '"- Код: '. Curl_errno ($ ch));} else {$ response = curl_exec ($ ch);} // закрыть соединение, освободить используемые ресурсы curl_close ($ ch); // Затем после вызова curl_exec:$ header_size = curl_getinfo ($ ch, CURLINFO_HEADER_SIZE); $ header = substr ($ response, 0, $ header_size); $ body = substr ($ response, $ header_size); // получить cookie // вариант нескольких файлов cookie, предоставленный @Combuster в комментариях preg_match_all ('/ ^ Set-Cookie: \ s * ([^;] *) / mi', $ response, $ совпадений); $ cookies = array (); foreach ($ совпадений [1] как $ item) {parse_str ($ item, $ cookie));$ cookies = array_merge ($ cookies, $ cookie);} echo "
"; print_r($cookies); echo "
";$ cookieArr = [];foreach ($ cookie как $ key => $ value) {$ cookieArr [$ key] = $ value;} return $ cookieArr;} // просмотр функции search_name ($ name_last, $ name_first = NULL, $ start_dt, $ end_dt, $ userid, $ cookiesIn) {// установка полей сообщения $ poststring = 'name_last = Smith & date_start = 01/01/2019 & date_stop = 03/08/ 2019 & ref_md = 53557' ;$ url = 'https://xxx.xxx.org/frm_search_idx.asp'; $ ch = curl_init ($ url);$ headers = array ("Accept: Content-Type: application / x-www-form-urlencoded", "Content-Type: application / x-www-form-urlencoded", "Cache-Control: no-cache", "Подключение: Keep-Alive ");//, $ options = array (CURLOPT_RETURNTRANSFER => true, // вернуть веб-страницу CURLOPT_HEADER => true, // вернуть заголовки в дополнение к содержимому CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode ($ poststring), $ CURLOPTHT> H>, CURLOPT_VERBOSE => true, CURLOPT_FOLLOWLOCATION => false, // следовать за перенаправлениями CURLOPT_ENCODING => "", // обрабатывать все кодировки CURLOPT_AUTOREFERER => true, // установить реферер для перенаправления CURLOPT_CONNECTTIMEOUT =>>>>>>>>>120, // время ожидания ответа CURLOPT_MAXREDIRS => 10, // остановка после 10 перенаправлений CURLINFO_HEADER_OUT => истина, CURLOPT_SSL_VERIFYPEER => ложь, // проверка SSL-сертификатов CURLOPT_HTTP_VERSION => CURL_HTOP_1> $> $> $> _CUR__1_C__T_K_T_T_V_C__TF_V__C__TF_V_C_T_C__C_C_T_K_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_C_S_S_S_P_C_PBcurl_setopt_array ($ ch, $ options);// выполнить!if (! curl_exec ($ ch)) {die ('Ошибка: "'. curl_error ($ ch). '" - код:'. curl_errno ($ ch));} else {$ rough_content = curl_exec ($ ch);// $ response = curl_exec ($ ch);} $ err = curl_errno ($ ch);$ errmsg = curl_error ($ ch);$ header = curl_getinfo ($ ch);curl_close ($ ch);$ header_content = substr ($ rough_content, 0, $ header ['header_size']);$ body_content = trim (str_replace ($ header_content, '', $ rough_content));$ pattern = "# Set-Cookie: \\ s + (? [^ =] + = [^;] +) # m"; preg_match_all ($ pattern, $ header_content, $ match); $ cookiesOut = implode (";", $ соответствует ['cookie']); $ header ['errno'] = $ err; $ header ['errmsg'] = $ errmsg; $ header ['headers'] = $ header_content; $ header ['content'] = $ body_content; $ header ['cookies'] = $ cookiesOut; вернуть заголовок $; }

Вот ответ, который я получаю:

Array
(
    [ASPSESSIONIDCURAQRDR] => HEKLBNEDNKGONMIAJPKHPLGN
)

Sess id:ASPSESSIONIDCURAQRDR

Sess value:HEKLBNEDNKGONMIAJPKHPLGN
Cookie
Array
(
    [ASPSESSIONIDCURAQRDR] => HEKLBNEDNKGONMIAJPKHPLGN
)
Array
(
    [url] => https://xxx.xxx.org/frm_search_idx.asp
    [content_type] => text/html
    [http_code] => 302
    [header_size] => 266
    [request_size] => 410
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.031
    [namelookup_time] => 0
    [connect_time] => 0
    [pretransfer_time] => 0.016
    [size_upload] => 78
    [size_download] => 130
    [speed_download] => 4193
    [speed_upload] => 2516
    [download_content_length] => 130
    [upload_content_length] => 78
    [starttransfer_time] => 0.031
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

    [primary_ip] => 00.00.00.000
    [primary_port] => 443
    [local_ip] => **.**.**.**
    [local_port] => 17711
    [redirect_url] => https://xxx.xxx.org/login.asp
    [request_header] => POST /frm_search_idx.asp HTTP/1.1
Host: xxx.xxx.org
Accept-Encoding: deflate, gzip
Cookie: ASPSESSIONIDCURAQRDR=HEKLBNEDNKGONMIAJPKHPLGN
Accept: Content-Type: application/x-www-form-urlencoded
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 78


    [errno] => 0
    [errmsg] => 
    [headers] => HTTP/1.1 302 Object moved
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 130
Content-Type: text/html
Expires: Mon, 11 Mar 2019 18:26:09 GMT
Location: login.asp
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Mon, 11 Mar 2019 18:27:08 GMT


    [content] => 
Object Moved
This object may be found here.
    [cookies] => 
)

Любая помощь приветствуется.

Заранее спасибо,

George

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...