2014-03-28 8 views
1

나는 PHP로 코드를 작성합니다. 나는 이것에 위치를 마지막으로 방향을 바꾼 adress를 얻고 싶다 : fluege.decURL - 마지막 리디렉션 주소를 얻는 방법

나는 이것이 배치한다;

 $dep= "sFlightInput[accDep]=ZRH"; 
     $arr= "sFlightInput[accArr]=VIE"; 
     $depregion= "sFlightInput[accDepRegion]="; 
     $arrregion= "sFlightInput[accArrRegion]="; 
     $multidep= "sFlightInput[accMultiAirportDep]=ZRH"; 
     $multiarr= "sFlightInput[accMultiAirportArr]=ZRH"; 
     $ftype = "sFlightInput[flightType]=RT"; 
     $depcity = "sFlightInput[depCity]=Zürich+-+Flughafen+(ZRH)+-+Schweiz"; 
     $arrcity = "sFlightInput[arrCity]=Wien+-+Internationaler+Flughafen+(VIE)+-+Österreich"; 
     $sdate = "sFlightInput[departureDate]=29.03.2014"; 
     $srange = "sFlightInput[departureTimeRange]=2"; 
     $rdate ="sFlightInput[returnDate]=05.04.2014"; 
     $rrange = "sFlightInput[returnTimeRange]=2"; 
     $adt = "sFlightInput[paxAdt]=1"; 
     $chd ="sFlightInput[paxChd]=0"; 
     $inf = "sFlightInput[paxInf]=0"; 
     $cabin = "sFlightInput[cabinClass]=Y"; 
     $airline = "sFlightInput[depAirline]="; 
     $send = $dep.$arr.$depregion.$arrregion.$multidep.$multiarr.$ftype.$depcity.$arrcity.$sdate.$srange.$rdate.$rrange.$adt.$chd.$inf.$cabin.$airline; 

나는 이것을 사용한다;

echo getLastEffectiveUrl("http://www.fluege.de/flight/wait/".$send); 

그리고 기능이

function getLastEffectiveUrl($url) 
{ 
    // initialize cURL 
    $curl = curl_init($url); 
    curl_setopt_array($curl, array(
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_FOLLOWLOCATION => true, 
    )); 

    // execute the request 
    $result = curl_exec($curl); 

    // fail if the request was not successful 
    if ($result === false) { 
     curl_close($curl); 
     return null; 
    } 

    // extract the target url 
    $redirectUrl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL); 
    curl_close($curl); 

    return $redirectUrl; 
} 

그들은 코드이 URL을 제공해야합니다; www.fluege.de/wait/?accDep= accArr = & & & accArrRegion accDepRegion = = = & & accMultiAirportDep accMultiAirportArr = & & flightType = RT = Z depCity % FCrich + - + + FLUGHAFEN 28ZRH % 29 % + - + Schweiz의 & arrCity = 빈 + - + + Internationaler FLUGHAFEN 28VIE % + 29 %, + - + % D6sterreich departureDate = & & 2014년 4월 4일 departureTimeRange = 2 = & returnDate 2014년 4월 20일 returnTimeRange & & paxAdt = 2 = 1 = 0 paxChd & & paxInf = 0 & 객실 클래스 = Y & depAirline =

하지만 필요합니다.

http://www.fluege.de/flight/encodes/sFlightInput/5f8ccad612bafb69e7693f04cfaf1458/ (등)

답변

0

당신이 query'ing하는 사이트가이 필요한 경우, 코드가 작동하지 않도록, 쿠키를 처리하지 않습니다 제공하는 코드입니다.

나는 http://php.net/manual/en/function.curl-setopt.php을 확인했지만 cURL이 쿠키를 메모리에 저장할 수없는 것 같습니다. curl_setopt_array에서 다음 줄을 추가함으로써, 쿠키는 임시 파일에 저장됩니다

CURLOPT_COOKIEJAR => tempnam(sys_get_temp_dir(), 'cookiejar'), 

그러나, 나는 당신의 특정한 경우가 작동하지 않았다. 생성 한 URL에 물음표가없고 스크립트에서 생성 한 URL이 전혀 리디렉션되지 않는 것으로 나타났습니다. 200 OK과 함께 반환됩니다. 어떻게 자신의 API를 사용하는 방법을 물어

curl -LI 'http://www.fluege.de/flight/wait/sFlightInput\[accDep\]=ZRHsFlightInput\[accArr\]=VIEsFlightInput\[accDepRegion\]=sFlightInput\[accArrRegion\]=sFlightInput\[accMultiAirportDep\]=ZRHsFlightInput\[accMultiAirportArr\]=ZRHsFlightInput\[flightType\]=RTsFlightInput\[depCity\]=Zürich+-+Flughafen+(ZRH)+-+SchweizsFlightInput\[arrCity\]=Wien+-+Internationaler+Flughafen+(VIE)+-+ÖsterreichsFlightInput\[departureDate\]=29.03.2014sFlightInput\[departureTimeRange\]=2sFlightInput\[returnDate\]=05.04.2014sFlightInput\[returnTimeRange\]=2sFlightInput\[paxAdt\]=1sFlightInput\[paxChd\]=0sFlightInput\[paxInf\]=0sFlightInput\[cabinClass\]=YsFlightInput\[depAirline\]=' 

는 URL이 어떻게 보일지 불분명 경우 연락해야 fluege.de : 나는 다음과 같은 쉘 명령을 사용하여이를 확인했습니다.

+0

나는 이미 내 답변에서 쿠키 항아리를 추가 했음에도 불구하고 의도 한 결과를 얻지 못했다고 언급했습니다. 나는 정교하게 대답을 바꿨다. 그러나, 나는 당신에게 몇 가지 조언을주는 것을 제외하고는이 시점에서 더 이상 당신을 도울 수 없다는 것을 두려워합니다. 생성 한 URL에 물음표가 포함되지 않아야합니다. 생성 한 URL이 전혀 리디렉션되지 않으므로 cURL이 올바른 답을 제공합니다. – jornane

+0

예, COOL은 쿠키가 COOKIEFILE 등의 메모리에 "저장"될 수 있습니다. –

+0

내 해석에 따르면 COOKIEJAR와 COOKIEFILE은 동일한 쿠키를 사용하지만 새로운 쿠키는 COOKIEFILE에 저장되지 않습니다. 어쨌든 "쿠키 (COOKIEFILE)"라는 용어는 쿠키가 메모리에 저장되는 것이 아니라 파일에 저장 될 것을 제안합니다. – jornane