Avatar billede ravnkilde Nybegynder
19. februar 2007 - 21:41 Der er 10 kommentarer og
1 løsning

Validering af browser (IE 7)

Jeg har nedenstående kode, der checker brugerens browser og tilføjer derefter den tilhørende CSS-fil. Koden er lavet før Internet Explorer 7 blev frigivet, og jeg har brug for hjælp til at få indføjet kode til at omfatte IE 7. Filen, der skal anvendes ved IE 7 hedder "template_css_ie7.css"

--- start kode ---

function getbrowser() {
        $browser = strtolower(getenv("HTTP_USER_AGENT"));
        if (preg_match("/.*opera[\/ ](\d{1,2})\.(\d{1,2}).*/",$browser,$match)) {
          $browser = "Opera";
        } elseif (preg_match("/.*msie (\d{1,2})\.(\d{1,2}).*/",$browser,$match)) {
          $browser = "MSIE";
        } elseif (preg_match("/mozilla\/\d\.\d.*netscape6?\/(\d)\.(\d).*/",$browser,$match)) {
          $browser = "Netscape6";
        } elseif (preg_match("/mozilla\/\d\.\d.*rv:(\d)\.(\d(\.\d)?).*gecko/",$browser,$match)) {
          $browser = "Moz";
        } elseif (preg_match("/mozilla\/(\d).(\d{1,2})/",$browser,$match)) {
          $browser = "Netscape4";
        }
        return $browser;
      }
      $userbrowser = getbrowser();
      if ($userbrowser == "MSIE") {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css_ie.css\" rel=\"stylesheet\" type=\"text/css\" />";
      } else {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css_moz.css\" rel=\"stylesheet\" type=\"text/css\" />";
      }
      # Load an additional CSS file for a specific ItemID if it exists
      if (file_exists( $GLOBALS['mosConfig_absolute_path'].'/templates/akobusiness/css/template_css'.$Itemid.'.css')) {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css".$Itemid.".css\" rel=\"stylesheet\" type=\"text/css\" />";
      }

--- slut kode ---
Avatar billede thesurfer Nybegynder
19. februar 2007 - 21:52 #1
Hvis du selv har IE 7 installere, tag et smut forbi: http://www.fiddlertool.com/useragent.aspx

Siden viser din User Agent, som identificerer din browser..
Avatar billede thesurfer Nybegynder
19. februar 2007 - 21:54 #2
Forløbigt er den vist:

Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)
Avatar billede ravnkilde Nybegynder
19. februar 2007 - 22:05 #3
Tak, thesurfer. Desværre tolker ver. 6 og 7 af IE den samme CSS på vidt forskellig måde. Derfor er jeg nødt til at have definieret en CSS til ver. 6 og en til ver. 7. Jeg har kun maskine med ver. 7 her og nu. Viser useragenten samme data for både 6 og 7?
Avatar billede intenz Novice
19. februar 2007 - 22:13 #4
Ikke for at være på tværs, men måske ligger problemet i din css fil :)

Kender ikke useragent på den, men hvis den er hvad thesurfer skriver kan du gøre det ved at ændre:
$browser = "MSIE";

til:
if (strpos($browser, "MSIE 7") !== false) {
$browser = "MSIE7";
} else {
$browser = "MSIE";
}

Så får du MSIE7 tilbage hvis det er v. 7.xx

Så kan du lave:
      if ($userbrowser == "MSIE") {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css_ie.css\" rel=\"stylesheet\" type=\"text/css\" />";
      } else {

om til:
      if ($userbrowser == "MSIE") {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css_ie.css\" rel=\"stylesheet\" type=\"text/css\" />";
      } elseif ($userbrowser == "MSIE7") {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css_ie7.css\" rel=\"stylesheet\" type=\"text/css\" />";
      } else {
Avatar billede thesurfer Nybegynder
19. februar 2007 - 22:13 #5
Angående "Jeg har kun maskine med ver. 7 her og nu":

Den skulle gerne vise "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)"..

Check mit første indlæg..
Avatar billede ravnkilde Nybegynder
19. februar 2007 - 22:42 #6
thesurfer: Den viser: User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

intenz: jeg prøver lige dit forslag. Foreløbig tak.
Avatar billede ravnkilde Nybegynder
19. februar 2007 - 23:32 #7
intenz: Jeg har lavet nedenstående kode. Men min IE 7 henter ikke den rigtige CSS-fil.
Jeg har endda prøvet at slette filen fysisk på serveren, men browseren henter alligevel en anden CSS-fil ind. Scriptet fungerer fint med IE 6 og Firefox.

--- start intenz kode ---

function getbrowser() {
        $browser = strtolower(getenv("HTTP_USER_AGENT"));
        if (preg_match("/.*opera[\/ ](\d{1,2})\.(\d{1,2}).*/",$browser,$match)) {
          $browser = "Opera";
        } elseif (preg_match("/.*msie (\d{1,2})\.(\d{1,2}).*/",$browser,$match)) {
          if (strpos($browser, "MSIE 7") !== false) {
    $browser = "MSIE7";
    } else {
    $browser = "MSIE";
    }
        } elseif (preg_match("/mozilla\/\d\.\d.*netscape6?\/(\d)\.(\d).*/",$browser,$match)) {
          $browser = "Netscape6";
        } elseif (preg_match("/mozilla\/\d\.\d.*rv:(\d)\.(\d(\.\d)?).*gecko/",$browser,$match)) {
          $browser = "Moz";
        } elseif (preg_match("/mozilla\/(\d).(\d{1,2})/",$browser,$match)) {
          $browser = "Netscape4";
        }
        return $browser;
      }
      $userbrowser = getbrowser();
      if ($userbrowser == "MSIE") {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css_ie.css\" rel=\"stylesheet\" type=\"text/css\" />";
      } elseif ($userbrowser == "MSIE7") {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css_ie7.css\" rel=\"stylesheet\" type=\"text/css\" />";
      } else {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css_moz.css\" rel=\"stylesheet\" type=\"text/css\" />";
      }
      # Load an additional CSS file for a specific ItemID if it exists
      if (file_exists( $GLOBALS['mosConfig_absolute_path'].'/templates/akobusiness/css/template_css'.$Itemid.'.css')) {
        echo "<link href=\"".$GLOBALS['mosConfig_live_site']."/templates/akobusiness/css/template_css".$Itemid.".css\" rel=\"stylesheet\" type=\"text/css\" />";
      }

--- slut intenz kode ---
Avatar billede showsource Seniormester
20. februar 2007 - 01:27 #8
$browser = strtolower(getenv("HTTP_USER_AGENT"));

d.v.s. at al tekst er med små bogstaver.

Så vil

if (strpos($browser, "MSIE 7") !== false) {

vel aldrig retunere true?
Avatar billede ravnkilde Nybegynder
20. februar 2007 - 10:27 #9
showsource: Er der nogen forklaring hvorfor der er valgt "små bogstaver" i koden? Kan det ændres således at jeg kan få "MSIE 7" med?
Avatar billede intenz Novice
20. februar 2007 - 18:00 #10
heh, den havde jeg ikke lige set.
Så burde:
if (strpos($browser, "msie 7") !== false) {

kunne gøre det.
Avatar billede ravnkilde Nybegynder
20. februar 2007 - 21:44 #11
Det virker nu! Flest points til intenz, men jeg mener også at showsource har fortjent nogle points for sit skarpe øje. Læg et svar også, showsource. TAK FOR HJÆLPEN, nu skal jeg bare have rettet CSS-filen til.
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