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