Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Probleem met browser detectie

Anne
7 antwoorden
  • Hoi,

    Ik ben op dit moment bezig een site op te zetten (gaat over het spel Cantr. En nee, ik heb cantr.net niet gemaakt). Mijn gratis webhost bied de mogelijk om php te gebruiken, dus dat gebruik ik dan ook maar ;). Heb me verdiept in de materie, en ben wat leuke dingetjes tegen gekomen, die ik gelukkig ook nog begrijp.

    Nu wilde ik rechts boven, naast de banner wat kleine dingetjes maken. Als de tijd op de plaats waar de server staat en hoeveel mensen de pagina bekijken (die 2 dingen heb ik nu). Ook wil ik dat de pagina zoiets zegt als "I see you are using Internet Explorer" of "I see you are using Netscape" of "I see you are using Opera" of "I see you are using some other browser that isn't IE, Netscape or Opera…".

    De code lukt me wel (zie onderaan), alleen het probleem is, is dat opera wordt gedecteerd als IE.

    Dit komt omdat de browser in Opera als volgt heet:
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.11 [nl]

    Er komt dus ook MSIE in voor, en eerder als Opera (ik laat het php scriptje zoeken naar Opera).

    Hoe kan ik er nu voor zorgen dat het niet gezien wordt als IE maar als Opera?

    Jochem

    http://www.jochem.elixant.com/browser.php

    [code:1:818cbea065]<p>
    <?php

    if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
    ?>
    I see you are using Internet Explorer
    <br />
    <?php echo "{$_SERVER["HTTP_USER_AGENT"]}";?>

    <?php
    } elseif (strstr($_SERVER["HTTP_USER_AGENT"], "Netscape")) {
    ?>
    I see you are using Netscape
    <br />
    <?php echo "{$_SERVER["HTTP_USER_AGENT"]}";?>

    <?php
    } elseif (strstr($_SERVER["HTTP_USER_AGEN"], "Opera")) {
    echo "{$_SERVER["HTTP_USER_AGENT"]}";
    ?>
    I see you are using Opera
    <br />
    <?php echo "{$_SERVER["HTTP_USER_AGENT"]}";?>

    <?php
    } else {
    ?>
    I see you are using some other browser that isn't IE, Netscape or Opera…
    <br /> <?php echo "{$_SERVER["HTTP_USER_AGENT"]}";?>
    <?php
    }
    ?>
    </p>[/code:1:818cbea065]
  • Eerst checken op "opera" en daarna pas op "MSIE".
    Opera zal als eerste door de mand vallen (de MSIE tekst bij opera doet er niet toe). Mocht het wel IE zijn dan wordt "MSIE" gevonden.
  • Dus volgorde wijzigen van if statements (ben nog een regelrechte n00b wat betreft php)?

    Ga het meteen proberen, als ik wat meer tijd heb.

    Jochem
  • Werkt helaas niet. Nog steeds wordt Opera als IE gezien. M'n nieuwe code staat onderaan.

    Door het gedeelte waarin er naar "MSIE" wordt gezocht eruit te halen, werd Internet Explorer niet herkend (logisch), maar ook werd Opera niet herkend!

    Hieruit trek ik dus de conclusie dat óf het gedeelte waarin naar "Opera" wordt gezocht niet klopt, óf dat Opera iets niet toe laat…

    Jochem

    code:
    [code:1:4efecaa06c]<p>

    <?php //Browser detector
    if (strstr($_SERVER["HTTP_USER_AGEN"], "Opera"))
    { ?>
    I see you are using Opera
    <br />
    <?php echo "{$_SERVER["HTTP_USER_AGENT"]}";?>

    <?php }
    elseif (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE"))
    { ?>
    I see you are using Internet Explorer
    <br />
    <?php echo "{$_SERVER["HTTP_USER_AGENT"]}";?>

    <?php }
    elseif (strstr($_SERVER["HTTP_USER_AGENT"], "Netscape"))
    { ?>
    I see you are using Netscape
    <br />
    <?php echo "{$_SERVER["HTTP_USER_AGENT"]}";?>

    <?php }
    else
    {
    ?>
    I see you are using some other browser that isn't IE, Netscape or Opera…
    <br /> <?php echo "{$_SERVER["HTTP_USER_AGENT"]}";?>
    <?php
    } ?>

    </p>[/code:1:4efecaa06c]
  • Op Devedge stond vorig jaar een interessant artikel over Browser Detection & Cross Browser Support.

    - Bas
  • Klein (maar desastreus) typefoutje in je code:

    if (strstr($_SERVER["HTTP_USER_AGEN[b:c0811ff7a3]
  • Bedankt! Ook voor die 2 links.

    Jochem

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.