php實現封IP功能
來源:程序員人生 發布時間:2014-02-24 12:18:08 閱讀次數:3563次
早起一起突然看到,我的網站有人在惡心亂搞,為了防止這種事情我想了一個辦法那就是封用戶的IP了.首頁我們來建數據庫:
- CREATE TABLE `su_lockip` (
- `id` int(4) NOT NULL auto_increment,
- `lockip` varchar(1024) default NULL,
- PRIMARY KEY (`id`)
- )
下頁來創建一個封文件的頁面,主要是用戶寫入IP以"|"分開,這個頁面就不多寫了,我就簡單的寫一下,入庫代碼$UlockIp=$_POST['z']?$_POST['z']:'';
- if(emptyempty($UlockIp)){
- exit("<script>alert('對不起,你輸入的信息有誤!');history.back();</script>");
- }
- $sql="update su_lockip set lockip='$UlockIp'";
- if(mysql_query($sql)){
- exit("<script>alert('鎖定成功!');history.back();</script>");
- }else{
- exit("<script>alert('對不起,你輸入的信息有誤!');history.back();</script>");
- }
就這么簡單,最后就是進行鎖定的了.下面代碼是根據數據中是否存用戶IP,如果在就提示被KILL了.代碼如下:
- function lock_user_ip(){
- $Usql =mysql_query("select * from su_lockip");
- $Urs =mysql_fetch_array($Usql);
- $UlockIp=$Urs['lockip'];
- $ClockIp=$this->get_real_ip();
- $Iplist =explode('|',$UlockIp);
- if(in_array($ClockIp,$Iplist)){
- exit('sorry system lock your IP');
- }
- }
-
- function get_real_ip(){
- $ip=false;
- if(!emptyempty($_SERVER["HTTP_CLIENT_IP"])){
- $ip = $_SERVER["HTTP_CLIENT_IP"];
- }
- if (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
- if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
- for ($i = 0; $i < count($ips); $i++) {
- if (!eregi ("^(10|172.16|192.168).", $ips[$i])) {
- $ip = $ips[$i];
- break;
- }
- }
- }
- return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
- }
哈哈寫完了就這么簡單,沒有進行安全過濾處理.
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈