2017-12-13 3 views
0

마지막으로 외부 웹 사이트에 컬 호출을 성공적으로 수행합니다. 실제로는 마지막 것으로 예상되는 웹 사이트 페이지를 볼 수 있습니다. 유일한 문제는 :이 페이지를 html 응답으로 볼 수 있으며 localhost에 남아 있고 웹 사이트 페이지를 탐색 할 수 없습니다. 이 게시물 (PHP cURL redirects to localhost)은 비슷한 문제에 대해 설명합니다. 그러나 해결책은 저에게 효과적이지 않습니다. 마지막 전화에서 볼 수 있듯이 내 경우 이론적으로 트릭을 할 것입니다 컬 요청 후 외부 웹 사이트로 리디렉션 할 수 없습니다.

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 

아니지만을 잘 살고

<?php 

$products = explode(',', $_GET['products']); 
$reqheaders = [ 
    'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 
    'Accept-Encoding:gzip, deflate, br', 
    'Accept-Language:it', 
    'Connection:keep-alive', 
    'Host:www.clubpervoi.com', 
    'Referer:https://www.website.com/', 
    'Upgrade-Insecure-Requests:1', 
    'User-Agent:'. $_SERVER['HTTP_USER_AGENT'] 
]; 
$cookie_file = dirname(__FILE__) . '/cookie.txt'; 


$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, 'https://www.website.com/'); 
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file); 
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file); 
curl_setopt($curl, CURLOPT_COOKIESESSION, false); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); 
curl_exec($curl); 
curl_close($curl); 


// Action calls 
for($i=0; $i<3; $i++) { 
    $ch = curl_init(); 
    $params = array('code'=> $products[$i]); 
    $query = http_build_query($params); 
    try{ 
     curl_setopt($ch, CURLOPT_URL, 'https://www.website.com/foo/addProduct?'.$query); 
     //curl_setopt($ch, CURLOPT_HEADER, 1); 
     //curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $reqheaders); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
     curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 
     curl_setopt($ch, CURLOPT_COOKIESESSION, false); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
     $resp = curl_exec($ch); 
     curl_close($ch); 

    } catch (Exception $e) { 
     echo $e; 
    } 
} 


//Here I expect to be redirected to the summary page 
try{ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'https://www.website.com/foo/summary'); 
    //curl_setopt($ch, CURLOPT_HEADER, 1); 
    //curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $reqheaders); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 
    curl_setopt($ch, CURLOPT_COOKIESESSION, false); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
    curl_exec($ch); 
    curl_close($ch); 

} catch (Exception $e) { 
    echo $e; 
} 

: 특히

이 내 코드입니다. 내가 오류를 얻을 마지막 컬 호출 대신

header('location https://www.website.com/foo/summary') 

를 사용하려고하면 분명히

Warning: Cannot modify header information - headers already sent by... 

이전 curl_exec()와 "충돌"이 있기 때문에

하지만 나는 그것을 닫았다

답변

0

이것이 내가 도착한 결론이다. 내가 원하는 것은 curl 요청마다 쿠키를 사용해야하기 때문에 가능하지 않다. 로컬 호스트에서 나가서 외부 웹 사이트를 방문하여 내비게이션을 탐색 할 수 없습니다. 종료하는 순간 쿠키가 무효화되기 때문입니다.

관련 문제