MMaRseYMedlem 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
MMaRseYMedlem sedan maj 2001178 inlägg 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..
BrimbaMedlem sedan dec. 19995 874 inlägghämta platsen på en punkt med sökning från höger. Du skriver ut så lång, och därefter xxx.
spangoMedlem sedan juni 20008 205 inläggEller så kan man använda preg_replace.
$ip = getenv('REMOTE_ADDR');
$pattern = '/(\\d+\\.\\d+\\.\\d+\\.)\\d+/';
$ip = preg_replace($pattern, '$1xxx', $ip);
DdabMedlem sedan apr. 2001109 inlägg 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;
MMaRseYMedlem sedan maj 2001178 inlägg ah spangos sätt va najs :D
å det va så dab.. tänkte inte på det :) tnx
MMaRseYMedlem sedan maj 2001178 inlägg 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.
MMaRseYMedlem sedan maj 2001178 inlägg plz ingen som vet?..
får utksriften
213.66.224.11, 213.65.16.243
istället för bara 213.66.224.11
spangoMedlem sedan juni 20008 205 inläggDu kan prova det här:
$pattern = '/^(\\d+\\.\\d+\\.\\d+\\.)\\d+.*/';
GGunnarDMedlem sedan juni 20014 290 inlägg 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)
MMaRseYMedlem sedan maj 2001178 inlägg ah det funka fint, tack än en gång :)
btw.. var kan man lära sig om patterns? aldrig sett förut
SSPiNMedlem sedan mars 20007 896 inlägg 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 )