2010-12-15 3 views
8

cURL을 사용하면 CURL을 CURLOPT_FOLLOWLOCATION = true 인 URL로 지정하여 도착 URL을 볼 수 있음을 알고 있습니다.리디렉션을 PHP에서 넘기기로 수행

예 : $ 정보가 www.example2.com을 할 수 있습니다 최종 목적지의 URL을해야합니다

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "www.example1.com"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$result = curl_exec($ch); 
$info = curl_getinfo($ch); //Some information on the fetch 
curl_close($ch); 

. 위의 이해가 정확하기를 바랍니다. 그렇지 않으면 알려주세요!.

내 주요 질문은 모든 유형의 리디렉션 cURL을 알 수 있다는 것입니다. Apache 리디렉션, 자바 스크립트 리디렉션, 양식 제출 리디렉션, 메타 새로 고침 리디렉션 !?

업데이트 @ceejayoz 및 @Josso에게 감사드립니다. 그래서 PHP를 통해 프로그래밍 방식으로 모든 리디렉션을 수행 할 수있는 방법이 있습니까?

+0

을 표절하지 않으 ? 메타 새로 고침이 가능합니다. – ajreal

+0

@ajreal : Javascript도 가능합니다 (http://pecl.php.net/package/spidermonkey). 정당한 노력만으로는 불가능합니다. – mario

답변

9

cURL은 JS 또는 메타 태그 리디렉션을 따르지 않습니다.

+0

답변 해 주셔서 감사합니다. 나는 조금 질문을 업데이트했다. 감사합니다 – jtanmay

+0

그래서 모든 프로그래밍 방식으로 PHP를 통해 리디렉션을 수행 할 수있는 방법이 있습니다 – jtanmay

+0

아마도 안정적인 방식으로 아닙니다. 상당히 쉽게 메타 새로 고침을 파싱 할 수 있지만 JS를 사용하여 외부 .js 파일을 호출하는 등 여러 가지 방법으로 신뢰할 수있는 파일을 절대 잡을 수는 없습니다. – ceejayoz

1

내가 아는 한, HTTP 헤더 리디렉션을 따른다. (301 및 302).

+0

답변 해 주셔서 감사합니다. 나는 조금 질문을 업데이트했다. 감사합니다 – jtanmay

1

curl은 멀티 프로토콜 라이브러리로, 약간의 HTTP 지원을 제공하지만 그 이상의 경우에는 도움이되지 않습니다. 임시 해결책으로 메타 새로 고침 태그를 수동으로 검색 할 수 있습니다.

하지만 PEAR HTTP_Request 또는 Zend_Http 클래스를 확인하는 것이 더 좋은 생각입니다.이 클래스는 이미 이와 비슷한 것을 제공 할 가능성이 큽니다. phpQuery는 고유 한 http 함수가 포함되어 있으므로 관련성이 있지만 필요할 경우 쉽게 ->find("meta[refresh]") 수 있습니다. 또는 Mechanize와 같은 브라우저 클래스를 찾으십시오. Is there a PHP equivalent of Perl's WWW::Mechanize?

2

이 답변은 조금 늦었지만 비슷한 문제가 발생하여 HTTP 301/302 상태 리디렉션을 따르는 것 이상의 의미가 있습니다. 그래서 rel = canonical과 og : url 메타 태그를 따르는 작은 라이브러리를 작성했습니다.

https://github.com/mattwright/URLResolver.php

나는 많은 혜택을 제공하지 메타 새로 고침 태그를 발견,하지만 머리 또는 신체 HTML 태그가 반환되지 않은 경우 그들은 사용된다.

+1

감사합니다 톤 매트. 당신의 노력에 감사드립니다. –

1

방금 ​​PHP 사이트에서이 파일을 발견했습니다. 리디렉션을 찾기 위해 응답을 파싱하고이를 따라옵니다. 나는 그것이 리디렉션의 모든 유형을 얻을 생각하지 않는다, 그러나 그것은

http://www.php.net/manual/en/ref.curl.php#93163

내가 여기에 복사 거라고 꽤 가까이하지만 난 당신이 모든 자바 스크립트 및 메타 새로 고침을 포함하여 수행

관련 문제