09/10/2018, 23:33

ban ip một quốc nào đó ???

diển đàn của em đang bị tình trạng rất khó chịu đó là bọn nước ngoài thường vào khủng bố bằng cách post *** , em hỏi làm cách nào để nhận diện được đâu là ip VN đâu là ip nước ngoài , xin mọi người giúp đở
pcdinh viết 01:36 ngày 10/10/2018
Bạn sử dụng database của GeoIP. Nếu dùng PHP thì PHP có một extension viết bằng C hỗ trợ built-in cái đó.
tềthiên viết 01:48 ngày 10/10/2018
Danh sách IP của Việt Nam ở đây nè: http://www.vnix.vn/4-6-300-0-7-00-20041115.htm
concocnho viết 01:38 ngày 10/10/2018
@pcdinh : em sài php
@tềthiên : ko rành về mạng lắm
203.162.0.0 - 203.162.255.255 (/16)
như vậy là em chỉ cần xác định phần 203.162 thôi đúng ko
anhtuannd viết 01:43 ngày 10/10/2018
Dùng Geo IP là đúng rồi.
VD nhé.
Có IP nào đó, bạn dùng hàm ip2long($ip)+4294967296, rồi tra trong database xem giá trị đó thuộc khoảng nào. VD kết quả query trong database là:
"33996344","33996351","GB","GBR","UNITED KINGDOM"
Thì có nghĩa là IP đó thuộc UK, nếu UK thuộc danh sách quốc gia mà bạn muốn ban thì dùng exit; ngay sau đó.
@pcdinh: phương án dùng extension là không khả thi, vì không phải ai cũng có quyền truy cập vào php.ini
concocnho viết 01:45 ngày 10/10/2018
Quote Được gửi bởi anhtuannd View Post
Dùng Geo IP là đúng rồi.
VD nhé.
Có IP nào đó, bạn dùng hàm ip2long($ip)+4294967296, rồi tra trong database xem giá trị đó thuộc khoảng nào. VD kết quả query trong database là:
"33996344","33996351","GB","GBR","UNITED KINGDOM"
Thì có nghĩa là IP đó thuộc UK, nếu UK thuộc danh sách quốc gia mà bạn muốn ban thì dùng exit; ngay sau đó.
@pcdinh: phương án dùng extension là không khả thi, vì không phải ai cũng có quyền truy cập vào php.ini
Tại sao phải cộng thêm 4294967296,4294967296 con số này có ý nghĩa vậy bạn
anhtuannd viết 01:42 ngày 10/10/2018
Đấy chỉ là mẹo thôi mà :P Do hàm ấy trả về 1 số (IPv4 Internet network address) dạng signed, mà trong các database hay để là unsigned.
Có thể dùng cách đơn giản hơn: sprintf("%u", ip2long($ip));
duc9009 viết 01:41 ngày 10/10/2018
Quote Được gửi bởi anhtuannd View Post
Dùng Geo IP là đúng rồi.
VD nhé.
Có IP nào đó, bạn dùng hàm ip2long($ip)+4294967296, rồi tra trong database xem giá trị đó thuộc khoảng nào. VD kết quả query trong database là:
"33996344","33996351","GB","GBR","UNITED KINGDOM"
Thì có nghĩa là IP đó thuộc UK, nếu UK thuộc danh sách quốc gia mà bạn muốn ban thì dùng exit; ngay sau đó.
@pcdinh: phương án dùng extension là không khả thi, vì không phải ai cũng có quyền truy cập vào php.ini

Có thể hướng dẫn chi tiết vụ này ko? Geo IP sử dụng làm sao?

Thasnk
anhtuannd viết 01:42 ngày 10/10/2018
Database có thể download tại đây:
http://www.maxmind.com/app/geoip_country
Bài liên quan
0