[PHP] bezoekers scheiden op basis van hun taal

Pagina: 1
Acties:
  • 175 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Ik heb een website. Wil de bezoekers scheiden op basis van hun taal, dus niet op basis van de taal van hun systeem. Ik draai zelf een Engelstalig systeem net als veel andere Nederlanders denk ik. Ik doe dit nu nog met een javascriptje:
code:
1
2
3
4
5
6
7
8
9
10
11
<script language=javascript>

if (navigator.userLanguage == "nl")
{ location.href= 'nl.php'; }
else
if (navigator.userLanguage == "be")
{ location.href= 'be.php'; }
else
{ location.href = 'sponcor.php'; }

</script>

Maar ik wil dit eigenlijk in één php bestandje hebben staan. Men kan nu namelijk heel makkelijk een url typen als http://www.mijnwebsite.com/nl.php ofzo. Ik wil dus dat dit in één bestandje index.php gedaan wordt en een gedeelte included op basis van de taal van de bezoeker. Maar wat is de functie en code hiervoor in PHP? Kan iemand me een stukje op weg helpen?

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 25-09 13:54

chem

Reist de wereld rond

$HTTP_ACCEPT_LANGUAGE
zie ook bij phpMyAdmin de select_lang.lib.php

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

Verwijderd

Op zaterdag 16 maart 2002 08:35 schreef chem het volgende:
$HTTP_ACCEPT_LANGUAGE
zie ook bij phpMyAdmin de select_lang.lib.php
Dan is het de taal van de PC, en als je nu bijv. de keuze hebt uit Engels-talig of NL-talig, dan zul je er weinig aan hebben als een NL-er een Engelstalig besturings systeem heeft :P

Maar zoek ff op: http://www.php.net daar staat ie nl wel op...

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 25-09 13:54

chem

Reist de wereld rond

Op zaterdag 16 maart 2002 08:58 schreef Markuz het volgende:

[..]

Dan is het de taal van de PC, en als je nu bijv. de keuze hebt uit Engels-talig of NL-talig, dan zul je er weinig aan hebben als een NL-er een Engelstalig besturings systeem heeft :P

Maar zoek ff op: http://www.php.net daar staat ie nl wel op...
onzin
die taal stel je in bij je browser, en heeft *niets* met het OS te maken.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Het is gelukt, ik heb dit draaien:
PHP:
1
<?if (strstr($HTTP_ACCEPT_LANGUAGE,"nl,be")) { include "site/nl.php"; }else  { include "site/overige.php"; }?>

Alleen nu telt ie ook Belgen als Engelsen en Nederlanders als buitenlanders. Ik heb hierover nog een wat nader onderzoek gedaan, maar volgens een aantal collega's moet het ook moegelijk zijn met een IP nummer... iemand ideëen daarover? Het zou een stuk strikter zijn...

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 25-09 13:54

chem

Reist de wereld rond

je if statement klopt ook niet, zie www.php.net/strstr

ja, het *kan* op IP range door de db van aangewezen IP's in te lezen en te rangschikken... weet ff niet zo snel de URL ervan, ik zou eens beginnen bij RIPE.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Beetje vooruitgang al :-) Maar ik weet niet zeker of ik hier de goede kant mee opga. Heeft een fransman alstijd een host met .fr? en een belg altijd een .be?
PHP:
1
<?if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != ""){              $proxy = $HTTP_SERVER_VARS["REMOTE_ADDR"];     $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];} else {     $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];}$host =  gethostbyaddr($ip);$at        = $host;$hostdot   = ".";$result    = strrchr($at, $hostdot);echo "The country is $result";?>

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zaterdag 16 maart 2002 16:32 schreef chem het volgende:
je if statement klopt ook niet, zie www.php.net/strstr

ja, het *kan* op IP range door de db van aangewezen IP's in te lezen en te rangschikken... weet ff niet zo snel de URL ervan, ik zou eens beginnen bij RIPE.
Ik zie het idd, foutje! :-)

Heb inmiddels weer iets, maar ik weet niet of het werkt. Het is zo maar ff uit de losse hand... mijn vraag: werkt dit volgens jullie:
PHP:
1
<?if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != ""){      $proxy = $HTTP_SERVER_VARS["REMOTE_ADDR"];    $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];    }else {$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];}$host =  gethostbyaddr($ip);$at        = $host;$hostdot   = ".";$result    = strrchr($at, $hostdot);if (strstr($result,"nl")) { include "site/nl.php"; }elseif (strstr($result,"be")) { include "site/be.php"; }else  { include "site/overige.php"; }?>

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 17:41
wil je ze nou scheiden op taal of op land???

$http_accept_language zegt nl. nix over het land en .be zegt nix over de taal...

|:( :?

Acties:
  • 0 Henk 'm!

  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 27-09 18:36
En nu kom ik met mijn ...nl.home.com vanuit Nederland en dan krijg ik de 'overige' versie?

Lijkt me niet de meest betrouwbare methode (voor zover je dit 100% betrouwbaar kunt doen natuurlijk...)

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 01:20
Misschien een idee om Apache gewoon zelf de taal te laten bepalen, dat kan apache namelijk (ja echt!!)

Eventueel dan meteen een cookie of sessie planten zodat je op alle pagina's de juiste info hebt.

Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zaterdag 16 maart 2002 19:32 schreef Limhes het volgende:
wil je ze nou scheiden op taal of op land???

$http_accept_language zegt nl. nix over het land en .be zegt nix over de taal...

|:( :?
Ik wil dat iemand die in nederland woon op de nl site komt en be op de be site...
Op zaterdag 16 maart 2002 21:28 schreef Jelle Niemantsverdriet het volgende:
En nu kom ik met mijn ...nl.home.com vanuit Nederland en dan krijg ik de 'overige' versie?

Lijkt me niet de meest betrouwbare methode (voor zover je dit 100% betrouwbaar kunt doen natuurlijk...)
Op zaterdag 16 maart 2002 21:36 schreef ddc het volgende:
Misschien een idee om Apache gewoon zelf de taal te laten bepalen, dat kan apache namelijk (ja echt!!)

Eventueel dan meteen een cookie of sessie planten zodat je op alle pagina's de juiste info hebt.
Tja, maar hoe dan? :?

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 02-09 19:22

GraasGast

Analogue Heaven

doe het anders gewoon met dat javascript, maar dan met de taal als parameter aan je php-file geven:
code:
1
2
3
4
5
6
7
8
9
10
<script language=javascript>
if (navigator.userLanguage == "nl")
{ location.href= 'page.php?language=nl'; }
else
if (navigator.userLanguage == "be")
{ location.href= 'page.php?language=be'; }
else
{ location.href = 'page.php'; }

</script>

Acties:
  • 0 Henk 'm!

  • Bart Coppens
  • Registratie: April 2000
  • Laatst online: 25-11-2021
Graasgast: zo doet hij het nu dus al, en hij wil het anders (of begrijp ik een van de twee posts nu niet? ;))Weer verkeerd begrepen dus :'(
Overigens heb ik ook al hostnames als blaat.nl.home.com of dingen in die aard voorbij zien komen, dus absolute garantie heb je nooit. Zeker niet bij Belgische sites omdat we hier ook Walen hebben die voornamelijk Frans praten (zeg maar uitsluitend :P)

Copyright Auteur heeft Tweakers.net BV geen exclusieve licentie op bovenstaande post verleend. Voorafgaande en uitdrukkelijke schriftelijke toestemming van Tweakers.net BV is dus niet noodzakelijk voor het vermenigvuldigen van bovenstaande post


Acties:
  • 0 Henk 'm!

  • Blaise
  • Registratie: Juni 2001
  • Niet online
Ik denk dat je beter de bezoeker kan laten kiezen welke taal die wil. In Nl zijn genoeg mensen die niet Nl kunnen praten e.d.

Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zondag 17 maart 2002 00:25 schreef Bart Coppens het volgende:
Graasgast: zo doet hij het nu dus al, en hij wil het anders (of begrijp ik een van de twee posts nu niet? ;))Weer verkeerd begrepen dus :'(
Overigens heb ik ook al hostnames als blaat.nl.home.com of dingen in die aard voorbij zien komen, dus absolute garantie heb je nooit. Zeker niet bij Belgische sites omdat we hier ook Walen hebben die voornamelijk Frans praten (zeg maar uitsluitend :P)
Ja, maar hebben ze er dan geen oplossing voor?
Op zondag 17 maart 2002 01:03 schreef Blaise het volgende:
Ik denk dat je beter de bezoeker kan laten kiezen welke taal die wil. In Nl zijn genoeg mensen die niet Nl kunnen praten e.d.
Ja, dat is niet mijn opzet, ik wil het liefst dat alles automatisch gaat. net als elke webmaster en systeembeheerder.

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Kan niemand helpen? Hoe registreerd NedStat de bezoekers dan?

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
nedstat doet het waarschijnlijk met een enorme iprange -> land database die ze in de loop van de tijd hebben gemaakt en nu steeds up2date houden.

Acties:
  • 0 Henk 'm!

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
Op zondag 17 maart 2002 17:33 schreef Grum het volgende:
nedstat doet het waarschijnlijk met een enorme iprange -> land database die ze in de loop van de tijd hebben gemaakt en nu steeds up2date houden.
ik denk dat je met een reverse NS lookup een aardig eind komt... je bezoeker IP reverse NS'en, laatste chars na de laatste . er uit slopen, en je hebt het land.

Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zondag 17 maart 2002 17:35 schreef |HunterPro| het volgende:

[..]

ik denk dat je met een reverse NS lookup een aardig eind komt... je bezoeker IP reverse NS'en, laatste chars na de laatste . er uit slopen, en je hebt het land.
ZOiets heb ik toch? Maar hoe moet je een Nederlander die z'n computer in Nederland heeft staan en internet met het ip adres: nl.home.com of home.com ofzo?

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • AntonT
  • Registratie: Januari 2000
  • Laatst online: 21:38

AntonT

One Ton!

Op zondag 17 maart 2002 17:35 schreef |HunterPro| het volgende:

[..]

ik denk dat je met een reverse NS lookup een aardig eind komt... je bezoeker IP reverse NS'en, laatste chars na de laatste . er uit slopen, en je hebt het land.
Sinds wanneer is .com een land? :P

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
zoals ik dus zei.

Acties:
  • 0 Henk 'm!

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
Op zondag 17 maart 2002 17:40 schreef GerwinPrins het volgende:

[..]

ZOiets heb ik toch? Maar hoe moet je een Nederlander die z'n computer in Nederland heeft staan en internet met het ip adres: nl.home.com of home.com ofzo?
die dingen vallen, als je ze niet goed uitfiltert, dus onder de bij netstat bekende noemer 'commercieel' of 'onbekend'. en aangezien er geen .us is (toch :? ) kun je .com ook wel onderbrengen in de VS, heb je daar ook wat hits van :Y)

[edit]aanvulling

Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zondag 17 maart 2002 17:41 schreef |HunterPro| het volgende:

[..]

die dingen vallen, als je ze niet goed uitfiltert, dus onder de bij netstat bekende noemer 'commercieel' of 'onbekend'. en aangezien er geen .us is (toch :? ) kun je .com ook wel onderbrengen in de VS, heb je daar ook wat hits van :Y)

[edit]aanvulling
ja en hoe filter je die om terug ontopic te gaan... :?

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
door et stukje na de laatste punt te nemen van z'n hostname.

Acties:
  • 0 Henk 'm!

Verwijderd

Het is niet handig, maar je kunt toch gewoon kijken of er .com ofzoiets in je $host staat?
preg_match, eregi etc

Acties:
  • 0 Henk 'm!

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
Op zondag 17 maart 2002 17:53 schreef Grum het volgende:
door et stukje na de laatste punt te nemen van z'n hostname.
hij bedoelt: hoe knip ik alle rotzooi inclusief die laatste punt er af?

de rest kan ie denk ik zelf wel verzinnen met een CASE geval :)

Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zondag 17 maart 2002 17:53 schreef Grum het volgende:
door et stukje na de laatste punt te nemen van z'n hostname.
Ja en heeft ie nu als host nl.home.com ofzo... en hebben alle NL hosters een .nl ofzo in hun domein?

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 27-09 18:36
Op zondag 17 maart 2002 18:01 schreef GerwinPrins het volgende:
hebben alle NL hosters een .nl ofzo in hun domein?
nee

Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Ik had dit al (ff lezen dus):
PHP:
1
<?if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != ""){           $proxy = $HTTP_SERVER_VARS["REMOTE_ADDR"];    $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];} else {     $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];}$host =  gethostbyaddr($ip);$at        = $host;$hostdot   = ".";$result    = strrchr($at, $hostdot);echo "The country is $result";?>

Maar ik er deze reactie op:
Op zaterdag 16 maart 2002 19:32 schreef Limhes het volgende:
wil je ze nou scheiden op taal of op land???

$http_accept_language zegt nl. nix over het land en .be zegt nix over de taal...

|:( :?
en
Op zaterdag 16 maart 2002 21:28 schreef Jelle Niemantsverdriet het volgende:
En nu kom ik met mijn ...nl.home.com vanuit Nederland en dan krijg ik de 'overige' versie?

Lijkt me niet de meest betrouwbare methode (voor zover je dit 100% betrouwbaar kunt doen natuurlijk...)
en
Op zaterdag 16 maart 2002 21:36 schreef ddc het volgende:
Misschien een idee om Apache gewoon zelf de taal te laten bepalen, dat kan apache namelijk (ja echt!!)

Eventueel dan meteen een cookie of sessie planten zodat je op alle pagina's de juiste info hebt.
Dus vraag ik me af hoe?

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
gethostbyaddr($ip); <- dat kan soms een timeout van 30 sec hebben.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02:37
Samenvattend: scheiden op taal, zoals ingesteld door de gebruik in zijn of haar browser (of operating system) kan door naar de http_accept_language header te kijken. Scheiden op land is niet zomaar mogelijk, tenzij je van elke hostname/ip-adres weet bij welk land dat hoort. Dat is dus nooit 100% betrouwbaar te doen.

Scheiden op land slaat verder helemaal nergens op. Je kan gebruikers echt wel vertrouwen dat ze met een browser werken die hun taal begrijpt (anders zou het werken onmogelijk worden) en niet dat ze de taal prefereren van het land waarin ze toevallig wonen. Als ik in Rusland in een internetcafé zou inloggen op m'n webmail, zou ik me groen en geel ergeren als de pagina's in het Russisch verschenen, terwijl ze het thuis altijd gewoon in het Engels deden.

Aangezien vrijwel elke browser doorgeeft welke taal de gebruiker WIL ontvangen is het onzinnig om als programmeur te beslissen dat een gebruiker die ZEGT Nederlandse pagina's te willen ontvangen liever Chinees leest, omdat z'n IP adres toevallig 1.2.3.4 is. Die HTTP-header wordt niet voor niets meegegeven!

(Vergelijk: als ik Google in het Nederlands wil, dan type ik wel www.google.nl in - ook daar erger ik me aan!)

Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zondag 17 maart 2002 18:27 schreef Soultaker het volgende:
Samenvattend: scheiden op taal, zoals ingesteld door de gebruik in zijn of haar browser (of operating system) kan door naar de http_accept_language header te kijken. Scheiden op land is niet zomaar mogelijk, tenzij je van elke hostname/ip-adres weet bij welk land dat hoort. Dat is dus nooit 100% betrouwbaar te doen.

Scheiden op land slaat verder helemaal nergens op. Je kan gebruikers echt wel vertrouwen dat ze met een browser werken die hun taal begrijpt (anders zou het werken onmogelijk worden) en niet dat ze de taal prefereren van het land waarin ze toevallig wonen. Als ik in Rusland in een internetcafé zou inloggen op m'n webmail, zou ik me groen en geel ergeren als de pagina's in het Russisch verschenen, terwijl ze het thuis altijd gewoon in het Engels deden.

Aangezien vrijwel elke browser doorgeeft welke taal de gebruiker WIL ontvangen is het onzinnig om als programmeur te beslissen dat een gebruiker die ZEGT Nederlandse pagina's te willen ontvangen liever Chinees leest, omdat z'n IP adres toevallig 1.2.3.4 is. Die HTTP-header wordt niet voor niets meegegeven!

(Vergelijk: als ik Google in het Nederlands wil, dan type ik wel www.google.nl in - ook daar erger ik me aan!)
Hier heb ik iets aan, wat ik eigenlijk wil is users die geen Nederlands kunnen lezen scheiden en naar een Engels talige site sturen, wat zou dan de oplossing zijn?

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 25-09 13:54

chem

Reist de wereld rond

wat ik al eerder heb gezegd: gebruik de http accept language, en check die file die ik eerder noemde bij phpmyadmin.

Voor die IP's: die zijn gewoon te downloaden. Zie bv http://www.ripe.net/ripencc/about/regional/
ik zal de lijst eens opzoeken... lang geleden :)

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

Verwijderd

en als je bezoekers wil scheiden op basis van land ivm betalingen? dan kan je het dus niet op taal van de browser doen. (of is dit al ergens anders besproken?? ben hier nieuw)

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Door chem (Parse devver) - Sunday 17 March 2002 20:18
Door faijer_ - Tuesday 05 August 2003 10:21

Is lichtelijk overbodig :+

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.