webForumDet fria alternativet

hämta ip å dölja siffror

PHP

13 svar · 609 visningar · startad av MaRseY

Medlem sedan maj 2001178 inlägg
Frågan#1

först å främst undrar jag hur man hämtar en användares ip när han addar låt oss säga ett foruminlägg..

och sen undrar jag hur man på nått sätt kan dölja de tre sista siffrorna så att utskriften blir i stil med: 213.192.6.xxx

btw.. försökte söka på "ip" men gick inte eftersom ordet va kortare än 4 bokstäver =)

tack på förhand

Medlem sedan mars 200211 inlägg
#2

REMOTE_ADDR & substr

:)

Medlem sedan maj 2001178 inlägg
#3

hmms jo d funka ju..
fast jag vet inte hur långt ip:t är..
det kan ju va 213.213.213. lr 1.2.3.4 .. å allt mittemellan :)

men då kan man ju typ köra en loop som räknar antalet punkter å skrivet inte ut nåt efter den tredje punkten utan xxx istället..

vikken funktion ska man då använda för att kolla vilket tecken en strängplacering innehåller? tittade lite på php.net fast hitta inte det..

Medlem sedan dec. 19995 874 inlägg
#4

hämta platsen på en punkt med sökning från höger. Du skriver ut så lång, och därefter xxx.

Medlem sedan juni 20008 205 inlägg
#5

Eller så kan man använda preg_replace.

 
$ip = getenv('REMOTE_ADDR');
$pattern = '/(\\d+\\.\\d+\\.\\d+\\.)\\d+/';
$ip = preg_replace($pattern, '$1xxx', $ip);
Medlem sedan apr. 2001109 inlägg
#6

om du vill ha folks riktiga ip adress (om de kör proxy tex)
så tror jag detta funkar:

$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
if (empty($ip))
$ip = $REMOTE_ADDR;

Medlem sedan maj 2001178 inlägg
#7

ah spangos sätt va najs :D
å det va så dab.. tänkte inte på det :) tnx

Medlem sedan juni 20001 251 inlägg
#8

explode() ?

Medlem sedan maj 2001178 inlägg
#9

får 2 ip:n nu ;o

från vissa datorer skrivs nu 2 ip ut istället för 1 som jag är ute efter ;o

$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; 
if (empty($ip)){ 
$ip = $REMOTE_ADDR;
}
$pattern = '/(\d+\.\d+\.\d+\.)\d+/';
$ip = preg_replace($pattern, '$1xxx', $ip);
echo $ip;

det har väl å göra med hurvida det blir HTTP_X_FORWARDED_FOR eller inte.. men hur kan jag skippa det falska ipt så att endast det riktiga visas?

Detta händer på mitt webhotell (friserverplads.dk).. på min egen dator så får jag bara det riktiga ipt.

Medlem sedan maj 2001178 inlägg
#10

plz ingen som vet?..

får utksriften

213.66.224.11, 213.65.16.243

istället för bara 213.66.224.11

Medlem sedan juni 20008 205 inlägg
#11

Du kan prova det här:

$pattern = '/^(\\d+\\.\\d+\\.\\d+\\.)\\d+.*/';
Medlem sedan juni 20014 290 inlägg
#12

HTTP_X_FORWARDED_FOR

Kan innehålla merän en ip-adress om trafiken går igenom flera proxy-servrar (en för varje proxy-server)

Medlem sedan maj 2001178 inlägg
#13

ah det funka fint, tack än en gång :)
btw.. var kan man lära sig om patterns? aldrig sett förut

Medlem sedan mars 20007 896 inlägg
#14

Regular Expressions, som använder sig av mönster ( Eng. pattern ) är vad du är ute efter att lära dig. :)

Kolla runt här:
http://www.php.net/preg
http://virtual.park.uga.edu/humcomp/perl/regex2a.html
http://public.yahoo.com/~jfriedl/regex/
http://www.phpbuilder.com ( Någonstans i artikelarkivet har jag för mig att de hade en artikel om det )

267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)