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

Language detection script werkt niet op MAC / safari

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo Tweakers,

Ik heb een script waarmee ik de language van de bezoeker bepaal. Door een of andere vage reden werkt dit niet op MAC/Safari, waarschijnlijk omdat de headers van deze browser anders zijn. Kan iemand mij ttips geeveen / een aanpassing doen in onderstaand script, waarschijnlijk is het maar een kleinigheeid maar ik kon met google niet tot een gewenst resultaat komen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
// Controleer of de taal handmatig wordt ingesteld
if(isset($_GET["lang"]) AND $_GET["lang"] !== "")
{
   $_SESSION["lang"] = strtolower($_GET["lang"]);
   $_SESSION['htmllang'] = 'nl';
   
   if(!empty($_SERVER['HTTP_REFERER'])) 
   {
     header("Location: ".$_SERVER['HTTP_REFERER']);
   }
   else 
   {
     header("Location: index.php");
   }
}
elseif(!isset($_SESSION["lang"]) OR $_SESSION["lang"] == "")
{
   
   
   // Controleer of de browser een taal meestuurt
   if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
   {
            $langs = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']); 
            $httptaal = strtoupper($langs[0]);      
            $dbtaal = $db->query("SELECT * FROM talen WHERE afk='" . $httptaal . "' LIMIT 1");
            
            if($db->num_rows($dbtaal) > 0)
            {
               $uitvoertaal = $db->assoc($dbtaal);
               $lang = $uitvoertaal['id'];
               $_SESSION['lang'] = $uitvoertaal['id'];
               $_SESSION['htmllang'] = $httptaal;
            }
   }
   elseif(!isset($_SESSION["lang"]))
   {
        $lang_ophalen1 = $db->query("SELECT * FROM talen WHERE standaard='1'");
        $talen1 = $db->assoc($lang_ophalen1);
        
        $_SESSION["lang"] = $talen1['id'];
        $_SESSION['htmllang'] = strtolower($talen1['afk']);
   }
}
?>


Alvast dank.

  • ATS
  • Registratie: September 2001
  • Laatst online: 28-11 20:56

ATS

Zo... en wat heb je al geprobeerd om je probleem op te lossen? Welke variabelen zijn niet geset volgens jou? Is er een ander probleem? Wat geeft $_SERVER allemaal wél voor resultaten? Eerst even zelf wat moeite doen ajb, /14 is geen debugservice.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Het lijkt een bug in Safari, maar die is in 1.2 opgelost, blijkbaar. Welke versie van Safari hebben we het over? Wat geeft HTTP_ACCEPT_LANGUAGE terug?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
de http accept language geeft iedere keer iets anders terug. Het is op iedere soort pc anders. Vanmiddag had ik een I mac, die gaf geen leesbare headers door, zowel met safarie als mozilla werkt het niet op de mac. Headers zijn dus afhankelijk van het bestuuringssysteem. Op mijn Windows pc draait het in alle type browser correct. Ik kan weinig vinden over wat mac meegeeft en heb geen idee hoe ik die headers kan zien..? het zou kunnen dat die iets geeft van en-us ipv en / nl?

Modbreak: Dat grote bedrijf uit Redmond heeft een stuk software gemaakt dat vernoemd is naar een stel vensters, niet naar een weerverschijnsel. Noem het beestje gewoon bij zijn naam.

[ Voor 18% gewijzigd door NMe op 07-09-2007 08:41 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 30-11 11:35

Janoz

Moderator Devschuur®

!litemod

Zou kunnen? Ik weet het wel zeker!

Als je niet precies weet wat de HTTP_ACCEPT_LANGUAGE inhoud zou je die natuurlijk ook even door google kunnen halen. Dan waren de vragen hierboven zo beantwoord. Bedenkt daarnaast dat een browser meerdere talen terug kan geven met daarbij een voorkeur. Meer over eht hoe en wat van deze header is ook te vinden in de HTTP RFC

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'