Avatar billede thulstrup Nybegynder
15. august 2003 - 10:54 Der er 29 kommentarer og
1 løsning

spm ang. HTTP_REFERER

Når en bruger kommer ind på min side kører jeg en:
$referer = $_SERVER['HTTP_REFERER'];
som jeg så propper ind i databasen. Desværre så er det kun ca. 1/100 gange at $referer indeholder noget og når det endeligt sker, så er det som regl bare et link til min egen side. Hvad er det lige jeg gør galt?
Avatar billede riversen Nybegynder
15. august 2003 - 11:00 #1
sikkert ingenting...referer er jo kun hvis der henvises til din side fra fx eksperten.dk

og det virker ikke hvis brugeren har firewall
Avatar billede exp Juniormester
15. august 2003 - 11:01 #2
Hvis du indtaster adressen direkte i browseren, får du ingen referer. Eller hvis der er klikket direkte fra foretrukne...
Desuden er der nogen firewalls der ikke opgiver referer
Avatar billede thulstrup Nybegynder
15. august 2003 - 11:14 #3
Jeg synes bare at det virker lidt mærkeligt at 99% af alle brugere taster adressen ind eller har siden i foretrukne....
Hvad så når det er min egen side der står som referer, hvad skyldes det så?
Avatar billede riversen Nybegynder
15. august 2003 - 11:16 #4
at du selv linker til din egen side på en eller anden vis
Avatar billede riversen Nybegynder
15. august 2003 - 11:17 #5
men du kan jo bare teste det selv og se om det bliver smidt i databasen...hvis det gør, så er det jo rigtig kodet
Avatar billede exp Juniormester
15. august 2003 - 11:20 #6
Du kunne jo prøve at lægge et link herinde, og så klikke dig igennem til det, og så se om eksperten er referer...
Avatar billede thulstrup Nybegynder
15. august 2003 - 11:20 #7
Så hvis jeg linker til siden her fra eksperten og jeg/i trykker på linket, så burde eksperten vel stå som referer.

Jeg prøver lige:
www.turbinehallen.dk
(gider i trykker?)
Avatar billede TRoXa Novice
15. august 2003 - 11:22 #8
så er der trykket :)
Avatar billede thulstrup Nybegynder
15. august 2003 - 11:24 #9
Tak troxa! Jeg kan se din ip og din user agent, men referer er tom.
Avatar billede TRoXa Novice
15. august 2003 - 11:26 #10
det er fordi jeg har firewall ;-)
Avatar billede thulstrup Nybegynder
15. august 2003 - 11:37 #11
Ahh ok :-)

Er der så ikke en UDEN firewall der kunne tænkte sig at trykke?
Avatar billede TRoXa Novice
15. august 2003 - 11:41 #12
du kan jo bare prøve at trykke selv :)
Avatar billede melange Nybegynder
15. august 2003 - 12:18 #13
jeg har trykket...
Avatar billede exp Juniormester
15. august 2003 - 12:22 #14
har lige trykket
Avatar billede thulstrup Nybegynder
15. august 2003 - 12:23 #15
Jeg kan se at der er 6 brugere der har trykket på linket, men jeg har ikke fået referer på en eneste af dem...
Avatar billede gonza.dk Nybegynder
15. august 2003 - 15:02 #16
jeg har trykket, og jeg skulle gerne ligge en referer
Avatar billede thulstrup Nybegynder
15. august 2003 - 17:32 #17
Der er ingen af dem der har trykket der ligger som referer, heller ikke dig gonza.dk
Avatar billede tipsen Nybegynder
15. august 2003 - 17:37 #18
Det er fordi du bruger frames og du først checker referer på en af de sider der inkluderes af dit framesæt - og dermed bliver det url'en til framesættet der kommer til at stå som referer på din underside.

Smid i stedet php-koden med referer i din index.php fil og så fungerer alt fint!
Avatar billede tipsen Nybegynder
15. august 2003 - 17:38 #19
-det var så et svar.
Avatar billede tipsen Nybegynder
15. august 2003 - 17:39 #20
Avatar billede tipsen Nybegynder
15. august 2003 - 17:40 #21
Forøvrigt belastende musik og også den "feature" at billedet udvider sig...
Avatar billede tipsen Nybegynder
15. august 2003 - 17:40 #22
men ok, musikken kan slås fra...
Avatar billede tipsen Nybegynder
15. august 2003 - 17:41 #23
Du har også lavet noget redirection fra undersiderne - sikkert, hvis de ikke kaldes ordentligt via framesættet... (så mine links ovenfor fungerer måske ikke - det afhænger af hvornår du checker referer!)
Avatar billede thulstrup Nybegynder
15. august 2003 - 17:47 #24
men min php funktion ligger som det første i index.php filen...?

<?php
connectToDB();
checkUser("flash");
closeConnection();
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<frameset rows="*,0" border="0" frameborder="0" framespacing="0">
    <noframes>
        <body bgcolor="#f5f5f5">
            <p>Din browser underst&oslash;tter ikke frames.</p>
        </body>
    </noframes>
    <frame src="flashpage.php" name="main" id="main" />
    <frame src="his_velkommen.php" name="bottom" id="bottom" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" />
</frameset>

Ang. musik og billede funktionen så var det kundens ønske :-)
Avatar billede thulstrup Nybegynder
15. august 2003 - 17:48 #25
og checkUser ser sådan her ud:

function checkUser($hvor){
   
    // Angiv hvilken dag, måned, år og dato
    $day = "d".date("dmy");
    $month = "m".date("my");
    $year = "y".date("y");
    $curdate = "d".date("d")."m".date("m")."y".date("y");

    // Angiv brugerens IP adresse
    $ip = getenv("REMOTE_ADDR");
   
    // Tjek om brugeren har været her før i dag
    $fetchdate = mysql_query("SELECT date FROM stats WHERE ip = '$ip'");
    $result = mysql_fetch_array($fetchdate);
    $olddate = $result['date'];

    // Hvis han ikke har været her før i dag, så tæl op
    if($curdate != $olddate) {

        // Angiv siden brugeren kom fra
        $referer = $_SERVER['HTTP_REFERER'];

        // Angiv brugerens browser agent
        $agent = $_SERVER['HTTP_USER_AGENT'];

        // opbyg forspørgelsen
        $query = "INSERT INTO stats (ip, referer, agent, hvor, day, month, year, date) VALUES('$ip', '$referer', '$agent', '$hvor', '$day', '$month', '$year', '$curdate')";

        // udfør forspørgelsen
        $result = @mysql_query($query);
    }
   
}
Avatar billede tipsen Nybegynder
15. august 2003 - 18:05 #26
Jeg tror ikke $_SERVER er globalt, så du skal tilføje følgende øverst i funktionen:

global $_SERVER;
Avatar billede tipsen Nybegynder
15. august 2003 - 18:06 #27
-og bare glem min tidligere forklaring - den er forkastet igen, selvom den lød sandsynlig for mig med de symptomer du beskrev - jeg har selv haft samme problem engang.
Avatar billede thulstrup Nybegynder
16. august 2003 - 15:01 #28
Nu har jeg tilføjet global $_SERVER; til funktionen, men det gør ingen forskel :-(
Avatar billede tipsen Nybegynder
16. august 2003 - 15:23 #29
Så har jeg ikke yderligere forklaringer.
Avatar billede thulstrup Nybegynder
04. september 2003 - 09:01 #30
Jeg opgiver at finde en løsning, det er bare for mærkeligt...
Tipsen du får point som tak for din gode indsats.
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