문제

다음 코드는 HTTPS가 아닌 PHP에서 CURL을 사용하여 검색된 URL의 신체 함량을 검색합니다. 헤더뿐만 아니라 데이터를 반환해야하므로 코드를 어떻게 편집하는지 말해 줄 수 있습니까?

내가 여기서 한 시험에서 결과는 결과입니다. 콘텐츠 길이가 있음을 알 수 있습니다. 액세스 방법 만 모르겠습니다.

감사합니다 Stephen

오류 : 0

문자열 (1457) "HTTP/1.1 200 OK 날짜 : SAT, 2009 년 8 월 01 일 06:32:11 GMT 서버 : APACHE/1.3.41 (DARWIN) PHP/5.2.4 MOD_SSL/2.8.31 OPENSSL/0.9.7L CACHE- 제어 : Max-Age = 60 만료 : 2009 년 8 월 1 일 Sat, 06:33:11 GMT 최종 수정 : Thu, 23 Nov 2006 17:44:53 GMT ETAG : "97D620-44B-4565DE15"수락-바이트 컨텐츠 -길이 : 1099 연결 : 닫기 내용 유형 : Text/HTML "

<?php

$curl_handle=curl_init();

$username = "";
$password = "";

$fullurl = "http://www.queensberry.com";
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_HEADER, 1);
   curl_setopt($ch, CURLOPT_VERBOSE, 1);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
   curl_setopt($ch, CURLOPT_FAILONERROR, 0);
   curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
   curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
   curl_setopt($ch, CURLOPT_URL, $fullurl);

   $returned = curl_exec($ch);

   curl_close ($ch);
   var_dump($returned);


?>
도움이 되었습니까?

해결책

해결책은 다음과 같습니다. 이것을 시도하고, 코딩의 나머지를 위와 동일하게 유지하십시오 ...

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 0);
// curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_URL, $fullurl);

$returned = curl_exec($ch);

curl_close ($ch);
var_dump($returned);

Curlopt_header를 0으로 변경하면 페이지 컨텐츠 만 반환되도록합니다.

다른 팁

그렇지 않아야합니다 $fullurl 이다 "https://www.queensberry.com" ?

내가 변경했을 때 $fullurl 언급하고 코드를 실행했듯이 var_dump "건설 중"페이지를 표시했습니다.

Curlopt_header를 0으로 설정하는 것이 옵션이 아니라는 것을 의미하는 헤더가 여전히 필요하다면 빈 줄 (두 CRLF)을 찾아 몸의 시작을 찾을 수 있습니다. 사양 참조 : http://www.w3.org/protocols/rfc2616/rfc2616-sec6.html

그래서 이것은 작업을 수행해야합니다.

    $data = curl_exec($ch);
    $start = strpos($data, "\r\n\r\n") + 4;
    $body = substr($data, $start, strlen($data) - $start);

컬의 getInfo를 사용하여 헤더의 길이를 찾습니다. 그런 다음 응답을 기판합니다.

$info = curl_getinfo($ch);
$start = $info['header_size'];
$body = substr($result, $start, strlen($result) - $start);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top