Avatar billede illuzion Nybegynder
27. maj 2006 - 17:33 Der er 11 kommentarer og
1 løsning

Reklame bliver vist afhængig af hvilket land brugeren kommer fra?

Jeg har denne side med forskellige sjove film og spil osv. På denne side er ca. 50 % af brugerne fra USA, og ca. de resterende 50 % er fra EU.

Er det muligt at lave et script så hvis personen som besøger min sider er fra USA så bliver en slags reklamer vist, og hvis personen er fra EU bliver en anden vist?

Noget med
if (bruger fra USA) {
Vis denne type reklame for USA }
else {
Vis denne type reklame for EU }


Jeg ville blive meget taknemmelig hvis en kunne komme op med noget til mig! =).
Avatar billede coderdk Praktikant
27. maj 2006 - 17:45 #1
Med denne kan du se, rimeligt præcist, hvilket land brugeren's IP er i: http://weirdsilence.net/software/ip2c/
Avatar billede illuzion Nybegynder
27. maj 2006 - 20:37 #2
Har hentet det, men kan ikke få det til at virke :S..
Avatar billede coderdk Praktikant
27. maj 2006 - 21:07 #3
Hvad kan du ikke få til at virke? Har du læst og kigget i eksemplet?
Har du hentet ip2cntry.dat?

Det er så simpelt som:

require_once('ip2c.php');
$ip2c = new ip2country();
$ip2c->init( "ip2cntry.dat" );
$cidx = $ip2c->lookup($_SERVER['REMOTE_ADDR']);
$code = $ip2c->idx2country( $cidx );
echo "Du befinder dig i $code";
Avatar billede coderdk Praktikant
27. maj 2006 - 21:10 #4
Og med lidt fejlhåndtering:

require_once('ip2c.php');
$ip2c = new ip2country();
$res = $ip2c->init( "ip2cntry.dat" );
if ( $res < 0 )
{
  die( "Fejl $res - Kig i ip2c.php for at se fejlen ;)" );
}
$cidx = $ip2c->lookup($_SERVER['REMOTE_ADDR']);
if ( $cidx == -1 )
{
  $code = "ingenmandsland!";
}
else
{
  $code = $ip2c->idx2country( $cidx );
}
echo "Du befinder dig i $code";
Avatar billede illuzion Nybegynder
28. maj 2006 - 00:13 #5
Ved ikke om jeg har hentet den rigtige, har hentet den under Source code, også php module?

Og der er ikke en fil som hedder ip2cntry.dat, kan du fortælle mig hvad jeg skal hente?
Avatar billede coderdk Praktikant
28. maj 2006 - 00:50 #6
nej php module er et php-modul som man skal kompilere ind i php - du skal bruge pure php pakken http://weirdsilence.net/software/85/ - ip2cntry.dat er "Binary database" - http://weirdsilence.net/software/90/

:)
Avatar billede illuzion Nybegynder
29. maj 2006 - 20:58 #7
Nu har jeg fået det til at virke så den udskriver fra hvilket land brugeren er.
Nu har jeg så mit næste problem. Jeg vil som tidligere sagt, have det så der bliver vist en slags reklame når f.ex en bruger fra usa besøger siden, og når en fra eu.

Jeg har prøvet med følgende kode, men det virker ikke.

Dette finder brugerens land:
<?
require_once('ip2c.php');
$ip2c = new ip2country();
$res = $ip2c->init( "ip2cntry.dat" );
if ( $res < 0 )
{
  die( "Fejl $res - Kig i ip2c.php for at se fejlen ;)" );
}
$cidx = $ip2c->lookup($_SERVER['REMOTE_ADDR']);
if ( $cidx == -1 )
{
  $code = "ingenmandsland!";
}
else
{
  $code = $ip2c->idx2country( $cidx );
}
//echo "Du befinder dig i $code";
echo "";
?>

Dette er delen som vælger hvilken reklame der skal vises, på baggrund af landet:
<?php
include ('./country.php');
if ($code = US){
include ('./adsus.php');
}
else include ('./adseu.php');
?>

Når jeg bruger denne kode, bliver ingen af reklamerne vist.
Avatar billede coderdk Praktikant
29. maj 2006 - 23:27 #8
US er kun ét som USA har, EU er for mig lidt lettere, måske noget i stil med:

<?php

require_once('ip2c.php');

$eu_countries = array( 'au', 'be', 'cz', 'dk', 'es', 'fi', 'fr', 'de', 'gr', 'hu', 'ie', 'it', 'lv', 'lt', 'lu', 'mt', 'nl', 'cy', 'pl', 'pt', 'sk', 'si', 'es', 'se', 'uk' );

$ip2c = new ip2country();
$res = $ip2c->init( "ip2cntry.dat" );
if ( $res < 0 )
{
  die( "Fejl $res - Kig i ip2c.php for at se fejlen ;)" );
}
$cidx = $ip2c->lookup($_SERVER['REMOTE_ADDR']);
if ( $cidx == -1 )
{
  $code = "ingenmandsland!";
}
else
{
  $code = $ip2c->idx2country( $cidx );
}

if ( in_array( strtolower( $code ), $eu_countries ) )
{
  include ('./adseu.php');
}
else
{
  include ('./adsus.php');
}

?>

Altså én reklame for EU og resten af verden får samme som USA?
Avatar billede illuzion Nybegynder
30. maj 2006 - 15:12 #9
Det er fordi jeg samarbejde med et selskab, som kun vil have deres reklamer vidst til folk fra US, men burde det ikke kunne lade sig gøre ved at gøre sådan her så:

<?php

require_once('ip2c.php');

$us_country = array( 'us' );

$ip2c = new ip2country();
$res = $ip2c->init( "ip2cntry.dat" );
if ( $res < 0 )
{
  die( "Fejl $res - Kig i ip2c.php for at se fejlen ;)" );
}
$cidx = $ip2c->lookup($_SERVER['REMOTE_ADDR']);
if ( $cidx == -1 )
{
  $code = "ingenmandsland!";
}
else
{
  $code = $ip2c->idx2country( $cidx );
}

if ( in_array( strtolower( $code ), $us_country ) )
{
  include ('./adsus.php');
}
else
{
  include ('./adseu.php');
}

?>
Avatar billede coderdk Praktikant
30. maj 2006 - 20:16 #10
Mjah, det er blot en lille del af de amerikanske domæner. Der er flere andre, f.eks. .vi (Virgin Islands) og .um (United Stanes Minor Islands) - Måske er der tilmed flere...
Avatar billede coderdk Praktikant
30. maj 2006 - 20:18 #11
Anyway, du får lige et svar, hvis du kunne bruge det :)

Du kan se alle lande her: http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
Avatar billede illuzion Nybegynder
30. maj 2006 - 20:20 #12
Ahh okay :).. Jeg har brugt den med eu landende idag, og den virker som en drøm.. Og det går nok at jeg laver den på denne måde da, største delen af mine brugere kommer fra enten us, eller eu :).
Så tusind tak, jeg er meget taknemmelig.
Hvis du smider et svar, så kan du få dine point :).
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