cari
Rumahpembangunan bahagian belakangtutorial phpphp判断ip黑名单程序代码实例详解

php判断ip黑名单程序代码实例详解

Jul 09, 2017 am 10:23 AM
phpContohsenarai hitam

这篇文章主要介绍了php判断ip黑名单程序代码实例,需要的朋友可以参考下

学校的新闻系统要求有些新闻只开放校内ip浏览,于是重写了一个代码来实现此功能,实现后的结果是,只要把允许访问的ip列入ip.txt这个文件中即可,同时支持c类ip,例如:

ip.txt
192.168
211.67.188
211.67.191.25
代码如下:

 代码如下:

/*
* ip地址黑名单、白名单
* 判断访客地址的ip是否在ip.txt中,支持c类ip
* By xhat
*/
$ip = $_SERVER['REMOTE_ADDR'];
$ipArray = preg_replace("#rn?|n#","",file('ip.txt'));
foreach ($ipArray as $ipTest) {
if (substr_count($ip, $ipTest) != "0") {
echo "ok"; //执行相关命令
die();
}
}
?>

上面大家可以使用代码来骗过了,下面代码进行升级

 代码如下:

<?php 
class block_ip { 
var $Block_ip = array("192.168.1.1","210.10.2.1-20","222.34.4.*"); 
function construct(){ 
} 
function destruct(){ 
} 
private function makePregIP($str){ 
if (strstr($str,"-")) { 
$aIP = explode(".",$str); 
foreach ($aIP as $k=>$v) { 
if (!strstr($v,"-")) { 
$preg_limit .= makePregIP($v); 
} else{ 
$aipNum = explode("-",$v); 
for($i=$aipNum[0];$i<=$aipNum[1];$i++){ 
$preg .=$preg?"|".$i:"[".$i; 
} 
$preg_limit .=strrpos($preg_limit,".",1)==(strlen($preg_limit)-1)?$preg."]":".".$preg."]"; 
} 
} 
}else{ 
$preg_limit .= $str."."; 
} 
return $preg_limit; 
} 
private function getAllBlockIP(){ 
if ($this->Block_ip) { 
foreach ($this->Block_ip as $k=>$v) { 
$ipaddres = $this->makePregIP($v->start_ip); 
$ip = str_ireplace(".",".",$ipaddres); 
$ip = str_replace("*","[0-9]{1,3}",$ip); 
$ipaddres = "/".$ip."/"; 
$ip_list[] = $ipaddres; 
} 
} 
return $ip_list; 
} 
public function checkIP() { 
$iptable = $this->getAllBlockIP(); 
$IsJoined = true; 
//取得用户ip 
$Ip = $this->get_client_ip(); 
$Ip = trim($Ip); 
//剔除黑名单中的IP区段 
if ($iptable) { 
foreach($iptable as $value) { 
if (preg_match("{$value}",$Ip)) { 
$IsJoined = false; 
break; 
} 
} 
} 
// 如果在ip黑名单中就执行如下操作 
if( !$IsJoined ){ 
echo "IP Error"; 
exit; 
} 
} 
private function get_client_ip(){ 
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) 
$ip = getenv("HTTP_CLIENT_IP"); 
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) 
$ip = getenv("HTTP_X_FORWARDED_FOR"); 
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 
$ip = getenv("REMOTE_ADDR"); 
else if (isset($_SERVER[&#39;REMOTE_ADDR&#39;]) && $_SERVER[&#39;REMOTE_ADDR&#39;] && strcasecmp($_SERVER[&#39;REMOTE_ADDR&#39;], "unknown")) 
$ip = $_SERVER[&#39;REMOTE_ADDR&#39;]; 
else 
$ip = "unknown"; 
return($ip); 
} 
} 
?>

引用片段:

 代码如下:

$oBlock_ip = new block_ip(); 
$oBlock_ip->checkIP();


Atas ialah kandungan terperinci php判断ip黑名单程序代码实例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Integrasi PHP dengan Dropbox: Dapatkan senarai fail dan folder menggunakan CurlIntegrasi PHP dengan Dropbox: Dapatkan senarai fail dan folder menggunakan CurlOct 12, 2025 pm 01:21 PM

Tutorial ini memperincikan bagaimana untuk memanfaatkan sambungan curl dalam PHP untuk berinteraksi dengan API Dropbox untuk menyenaraikan fail dan subfolder di bawah folder yang ditentukan. Artikel ini memberi tumpuan kepada menjelaskan cara membina dan menghantar badan permintaan JSON dengan betul ke antara muka fail/list_folder untuk mengelakkan kesilapan "kegagalan penyahkodan JSON" biasa. Ia juga menyediakan contoh kod PHP yang lengkap, meliputi panggilan API, pengendalian ralat dan langkah berjaga -jaga utama untuk membantu pemaju mengintegrasikan fungsi pengurusan fail Dropbox dengan cekap.

PHP IMAP Menyambung ke Pelayan Mel: Soalan Lazim dan Panduan Konfigurasi KeselamatanPHP IMAP Menyambung ke Pelayan Mel: Soalan Lazim dan Panduan Konfigurasi KeselamatanOct 12, 2025 pm 01:06 PM

Artikel ini bertujuan untuk menyelesaikan masalah masa tamat sambungan biasa apabila PHP menyambung ke pelayan mel melalui fungsi imap_open, terutamanya untuk penyedia perkhidmatan seperti AOL. Kandungan teras memberi tumpuan kepada dengan betul mengkonfigurasi alamat pelayan IMAP, protokol port dan penyulitan (seperti SSL/TLS), dan menekankan pentingnya menggunakan kata laluan khusus aplikasi untuk memastikan sambungan e-mel yang stabil dan selamat.

Tutorial Mengekstrak Nilai Medan Tertentu dari PHP Multi-dimensi Array ke Array Satu DimensiTutorial Mengekstrak Nilai Medan Tertentu dari PHP Multi-dimensi Array ke Array Satu DimensiOct 12, 2025 pm 12:54 PM

Tutorial ini terperinci bagaimana untuk mengekstrak dan menyatukan nilai medan tertentu dari pelbagai multidimensi ke dalam array satu dimensi yang baru, rata-rata di PHP. Kami akan meneroka dua pendekatan utama: Menggunakan gelung foreach untuk pemprosesan berulang, dan memanfaatkan fungsi array_column terbina dalam PHP untuk pengekstrakan yang cekap. Melalui contoh kod tertentu, ia membantu pembaca memahami dan menguasai kemahiran operasi array praktikal ini.

Ekstrak dan menggabungkan nilai kunci yang ditentukan dari pelbagai tatasusunan ke dalam array baruEkstrak dan menggabungkan nilai kunci yang ditentukan dari pelbagai tatasusunan ke dalam array baruOct 12, 2025 pm 12:30 PM

Artikel ini bertujuan untuk menyelesaikan masalah bagaimana untuk mengekstrak nilai -nilai kunci tertentu dari pelbagai tatasusunan dan menggabungkan nilai -nilai ini ke dalam array baru. Melalui kod sampel, ia menerangkan secara terperinci bagaimana menggunakan fungsi Operasi Loop dan Array PHP untuk mencapai matlamat ini dengan cekap. Akhirnya, kami akan mendapatkan array yang mengandungi semua nilai sasaran untuk memudahkan pemprosesan dan analisis data berikutnya.

Gunakan jQuery untuk mendapatkan teks label dengan cekap kotak semak yang tidak terkawalGunakan jQuery untuk mendapatkan teks label dengan cekap kotak semak yang tidak terkawalOct 12, 2025 pm 12:09 PM

Butir tutorial ini bagaimana menggunakan jQuery untuk mengenal pasti dan mengekstrak teks label yang berkaitan dengan tepat untuk semua kotak semak yang tidak terkawal pada halaman. Dengan menggabungkan: tidak (: diperiksa) pemilih dan kaedah DOM Traversal Seterusnya ('Label'), kami akan belajar bagaimana untuk mengumpul teks label ini ke dalam array, meletakkan asas untuk penyerahan bentuk atau pemprosesan data berikutnya, memastikan ketepatan dan kesempurnaan data.

Panduan untuk Menyelesaikan HttPException: 400 Kegagalan Pengesahan CSRF di YII2Panduan untuk Menyelesaikan HttPException: 400 Kegagalan Pengesahan CSRF di YII2Oct 12, 2025 am 11:09 AM

Artikel ini mengambil pandangan yang mendalam pada httpException biasa: 400 tidak dapat mengesahkan kesilapan penyerahan data anda dalam rangka kerja YII2, yang biasanya berpunca daripada kegagalan pengesahan token CSRF. Artikel ini menganalisis punca utama masalah - Generasi token CSRF dalam permintaan Ajax tidak konsisten dengan halaman yang diberikan token, dan memberikan penyelesaian yang jelas: dengan mendapatkan token dari tag meta yang ada, pastikan token yang dikemukakan oleh permintaan yang dijangkakan oleh pihak yang dijangkakan.

Tutorial Pengesahan Pengguna Multi-Table Laravel 8 APITutorial Pengesahan Pengguna Multi-Table Laravel 8 APIOct 12, 2025 am 09:45 AM

Artikel ini bertujuan untuk membimbing pemaju tentang cara melaksanakan pengesahan pengguna multi-meja di API Laravel 8 dan menyelesaikan masalah yang dilakukan oleh Lalai :: Percubaan hanya dapat mengesahkan pengguna dari jadual pengguna. Menggunakan pengawal pengesahan tersuai dan penyedia pengguna, kami akan menunjukkan cara mengkonfigurasi Laravel untuk mengesahkan pelbagai jenis pengguna dari pelbagai jadual, seperti pelajar dan guru.

Tutorial mengenai kumpulan dan membuat data JSON mengikut kategori dalam PHPTutorial mengenai kumpulan dan membuat data JSON mengikut kategori dalam PHPOct 12, 2025 am 09:15 AM

Butir tutorial ini bagaimana untuk mengendalikan data kompleks dalam format JSON dalam PHP. Tukar rentetan JSON ke dalam array PHP melalui JSON_DECODE, kemudian menunjukkan cara untuk mengumpulkan data dengan cekap mengikut kunci tertentu (seperti "kategori"), dan akhirnya memaparkan data yang dikumpulkan dalam bentuk HTML berstruktur melalui gelung bersarang untuk memastikan bahawa pautan dan tajuk artikel di bawah setiap kategori dapat dibentangkan dengan betul.

See all articles

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Topik panas