Hôm nay mình có viết một tool nhỏ và cần phải lấy thông tin IP hiện tại của máy người dùng với biến $_SERVER[‘REMOTE_ADDR’] trong PHP. Tuy nhiên nếu dùng biến này thì trên host trực tuyến thì nó chạy tốt nhưng nếu để ở local thì nó sẽ nhận diện sai. Vậy là phải giải quyết bằng cách phân biệt PHP đang chạy trên local hay trên host trực tuyến.
Giải pháp cũng đơn giản là biến luôn có giá trị 127.0.0.1 hoặc ::1 khi chạy trên local nên ta chỉ cần kiểm tra xem $_SERVER[‘REMOTE_ADDR’] có nhận giá trị này không. Nếu có thì nó là localhost còn không thì chắc nó đang ở chế độ trực tuyến. Dưới đây là code:
1 2 3 4 5 6 7 8 | <?php $localhost_ips = array('127.0.0.1','::1'); if(!in_array($_SERVER['REMOTE_ADDR'], $localhost_ips)){ //Is live host; }else{ //Is localhost; } ?> |
Huỳnh Mai Anh Kiệt