[PHP]取得訪客IP方法與應用

  • 2633
  • 0
  • PHP
  • 2015-08-05

摘要:[PHP]取得訪客IP方法與應用

 
上一篇「[PHP]$_SERVER簡述與判別瀏覽網站使用者瀏覽器的語系」有提到$_SERVER,就讓我不斷再想那些參數可以運用在哪個地方
首先想到的就是$_SERVER['REMOTE_ADDR'],取得訪客IP
程式碼如下:

<?php
  $guest_ip=$_SERVER['REMOTE_ADDR'];
  echo "您的IP是:".$guest_ip."<br />";
?>
 
但取得訪客的IP又能做什麼應用呢?
想到的有:
1.記錄下訪客的IP,可以得知訪客去過站內哪些網頁
2.會員登入IP紀錄,可得知會員是否異常登入(EX:Try密碼)
3.當網站被某IP大量攻擊時,可以依紀錄得知
4.封鎖惡意IP並禁止訪問網站
 
而要PHP跟MySQL配合的話,該如何用呢?
筆者寫了個簡單的示範,有興趣的讀者可以複製回去試看看
 
解說:先使用$_SERVER['REMOTE_ADDR']取得訪客IP,再進資料庫搜尋這筆IP有否被記錄,假若沒有,則馬上寫入;假如有這筆紀錄,則更新此IP的來訪紀錄及最後來訪時間
 
資料庫名稱:ithome_test
資料表名稱:guest_ip
欄位               類型                                      其他
  id                 int(8)                AUTO_INCREMENT、PRIMARY KEY
guest_ip          varchar(30)
number           int(10)
view_date       timestamp
 
程式碼如下:
「guest_ip.php」

<?php
$guest_ip=$_SERVER['REMOTE_ADDR'];
     echo "您的IP是:".$guest_ip."<br />";
    
     $conn=mysql_connect('127.0.0.1','root','') or die("Error");
     mysql_select_db('ithome_test');
    
     $sql = "SELECT `guest_ip` FROM `guest_ip` WHERE `guest_ip`='$guest_ip'";
     $result=mysql_query($sql);
     $nums=mysql_num_rows($result);
    
     if($nums <= 0){
        $sql2 = "INSERT INTO `guest_ip`(guest_ip, number) VALUE('$guest_ip', '1')";
        $result2=mysql_query($sql2);
        if($result2){
            echo "IP已經寫入";
        }else{
            echo "IP寫入失敗";
        }
     }else{
        $sql3="UPDATE `guest_ip` SET `number`=`number`+1,`view_date`=now() WHERE `guest_ip`='$guest_ip'";
        $result3=mysql_query($sql3);
        if($result3){
            echo "IP次數已更新";
        }else{
            echo "IP次數更新失敗";
        }
     }
?>