>백엔드 개발 >PHP 튜토리얼 >php_php 스킬의 HTTP_REFERER 함수 사용 예

php_php 스킬의 HTTP_REFERER 함수 사용 예

WBOY
WBOY원래의
2016-05-16 20:30:491134검색

이 글은 PHP에서 HTTP_REFERER 함수의 사용법을 예시를 통해 분석한 것입니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

PHP의 http_referer 함수를 사용하여 사용자의 출처를 확인합니다. 예제 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
if (isset($_SERVER['HTTP_REFERER'])) {
"이전에 귀하가 있던 페이지는 {$_SERVER['HTTP_REFERER']}
입니다."; } 다른 {
인쇄 "여기로 이동하기 위한 링크를 클릭하지 않았습니다

";         }
?> 클릭하세요!

사용자가 원산지를 알 수 없도록 하는 방법은 다음과 같습니다.


코드 복사 코드는 다음과 같습니다. $호스트 = "www.jb51.net"
$referer = "http://".$호스트
$fp = fsockopen($host, 80, $errno, $errstr, 30)
if (!$fp){
echo "$errstr ($errno)
;n"; }그밖에{
$request = "
GET/HTTP/1.1
수락: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */ "."*
추천인: http://$host
허용 언어: zh-cn
인코딩 허용: gzip, deflate
사용자 에이전트: Mozilla/4.0(호환 가능, MSIE 6.0, Windows NT 5.1)
호스트: $host
연결: 닫기"
."rnrn"

fputs($fp, "$request")
동안(!feof($fp))
{
$res[] = fgets($fp,1024)
}
$html = Join("",$res)
fclose($fp)
$fp = file_put_contents("123cha.html",$html)
echo "완료";
}

이 정도면 되지 않나요?
그런데 아주 이상한 점은 www.jb51.net의 페이지가 깨져 있다는 것입니다(http 헤더 제외). 왜 그런가요? gzip이나 다른 압축을 사용했기 때문인가요?


코드 복사 코드는 다음과 같습니다. $호스트 = "www.jb51.net"
$html = file_get_contents("http://".$host)
$fp = file_put_contents("hao123.html",$html)
에코 "완료"; ?>;

하지만 이런 식으로 잡는 데에는 문제가 없습니다. 우리가 잡기 시작한 http 헤더를 분석해 보겠습니다.

HTTP/1.1 200 OK 날짜: 2005년 8월 31일 수요일 00:59:36 GMT 서버: Apache/1.3.27 Cache-Control: max-age=1296000 만료: 2005년 9월 15일 목요일 00:59:36 GMT 최종 수정: 2005년 8월 29일 월요일 13:56:00 GMT 허용 범위: 바이트 연결: 닫기 콘텐츠 유형: text/html 콘텐츠 인코딩: gzip 콘텐츠 길이: 14567

물론 다음 문장이 있습니다. Content-Encoding: gzip, 압축된 것으로 밝혀졌고, 길이는 14567바이트이고, 두 번째 방법을 사용하여 캡처했으며, 압축되지 않은 원본 HTML은 71143바이트이며, file_get_contents로 밝혀졌습니다. 자동으로 압축을 풀 수도 있습니다.

php 예제 2, 코드는 다음과 같습니다.


코드 복사

$referer = 'http://www.jb51.net'; //가짜 HTTP_REFERER 주소
$fp = fsockopen($host, 80, $errno, $errstr, 30)
if (!$fp){
echo "$errstr($errno)
n"; }
그렇지 않으면{
$out = "
$target HTTP/1.1 받기
호스트: $host
추천인: $referer
연결: Closernrn";
fwrite($fp, $out)
동안 (!feof($fp)){
echo fgets($fp, 1024)
}
fclose($fp)
}
?>

다른 2.php 파일은 매우 간단합니다. 다음과 같이 현재 HTTP_REFERER 서버 값을 읽는 코드 줄을 작성하기만 하면 됩니다.



코드 복사
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.