Avatar billede nicocarlos Nybegynder
10. januar 2005 - 14:54 Der er 9 kommentarer og
1 løsning

Kan ikke finde ip addressen på nogle brugere

Hejsa nogle ip addresser kan mit script ikke få fat i hvad kan det skyldes? Jeg har lavet et log system og vil have fat i så meget som muligt:

$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
               
$sqlattack = "INSERT into v_logs (user_id, ip, browser, referer, tidspunkt, host) VALUES ('$youid','$REMOTE_ADDR','$HTTP_USER_AGENT','$HTTP_REFERER',NOW(),'$hostname')";
mysql_query($sqlattack) or die(mysql_error());

Med det får jeg ip, hostname og etc, men det virker ikke godt nok da jeg server nogle brugere er logget ind så jeg ikke kan se ip etc.

PÅ forhånd tak
Avatar billede coderdk Praktikant
10. januar 2005 - 16:07 #1
$REMOTE_ADDR bør være $_SERVER['REMOTE_ADDR']
Hostname findes ikke altid...
$HTTP_REFERER bør være $_SERVER['HTTP_REFERER'] og denne kan du ikke altid se - Det er helt op til browseren om den vil sende det med (nogle anti-virus programmer/firewalls fjerne denne)..
$HTTP_USER_AGENT bør være $_SERVER['HTTP_USER_AGENT']...
Avatar billede olebole Juniormester
10. januar 2005 - 16:07 #2
<ole>

Det vil du aldrig kunne med 100% sikkerhed. Brugeren kan 'gemme' sig bag en proxy-server, m.m. Denne gør det nu lidt bedre:

function getIP() {
    if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {
        if ($_SERVER["HTTP_CLIENT_IP"]) {
            $proxy = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $proxy = $_SERVER["REMOTE_ADDR"];
        }
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    } else {
        if ($_SERVER["HTTP_CLIENT_IP"]) {
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $ip = $_SERVER["REMOTE_ADDR"];
        }
    }
    return array($proxy, $ip);
}

$aIP = getIP();
print "Proxy: ".$aIP[0]." || IP: ".$aIP[1];

HTTP_REFERER er endnu mere usikker at benytte - den er det meget let at ændre  :)

/mvh
</bole>
Avatar billede nicocarlos Nybegynder
10. januar 2005 - 16:33 #3
Jeg tester tak indtil videre
Avatar billede gammelhat Nybegynder
10. januar 2005 - 17:14 #4
ole, og det mener du ikke forwarded_for er?
Avatar billede coderdk Praktikant
10. januar 2005 - 17:16 #5
gammelhat, ikke alle proxy'er sender HTTP_X_FORWARDED_FOR ;)
Avatar billede gammelhat Nybegynder
10. januar 2005 - 17:17 #6
nej, men det er meget nemt for en klient at sætte en falsk ind..
Avatar billede coderdk Praktikant
10. januar 2005 - 17:18 #7
gammelhat, Nååh ja, det er selvfølgelig rigtigt :) Generelt er det jo nemt at ændre alle headere ;)
Avatar billede nicocarlos Nybegynder
10. januar 2005 - 18:07 #8
hmm, tror det virker nu, men på nogle nu har jeg set en anden fejl.
Der hvor jeg før satte user_id ind i logs, der er nogen logs uden et bruger id, det må have noget med sessions at gøre, fordi jeg får user_id fra en session som indeholder brugerens id.
Så på en eller anden måde kan jeg ikke få den session mere. Jeg har skiftet server kan det have noget med det at gøre?
el.
Har det noget med php.ini at gøre?
Avatar billede nicocarlos Nybegynder
12. september 2005 - 00:38 #9
lig svar olebole
Avatar billede nicocarlos Nybegynder
11. juni 2007 - 22:20 #10
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester