|
@@ -292,4 +292,38 @@ function lang($str,$lx='')
|
|
|
$nstr = arrvalue($data[$str], $xuhao);
|
|
|
if(!$nstr)$nstr = $str;
|
|
|
return $nstr;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 判断内网,检查 IP 是否是内网地址
|
|
|
+ */
|
|
|
+function isPrivateIP($ip) {
|
|
|
+ $private_ranges = [
|
|
|
+ ['10.0.0.0', '10.255.255.255'],
|
|
|
+ ['172.16.0.0', '172.31.255.255'],
|
|
|
+ ['192.168.0.0', '192.168.255.255']
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 检查 127.0.0.1 和 ::1
|
|
|
+ if ($ip === '127.0.0.1' || $ip === '::1') {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查是否在私有 IP 范围内
|
|
|
+ $ipLong = ip2long($ip);
|
|
|
+ if ($ipLong === false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach ($private_ranges as $range) {
|
|
|
+ $min = ip2long($range[0]);
|
|
|
+ $max = ip2long($range[1]);
|
|
|
+
|
|
|
+ if ($ipLong >= $min && $ipLong <= $max) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
}
|