نحوه دریافت IP کاربر در PHP

نحوه دریافت IP کاربر در PHP

چگونه میتوان آدرس IP کاربر را با زبان PHP بدست آورد؟

این تقریبا یک موضوع سر راست است، فقط و فقط چند خط کد میتونه کاری کنه که شما آدرس IP کاربرتون رو بدست بیارید.بیشتر اوقات این آدرس میتوانند درست باشند ،همه چیز درمورد چند خط کد  PHP  است که شما استفاده میکنید. گاهی اوقات ممکنه آدرس IP اشتباه باشد یعنی جعلی یا تقلبی باشد .ما درباره ی مواردی صحبت میکنیم که واقعی هستند تا بتوانیم دیگر جنبه های این مسئله را بتوان دید.
یک خط کد PHP هم میتواند آدرس IP کاربر را به شما دهد ،پس چرا ما برای دریافت آدرس IP باید دردسر زیادی بکشیم؟   ادامه این مقاله را با دقت بیشتر بخوانید !

                                                
                                                    echo $_SERVER['REMOTE_ADDR'];                                                
                                        

SERVER_$  یک آرایه زبان PHP میباشد که توسط خود سرور تنظیم می شود. اگر شما طبق  این خط عمل کنید شاید به اون نتیجه دلخواه و بازدهی که مدنظرتان هست نرسید.
برای مثال اگر یک کاربر یا سیستمی که دارای Proxy  میباشد وارد شود ،پس این متغیر متناسب نخواهد بود.و همچنین توجه داشته باشید که این سر صفحه ها با تنظیم خود آدرس IP به راحتی توسط کاربران کلاهبرداری میشود.
این تابع PHP زیر اکثر سناریو ها را پوشش میدهد و آدرس IP کاربر را برمیگرداند.

شما میتوانید نحوه استفاده از کلاس را از اینجا بخوانید!
 

                                                
                                                    class Request
{

    /**
     * Retrieves IP address set in the request header.
     *
     * Each ISPs sets them following their own logic. There is also a possibility for the user
     * to easily spoof their IP address.
     *
     * So using this for mission critical situations is not advisable.
     * If you are getting the IP address for casual logging purposes, then this is fine.
     */
    public function getIpAddress()
    {
        $ipAddress = '';
        if (! empty($_SERVER['HTTP_CLIENT_IP']) && $this->isValidIpAddress($_SERVER['HTTP_CLIENT_IP'])) {
            // check for shared ISP IP
            $ipAddress = $_SERVER['HTTP_CLIENT_IP'];
        } else if (! empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            // check for IPs passing through proxy servers
            // check if multiple IP addresses are set and take the first one
            $ipAddressList = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            foreach ($ipAddressList as $ip) {
                if ($this->isValidIpAddress($ip)) {
                    $ipAddress = $ip;
                    break;
                }
            }
        } else if (! empty($_SERVER['HTTP_X_FORWARDED']) && $this->isValidIpAddress($_SERVER['HTTP_X_FORWARDED'])) {
            $ipAddress = $_SERVER['HTTP_X_FORWARDED'];
        } else if (! empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) && $this->isValidIpAddress($_SERVER['HTTP_X_CLUSTER_CLIENT_IP'])) {
            $ipAddress = $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];
        } else if (! empty($_SERVER['HTTP_FORWARDED_FOR']) && $this->isValidIpAddress($_SERVER['HTTP_FORWARDED_FOR'])) {
            $ipAddress = $_SERVER['HTTP_FORWARDED_FOR'];
        } else if (! empty($_SERVER['HTTP_FORWARDED']) && $this->isValidIpAddress($_SERVER['HTTP_FORWARDED'])) {
            $ipAddress = $_SERVER['HTTP_FORWARDED'];
        } else if (! empty($_SERVER['REMOTE_ADDR']) && $this->isValidIpAddress($_SERVER['REMOTE_ADDR'])) {
            $ipAddress = $_SERVER['REMOTE_ADDR'];
        }
        return $ipAddress;
    }

    /**
     * To validate if an IP address is both a valid and does not fall within
     * a private network range.
     *
     * @access public
     * @param string $ip
     */
    public function isValidIpAddress($ip)
    {
        if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) {
            return false;
        }
        return true;
    }

}                                                
                                        

 

نحوه دریافت آدرس IP میزبان

با استفاده از نام میزبان  میتوانیم آدرس IP سرور را با استفاده از دستور تابع داخلی خود زبان PHP  به نام  ()gethostbyname را دریافت کنیم.این آدرس  IPV4 را برای میزبان ارائه شده را میتوانیم استفاده کنیم.

مثال :

                                                
                                                    $ipAddress = gethostbyname('www.example.com');                                                
                                        
اشتراک

0 نظرات

پاسخ دهید