利用php的http_referer函數(shù)來(lái)判斷用戶(hù)的來(lái)路,這是簡(jiǎn)單了,實(shí)例代碼如下:

  1. <?php 
  2.    if (isset($_SERVER['HTTP_REFERER'])) { 
  3.      print "The page you were on previously was {$_SERVER['HTTP_REFERER']}<br />"
  4.    } else { 
  5.      print "You didn't click any links to get here<br />"
  6.       } 
  7.     ?> 
  8. <a >Click me!</a> 

下面我們讓用戶(hù)不知道我們的來(lái)路處理,實(shí)例代碼如下:

  1. <?php 
  2. $host = "www.phpfensi.com"
  3. $referer = "http://".$host
  4. $fp = fsockopen ($host, 80, $errno$errstr, 30); 
  5. if (!$fp){ 
  6.         echo "$errstr ($errno)<br>;n"
  7. }else
  8. $request = " 
  9. GET / HTTP/1.1 
  10. Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */"."
  11. Referer: http://$host 
  12. Accept-Language: zh-cn 
  13. Accept-Encoding: gzip, deflate 
  14. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) 
  15. Host: $host 
  16. Connection: Close" 
  17. ."rnrn"
  18.  
  19.  
  20. fputs ($fp"$request"); 
  21. while (!feof($fp)) 
  22.    $res[] = fgets($fp,1024); 
  23. $html = join("",$res); 
  24. fclose ($fp); 
  25. $fp = file_put_contents("123cha.html",$html); 
  26. echo "done";//開(kāi)源代碼phpfensi.com 

這不就行了?

不過(guò)很奇怪的是,www.phpfensi.com 的頁(yè)面抓下來(lái)是亂碼(除了http頭),這是為什么?難道是因?yàn)橛昧薵zip之類(lèi)壓縮?

  1. <?php 
  2. $host = "www.phpfensi.com"
  3. $html = file_get_contents("http://".$host); 
  4. $fp = file_put_contents("hao123.html",$html); 
  5. echo "done"
  6. ?>; 

但這樣抓的就沒(méi)問(wèn)題,再來(lái)分析開(kāi)始抓的http頭:

HTTP/1.1 200 OK Date: Wed, 31 Aug 2005 00:59:36 GMT Server: Apache/1.3.27 Cache-Control: max-age=1296000 Expires: Thu, 15 Sep 2005 00:59:36 GMT Last-Modified: Mon, 29 Aug 2005 13:56:00 GMT Accept-Ranges: bytes Connection: close Content-Type: text/html Content-Encoding: gzip Content-Length: 14567

果然有這句,Content-Encoding:gzip ,原來(lái)壓縮了的,長(zhǎng)度14567字節(jié)了,用第二種方法抓,原來(lái)沒(méi)壓縮的html是71143字節(jié),原來(lái)file_get_contents還可以自動(dòng)解壓縮.

php實(shí)例二,代碼如下:

  1. <?php 
  2. $host = '127.0.0.1'
  3. $target = '/2.php'
  4. $referer = 'http://www.phpfensi.com'; //偽造HTTP_REFERER地址 
  5. $fp = fsockopen($host, 80, $errno$errstr, 30); 
  6. if (!$fp){ 
  7. echo "$errstr($errno)<br />n"
  8. }  
  9. else
  10. $out = " 
  11. GET $target HTTP/1.1 
  12. Host: $host 
  13. Referer: $referer 
  14. Connection: Closernrn"; 
  15. fwrite($fp$out); 
  16. while (!feof($fp)){ 
  17. echo fgets($fp, 1024); 
  18. fclose($fp); 
  19. ?> 

另一個(gè)2.php文件很簡(jiǎn)單,只是寫(xiě)上一行讀取當(dāng)前的HTTP_REFERER服務(wù)器值的代碼即可,如下:

  1. <?php 
  2. echo "<hr />"
  3. echo $_SERVER["HTTP_REFERER"]; 
  4. ?>
轉(zhuǎn)載請(qǐng)注明來(lái)源:php HTTP_REFERER函數(shù)的使用用法

  哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀(guān)的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無(wú)需額外費(fèi)用,即可穩(wěn)步提升排名至首頁(yè)。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)