Aan die hand van die IP-adres van 'n besoeker op u webwerf kan u baie oor hom uitvind - land, stad, naam en e-posadres van die internetverskaffer, ens. Maar die belangrikste waarde is dat die IP kan dien as 'n besoekers-ID vir skrifte aan die bedienerskant. Hieronder word beskryf hoe u die IP-adres met behulp van PHP kan bepaal.
Dit is nodig
Basiese kennis van PHP
Instruksies
Stap 1
Gebruik die getenv-funksie om die IP-adres te onttrek uit die opskrifte wat na die blaaierversoekbediener gestuur word. Dit lees die waardes wat daaruit gespesifiseer word uit die omgewingsveranderlikes. 'N Veranderlike genaamd REMOTE_ADDR word gebruik om die besoeker se IP-adres te stoor. Die kliënt kan egter 'n instaanbediener gebruik, in welke geval die veranderlike sy adres bevat en nie die adres wat u wil hê nie. U kan agterkom dat die internet surfer 'n intermediêre IP gebruik deur na die omgewingsveranderlike genaamd HTTP_VIA te kyk. Alle adresse van die proxy-bedieners wat by die ketting betrokke is, word daarin geplaas, geskei deur komma's. Tussenbedieners moet die adres van die besoeker in 'n veranderlike met die naam HTTP_X_FORWARDED_FOR plaas, maar dit hang heeltemal af van die instellings vir die instaanbediener. Dit beteken dat u die inhoud van ten minste drie veranderlikes moet nagaan om soveel moontlik moontlikhede te vind om die IP-adres te bepaal: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, en verkieslik
Stap 2
U kan byvoorbeeld al drie veranderlikes in een lyn PHP-kode kombineer, soos volg:
$ ipAddr = getenv ('HTTP_CLIENT_IP') of $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') of $ ipAddr = getenv ('REMOTE_ADDR');
Nadat u die waarde van die IP-adres op hierdie manier verkry het, is dit raadsaam om dit van moontlike verwringings en onnodige karakters te verwyder. U kan 'n gewone uitdrukking hiervoor gebruik:
$ ipAddr = snoei (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
Stap 3
Dit bly om beide reëls kode in een funksie te kombineer:
funksie getIP () {
$ ipAddr = getenv ('HTTP_CLIENT_IP') of $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') of $ ipAddr = getenv ('REMOTE_ADDR');
terugkeer trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}