Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[JS] bepalen van land bezoeker

Pagina: 1
Acties:
  • 163 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Voor een bepaalde site wil ik bepalen of bezoekers uit de vs afkomstig zijn of niet. Ik dacht dit te kunnen doen met een voorbeeld dat ik hier vond:
http://www.codingforums.com/archive/index.php?t-46371.html

Meer specifiek gaat het om dit stuk code dat op deze pagina staat
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<script language="Javascript" src="http://gd.geobytes.com/Gd?after=-1"></script> 
<script language="javascript"> 
var sSpanishLocations="ES,MX,GT,SV,HN,NI,CR,EC,PE,CU,DO,PR,PA,VE,CO,BO,AR,CL,PY,UY"; 
var sGermanLocations="DE,AT,CH"; 
var sFrenchLocations="FR,BE"; 
var sPhilippineLocations="PH"; 
var sKoreanLocations="KP,KR"; 
var sChineseLocations="CN"; 
if(typeof(sGeobytesLocationCode)!="undefined") 
{ 
var sCountryCode=sGeobytesLocationCode.substring(0,2); 
if(sCountryCode!="US"&&sCountryCode!="CA") 
{


bovenstaande code is niet helemaal compleet (heb het overtollige even afgekapt) maar het geeft een idee hoe het script werkt. Ik heb het in mijn site verwerkt en dan krijgt als ik zelf de pagina open de "var sCountryCode" netjes de waarde "NL". Als ik echter via een amerikaanse proxy het script benader dan verwacht ik uiteraard dat "var sCountryCode" de waarde "US" krijgt maar dit is niet het geval. Het land kan niet achterhaalt worden als ik via de proxy werk en de functie kan dus geen landcode teruggeven.

Mijn vraag is nu, werkt het script niet goed of ligt het gewoon aan het feit dat ik via de proxy werk? Als het laatste het geval is, hoe kan ik het script dan wel testen?
Als het script gewoon niet goed werkt, heeft iemand dan een betere?:P

Ik heb de volgende US proxy gebruikt: 151.204.42.157 (poort: 8080)

Die had ik van hier: http://www.proxy4free.com/page1.html

Alvast bedankt!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 19:08

orf

Dat hangt af van hoe ze op http://gd.geobytes.com/Gd?after=-1 de taal bepalen.
Is dat een IP2country database, dan is het wat vreemd dat je US proxy geen resultaten geeft. (al kan de database achterhaald zijn).

Je kunt ook kijken naar de Accept language. De eerste taalcode in de string is de ingestelde taal van de bezoeker.

Edit:

Verschillende browser hebben verschillende manieren om de voorkeurtaal te tonen:

http://developer.mozilla....window.navigator.language

[ Voor 19% gewijzigd door orf op 01-11-2007 21:25 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 27-11 10:04

André

Analytics dude

Er zijn een aantal proxies die geen javascript ondersteunen, heb je dat wel gechecked?

Verwijderd

Topicstarter
de check van het land gaat op basis van ip, maar misschien dat daar dus gewoon een fout in zit begrijp ik?

De proxy ondersteunt wel JS dat heb ik net nog even getest voor de zekerheid. Is er anders wellicht iemand die een link naar een javascript module heeft die met zekerheid in staat is om het juiste land te bepalen?

Het lijkt mij in ieder geval beter om op basis van ip adres te bepalen dan op basis van browserlanguage toch?

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 19:08

orf

Het lijkt mij in ieder geval beter om op basis van ip adres te bepalen dan op basis van browserlanguage toch?
Land != Taal

Welke taal krijgt België, Zwitserland of Canada?

De voorkeurtaal in de browser is denk ik het best te gebruiken:

http://www.w3.org/International/questions/qa-lang-priorities

Dat kun je beter doen met een server-side taal. Dan kun je simpelweg kijken naar de meegestuurde Accept-Language.

Quote van w3.org:
14.4 Accept-Language
The Accept-Language request-header field is similar to Accept, but restricts the set of natural languages that are preferred as a response to the request. Language tags are defined in section 3.10.

Accept-Language = "Accept-Language" ":"
1#( language-range [ ";" "q" "=" qvalue ] )
language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )
Each language-range MAY be given an associated quality value which represents an estimate of the user's preference for the languages specified by that range. The quality value defaults to "q=1". For example,

Accept-Language: da, en-gb;q=0.8, en;q=0.7
would mean: "I prefer Danish, but will accept British English and other types of English." A language-range matches a language-tag if it exactly equals the tag, or if it exactly equals a prefix of the tag such that the first tag character following the prefix is "-". The special range "*", if present in the Accept-Language field, matches every tag not matched by any other range present in the Accept-Language field.

Verwijderd

Topicstarter
ja maar het gaat bij mij dus niet om taal maar om het land. Ik snap dat land niet gelijk is aan taal, maar juist daarom moet ik in dit geval echt het land hebben en niet de taal:)

lijkt mij dus in dit geval het beste om dan toch op basis van ip het land te bepalen toch? En heeft iemand wellicht een link naar een js module die dit goed doet?

  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 15-10 19:25

Swaptor

Java Apprentice

Waarom juist JS, en niet server-side?
Als het van vitaal belang is dat de gegevens op basis van je locatie worden weergegeven is JS, zijnde een client-side script, onbetrouwbaar en makkelijk te omzeilen. Om nog maar te zwijgen over eventuele problemen die je krijgt als je geen JS hebt, of het niet hebt ingeschakeld in je browser.

Voor server-side talen is GeoIP natuurlijk een aanrader.

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude


Verwijderd

Topicstarter
bedankt, maar is het mogelijk om aan de serverside het land van een bezoeker te weten dan? Op basis van het remote ipadres en dan in php met een bepaalde procedure het land achterhalen of zo?

ik heb in ieder geval nog niet zo'n script gevonden voor php of bestaat dat wel?

  • Cartman!
  • Registratie: April 2000
  • Niet online
flbos, zoek eens naar : "free ip 2 country" op google. Heeft me al een hoop opgeleverd ieder geval. Zo moeilijk is een beetje zoeken niet, en Swaptor geeft zelfs boven je een link naar een site die zo'n database verkoopt.

  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 15-10 19:25

Swaptor

Java Apprentice

Sterker nog: Bij de vrolijke vrienden van GeoIP hebben ze ook een gratis DB, en zelfs PHP-programmeervoorbeelden in deze taal om alles nog makkelijker te maken.

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude


Verwijderd

Topicstarter
wederom bedankt:)
Die oplossing in PHP van GeoIP werkt prima! Enige nadeel is dat de gratis database wat minder precies schijnt te zijn als de betaalde, maar ja voor niks gaat de zon op he. Bovendien heb ik met wat proxies even de werking van de gratis db getest en die lijkt heel behoorlijk te zijn. Iemand anders toevallig ook ervaring met de precisie gratis db van GeoIP in combinatie met hun PHP oplossing?
Pagina: 1