iT邦幫忙

DAY 14
2

遭遇PHP之經驗分享系列 第 14

[鐵人賽Day14]取得訪客IP方法與應用

上一篇「[鐵人賽Day13]$_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次數更新失敗";
        }
     }     
?>

上一篇
[鐵人賽Day13]$_SERVER簡述與判別瀏覽網站使用者瀏覽器的語系
下一篇
[鐵人賽Day15]使用$_SERVER擷取網址個別值
系列文
遭遇PHP之經驗分享30

尚未有邦友留言

立即登入留言