Kan $HTTP_ACCEPT_LANGUAGE leeg zijn?

Pagina: 1
Acties:

  • pim
  • Registratie: Juli 2001
  • Laatst online: 03-09 15:08
($HTTP_ACCEPT_LANGUAGE geeft aan welke taal je browser is)

Ik ben een scriptje aan het maken in PHP die alle "$HTTP_ACCEPT_LANGUAGE's" logt.

Gebeurd het wel eens dat deze variable geen waarde heeft, en zo ja, welke value krijgt ie dan? leeg: "", of bijvoorbeeld "empty"?

Ik moet namelijk checken of de herkomst "NL", "BE", anders of onbekend is.
En "anders" check ik door te kijken of ie niet gelijk is aan NL, BE, of onbekend..

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Als ie niet door de browser meegestuurd wordt is ie leeg, dus '' :)

  • pim
  • Registratie: Juli 2001
  • Laatst online: 03-09 15:08
ok, thanx!

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Moet je je de volgende keer wel aan het drie stappen-plan houden he... :P

Verwijderd

kan ja, maar kan ook niet klopen.

Misschien is het een idee om de afkomst van de hostnaam af te snoepen. Netscape 4.x geeft bijvoorbeeld wel eens een US terug als je gewoon uit nederland komt. Ligt volgens mij aan de taal die geinstaleert is.
Oplossing door uit het adres van de host(provider) de toplevel domein te slopen, en deze tegen een array met alle toplevels te houden.

bijvoorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$host=gethostbyaddr($REMOTE_ADDR);
$elements=explode(".", $host);
$i=count($elements)-1;

$countrylist = array( 
      "nc" => "New Caledonia", 
      "ne" => "Niger", 
      "nf" => "Norfolk Island", 
      "ng" => "Nigeria", 
      "ni" => "Nicaragua", 
      "nl" => "Nederland");

foreach ($countrylist as $key => $land) { 
      if ($key == $elements[$i]) { 
        return $land; 
      } 
    }

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

houdtbaar:
[..]
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$host=gethostbyaddr($REMOTE_ADDR);
$elements=explode(".", $host);
$i=count($elements)-1;

$countrylist = array( 
      "nc" => "New Caledonia", 
      "ne" => "Niger", 
      "nf" => "Norfolk Island", 
      "ng" => "Nigeria", 
      "ni" => "Nicaragua", 
      "nl" => "Nederland");

foreach ($countrylist as $key => $land) { 
      if ($key == $elements[$i]) { 
        return $land; 
      } 
    }
waarom foreach?
code:
1
return $countrylist [ $elements [ $i ] ];

zou toch voldoende moeten zijn?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

letop dat je met accept_language de TAAL weet die de browser accept en niet het LAND waar de mensen vandaan komen, al ben ik een eghyptenaar in nederland met mijn eghyptische computer, is mijn language eghyptisch en mijn land nederland, je kan ook de extensie v/d host nemen

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Met hostnames krijg je weer problemen met proxy's plus dat @home via home.com gaat (dacht ik), dus filteren op .nl is niet genoeg.

Ook HTTP_ACCEPT_LANGUAGE is niet altijd gevuld door een browser. Het is niet verplicht volgens de RFC. Het is gewoon een extra'tje net zoals dat de browser gaat meegeven wie ie is.

HTTP_ACCEPT_LANGUAGE is wel het makkelijkst en het slimst imho. De standaard instelling is engels geloof ik en aangezien niemand het raar vindt als ie een engelse site te zien krijgt, lijkt het me geen slechte oplossing

Verwijderd

Dan lijkt mij hostname toch nog de beste oplossing om de betrouwbaarste info te krijgen. Als je een engelstalige browser hebt dan kom je standaard uit de US (zie Foxboy), dit komt vaker voor dan een proxy lijkt mij?


Het is natuurlijk een lijstje alle domein in een array zetten, een beetje veel, maar wel heet meest betrouwbaar.

drm heeft gelijk dit kan ook
code:
1
return $countrylist [ $elements [ $i ] ];

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Hmmz ik heb dus weer een beetje fout zitten lezen. Ik vermoedde ( onthoud: nooit meer doen * Glimi ) dat je de taal van de website wou aanpassen aan de pipo die je site bezocht.

Nu ik wel normaal lees, zie ik ook dat je gewoon wil loggen waar de persoon vandaan komt en dan is ACCEPT_LANGUAGE niet handig nee.

Excuus hiervoor. BTW zoek dan nog wel ff of de hostnames van de 'grote' providers hier in nl. ook allemaal .nl zijn. @home was nl. home.com geloof ik
Pagina: 1