Avatar billede nbj1 Praktikant
15. oktober 2007 - 14:45 Der er 26 kommentarer og
1 løsning

GMT for at vise hvor folk kommer fra

sad og rode lidt med gmt i php, men kan kun få frem serverens gmt tid og sted hvordan fanger man hvor brugeren kommer fra ?
Avatar billede barklund Nybegynder
15. oktober 2007 - 14:50 #1
Brugerens lokale tid sender man aldrig med i en http-forespørgsel. Det er kun serveren (som regel), der sender timestamps. Men med lidt javascript kan du finde ud af det - men ikke med php :)
Avatar billede nbj1 Praktikant
15. oktober 2007 - 14:55 #2
man kan da fange brugerens ip adresse så syntes jeg da også der må være en mulighed for at fange hvor de kommer fra ?
Avatar billede sw_red_6 Nybegynder
15. oktober 2007 - 14:56 #3
muligvis, men GMT har noget med tid at gøre og der har barklund ret..
Avatar billede nbj1 Praktikant
15. oktober 2007 - 14:57 #4
eller den første server/router de går udaf
Avatar billede nbj1 Praktikant
15. oktober 2007 - 15:02 #5
Examples: UTC, GMT, Atlantic/Azores fanges med date("e T O")
Avatar billede barklund Nybegynder
15. oktober 2007 - 15:23 #6
njb1, men da brugerne ikke fortæller dig, hvilken tidszone de bor i, så kan du jo ikke finde ud af det? Du kan med ip'en og noget geo-ip-opslag finde nogenlunde hvilket land, og derigennem nogenlunde den lokale tidszone, men du kan ikke få at vide, hvilken tidszone en bruger bor i uden at bruge lidt javascript.
Avatar billede olebole Juniormester
15. oktober 2007 - 17:00 #7
<ole>

Brugerens lokale ur (og dermed formodede tidszone) kan man sjældent bruge til ret meget, men hvad med denne løsning:
    http://www.eksperten.dk/artikler/568

/mvh
</bole>
Avatar billede coderdk Praktikant
15. oktober 2007 - 17:21 #8
Avatar billede coderdk Praktikant
15. oktober 2007 - 17:22 #9
Avatar billede nbj1 Praktikant
15. oktober 2007 - 17:28 #10
det er nu ikke for at bruge det til andet end et lille tjek af når de opretter sig om de nu også kommer fra det land/område/by jeg ved ikke hvor meget man kan skyde sig ind på
Avatar billede barklund Nybegynder
15. oktober 2007 - 17:36 #11
Du kan skyde ret præcist, hvis du er villig til at betale for en komplet geo-ip-database. De gratis databaser tilbyder som oftest kun information på landeniveau.

Men tidszone kan du i hvert fald ikke bruge til noget som helst :)
Avatar billede coderdk Praktikant
15. oktober 2007 - 17:39 #12
I øvrigt ser det ud som om hostip.info bliver bedre og bedre: http://www.hostip.info/ - Der kan du være heldig at få mere præcis info
Avatar billede nbj1 Praktikant
15. oktober 2007 - 17:43 #13
hee det jeg kører er gratis på nær min forbindelse og strøm så nul penge :)
kikker lidt på arne artikel og det fra weirdsilence ligner lidt meget heanden men prøvede deres demo den viser fint nok udfra min ip (som jeg aligevel registrere når folk melder sig til) at jeg kommer fra denmark
Avatar billede nbj1 Praktikant
15. oktober 2007 - 17:44 #14
hostip kom frem til (guessed) Borup, DENMARK
Avatar billede nbj1 Praktikant
15. oktober 2007 - 17:45 #15
men land er fint nok med mig
Avatar billede nbj1 Praktikant
15. oktober 2007 - 17:46 #16
jeg behøver ikke at vide hvor de dejlige tøsers seng står :)
Avatar billede nbj1 Praktikant
15. oktober 2007 - 18:04 #17
bruger kun php til at lære lidt mere, men som jeg læse arnes artikel så henter man en mysql database med x antal ip som er stadfæstet herkomsten af og den laver man et opslag i, men man opdatere ikke databasen med nye ip og lande/byer sådan som jeg læser det passer det ?
Avatar billede coderdk Praktikant
15. oktober 2007 - 18:10 #18
Nu har jeg ikke læst den, men jeg går ud fra at den man kan opdatere databasen ud fra samme database som weirdsilence bruger, nemlig http://ip-to-country.webhosting.info/
Avatar billede coderdk Praktikant
15. oktober 2007 - 18:10 #19
Og WS-versionen er i øvrigt meget meget hurtigere end mysql-løsningen ;)
Avatar billede nbj1 Praktikant
15. oktober 2007 - 18:14 #20
ok fik læst det sidste coderdk er det noget du har lavet det der ?
Avatar billede coderdk Praktikant
15. oktober 2007 - 20:36 #21
Yeah, ip2c på weirdsilence :)
Avatar billede nbj1 Praktikant
17. oktober 2007 - 13:26 #22
coderdk har prøvet at kikke  på ip2c men der er desvære fejl her
1 flag vises ik
2 hvis man bruger looup ip ryger man ud
er ved at kikke i koden men kan ikke rigtigt gennemskue fejlen
Avatar billede coderdk Praktikant
17. oktober 2007 - 18:08 #23
Flagene skal du hente separat... Ryger ud? Ikke helt forstået :) Har du kigget i eksemplet?

Det er jo stort set bare:

require_once( 'ip2c_mem.php' );
$ip2c = new ip2countryMem();
$result = $ip2c->init( "ip2cntry.dat" );
if ( $result < 0 )
{
  die( "Der er sket en fejl! Kode: " . $result );
}
$country_idx = $ip2c->lookup( "72.14.221.104" );
$country = $ip2c->idx2country( $country_idx );

Så indeholder $country f.eks. DK, som du kan bruge til navnene:

require_once( 'isocountryarray.php' );
$country_name = $isoCountry[ $country ];
echo "IP'en er fra " . $country_name;

Og flagene:

echo " <img src='world.small/" . strtolower($country_name) . ".png' width='18px' height='12px' alt='Flag for " . $country_name . "' title='Flag for " . $country_name . "' />"

Det burde virke ;) Hvis den skriver fejl er -1 er IP'en ikke i basen, -2 betyder at ip2cntry.dat ikke har det korrekte format, -3 betyder en fejl i åbningen af filen og -4 at init ikke er kaldt før man laver lookup...
Avatar billede nbj1 Praktikant
17. oktober 2007 - 18:15 #24
nej ok he jeg har ændret det til det arne viser i hans artikel men kombineret det med visning af flag så man slå op i mysql og udfra dette henter tilhørende flag, jeg var for dum til at få det andet til at virke :)
men tak aligevel gi lige et svar coderdk
Avatar billede nbj1 Praktikant
17. oktober 2007 - 18:20 #25
det jeg kunne finde udaf var når den finder country vises hele navnet eks Danmark det laver man så om til lower case strtolower($country) der stod ikke _name i min men da man finder flag på dk kan den ikke finde danmark ved ikke om jeg har ret
Avatar billede coderdk Praktikant
17. oktober 2007 - 18:24 #26
hehe ok :) men mit eksempel burde vist virke :)
Avatar billede nbj1 Praktikant
17. oktober 2007 - 18:25 #27
det jeg hentede så sådan her ud

session_start();



    require_once('ip2c.php');

    require_once('isocountryarray.php');



    function getmicrotime()

    {

        list($usec, $sec) = explode(" ", microtime());

        return ((float)$usec + (float)$sec);

    }



    $ip2c = new ip2country();

    $start = getmicrotime();

    $ip2c->init( "ip2cntry.dat" );

    $end = getmicrotime();

    $inittime = sprintf('%d',(($end - $start) * 1000));



    if (!isset($_SESSION['user']))

    {

        $cidx = $ip2c->lookup($_SERVER['REMOTE_ADDR']);

        if ($user == -1)

        {

            $user = 'nowhere?';

        }

        else

        {

            $cn = $isoCountry[ $ip2c->idx2country( $cidx ) ];

            $user = $cn . " <img src='/world.small/" . strtolower($user) . ".png' width='18px' height='12px' alt='Flag for " . $cn . "' title='Flag for " . $cn . "' />";

        }

        $_SESSION['user'] = $user;

    }

    else

    {

        $user = $_SESSION['user'];

    }



    $show = 0;



    if (isset($_GET['ip']) && ip2long(trim($_GET['ip'])) != -1)

    {

        $start = getmicrotime();

        $countryIndex = $ip2c->lookup(trim($_GET['ip']));

        $end = getmicrotime();

        $time = sprintf('%d',(($end - $start) * 1000));

        if ($countryIndex == -1)

        {

            $result = "IP is not in database!<br />Query took $time ms";

        }

        else

        {

            $country = $ip2c->idx2country( $countryIndex);

            $cn = $isoCountry[ $country ];

            $result = "$_GET[ip] is found in " . $cn . " <img src='/world.small/" . strtolower($country) . ".png' width='18px' height='12px' alt='Flag for " . $cn . "' title='Flag for " . $cn . "' /><br />Query took $time ms";

        }

        $result .= "<br />Init time was $inittime ms";

        $show = 1;

    }



    $ip2c->destroy();



    echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"



?>
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