PHP에서 HTTP를 통해 액세스되는 원격 파일이 있는지 어떻게 확인할 수 있습니까?PHP를 사용하여 원격 페이지가 있는지 확인 하시겠습니까?
답변
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); //follow up to 10 redirections - avoids loops
$data = curl_exec($ch);
curl_close($ch);
if (!$data) {
echo "Domain could not be found";
}
else {
preg_match_all("/HTTP\/1\.[1|0]\s(\d{3})/",$data,$matches);
$code = end($matches[1]);
if ($code == 200) {
echo "Page Found";
}
elseif ($code == 404) {
echo "Page Not Found";
}
}
here에서 코드의
수정 된 버전.
Curl을 사용하여 요청이 성공적으로 완료되었는지 확인하십시오. http://w-shadow.com/blog/2007/08/02/how-to-check-if-page-exists-with-curl/
저는 최근에 같은 정보를 찾고있었습니다. 정말 멋진 코드를 여기에서 찾을 : http://php.assistprogramming.com/check-website-status-using-php-and-curl-library.html이
function Visit($url){
$agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch,CURLOPT_VERBOSE,false);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$page=curl_exec($ch);
//echo curl_error($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode >= 200 && $httpcode < 300){
return true;
}
else {
return false;
}
}
if(Visit("http://www.site.com")){
echo "Website OK";
}
else{
echo "Website DOWN";
}
'304 Not Modified ','307 Temporary Redirect' 등은 어떨까요? – nickf
@nickf - '304 Not Modified'는 말괄 반올림과 관련이 있습니까? 어떤 머리글이 뒤틀리는 지 모릅니다. 지정한 것 이외의 것을 보내지 않는다고 가정 할 때, 마지막으로 물어 본 이후로 페이지가 수정되었는지 여부를 서버가 어떻게 알 수 있습니까? –
내가 말려 있거나이 문제를 해결하기는 fsockopen 좋아합니다. 어느 쪽이나 요청한 파일의 상태에 관한 헤더 데이터를 제공 할 수 있습니다. 특히, 404 (파일을 찾을 수 없음) 응답을 찾고있을 것입니다. 이 기능은 DNS 나 다른 오류의 경우에는 응답 코드 (리디렉션의 경우 마지막), 또는 false를 반환합니다
물론 404는 "찾을 수 없음"이고 404는 "파일을 찾을 수 없음"이어야합니다. –
: 여기는 fsockopen으로 사용했습니다 예입니다. 하나의 인수 (url)가 제공되면 HEAD 요청이 이루어집니다. 두 번째 인수가 주어지면 전체 요청이 이루어지고 응답의 내용 (있는 경우)이 두 번째 인수로 전달 된 변수에 참조로 저장됩니다.
function url_response_code($url, & $contents = null)
{
$context = null;
if (func_num_args() == 1) {
$context = stream_context_create(array('http' => array('method' => 'HEAD')));
}
$contents = @file_get_contents($url, null, $context);
$code = false;
if (isset($http_response_header)) {
foreach ($http_response_header as $header) {
if (strpos($header, 'HTTP/') === 0) {
list(, $code) = explode(' ', $header);
}
}
}
return $code;
}
이러한 솔루션을 찾을 수 없습니다 페이지에 대한 적절한 응답을 제공하지 않는 사이트에 작동하지 않습니다 그냥 메모. 예를 들어 사이트의 페이지 테스트는 문제가 발생하여 처리 할 수없는 요청이있을 때 메인 사이트 페이지를로드하기 만하면됩니다. 따라서 사이트는 존재하지 않는 페이지에 대해서도 거의 항상 200 개의 응답을 제공합니다.
일부 사이트는 표준 페이지에서 맞춤 오류를 제공하지만 404 헤더를 제공하지 않습니다.
페이지의 예상 컨텐츠를 알고 예상되는 컨텐츠가 존재하는지 테스트하거나 페이지 내에서 예상되는 오류 텍스트를 테스트하지 않으면 모두 약간 지저분해질 수 있습니다.
가능하면 설명에 대한 참조를 추가하십시오. – DontVoteMeDown
- 1. 오버레이에서 페이지가 열려 있는지 확인
- 2. git : 원격 저장소에 커밋 xyz가 있는지 확인 하시겠습니까?
- 3. NSMutableDictionary가 비어 있는지 확인 하시겠습니까?
- 4. 열/키가 있는지 확인 하시겠습니까?
- 5. 오프셋이 줄 번호 사이에 있는지 확인 하시겠습니까?
- 6. 원격 URL에 이미지가 있는지 확인 - iphone SDK3.0
- 7. PHP를 사용하여 URL이 있는지 확인하십시오.
- 8. 브라우저 탭이 활성화되어 있는지 확인 하시겠습니까? - IE?
- 9. ajax를 통해 페이지가 요청되지 않았는지 확인 하시겠습니까?
- 10. PHP를 사용하여 여러 파일을 원격 서버에 업로드 하시겠습니까?
- 11. 마우스가 여전히 javascript/jQuery에 있는지 확인 하시겠습니까?
- 12. 프로필 콘텐츠가 설정되어 있는지 확인 하시겠습니까?
- 13. ADO.Net Excel, 테이블이 있는지 확인 하시겠습니까?
- 14. PHP를 사용하여 원격 FLV 가져 오기 curl
- 15. WindowServer를 사용할 수 있는지 확인 하시겠습니까?
- 16. NetBeans를 사용하여 PHP를 디버깅 하시겠습니까?
- 17. 페이지가 새로 고침되었는지 확인
- 18. msbuild 확장 팩을 사용하여 폴더가 있는지 확인 하시겠습니까?
- 19. 자바 스크립트를 사용하여 HTML 표 셀이 비어 있는지 확인 하시겠습니까?
- 20. 파일/이미지가 캐시에서로드되고 있는지 확인 하시겠습니까?
- 21. 시스템 볼륨이 음소거되어 있는지 확인 하시겠습니까?
- 22. NSArray - 배열에 객체가 있는지 확인 하시겠습니까?
- 23. DB에 저장된 proc 파일이 있는지 확인 하시겠습니까?
- 24. iPhone에서 비행기 모드가 활성화되어 있는지 확인 하시겠습니까?
- 25. datetimepicker에 값이 입력되어 있는지 확인 하시겠습니까?
- 26. Attr 클래스가 있는지 jQuery에서 확인 하시겠습니까?
- 27. 장고 필드가 비어 있는지 확인 하시겠습니까?
- 28. python : 실행 파일이 경로에 있는지 확인 하시겠습니까?
- 29. 안드로이드에서 WiFi와 GPS가 연결되어 있는지 확인 하시겠습니까?
- 30. Ant 스크립트에 패키지가 있는지 확인 하시겠습니까?
컬은 좋은 제안입니다. 내가 포함시킨 링크가 무엇과 관련이 있는지 확실하지 않습니다. –
고마워, 내가 그것에 대한 리눅스 클립 보드에 결함 chome을 비난 할 수 있습니다. – CodeJoust