Avatar billede dannyboy Nybegynder
29. maj 2007 - 13:04 Der er 8 kommentarer og
1 løsning

Indsæt noget, hvis browser er IE

Mystisk, hvorfor virker dette ikke i IE6?

<?
if(strstr($HTTP_USER_AGENT,"MSIE")) {
echo "You are using Internet Explorer";
}
?>

(Jeg skal bruge en stump som indsætter en bullet,
hvis bruger surfer med Internet Explorer)
Avatar billede radion Nybegynder
29. maj 2007 - 13:21 #1
prøv

<?
if(strstr($_SERVER['HTTP_USER_AGENT'],"MSIE")) {
echo "You are using Internet Explorer";
}
?>
Avatar billede radion Nybegynder
29. maj 2007 - 13:22 #2
<?
if(strpos($_SERVER['HTTP_USER_AGENT'],"MSIE")) {
echo "You are using Internet Explorer";
}
?>

strpos er bedre(hurtigere) end strstr når du bare skal finde ud af om en tekst findes i en anden tekst
Avatar billede dannyboy Nybegynder
29. maj 2007 - 13:31 #3
Yes baby, den er lige i skabet!
Lav et svar
Avatar billede pidgeot Nybegynder
29. maj 2007 - 13:38 #4
Hvad med den gode gamle conditional comment, som ikke afhænger af user-agent eller andet der kan fuskes med?

<![if IE]>You are using Internet Explorer<![endif]>
Avatar billede pidgeot Nybegynder
29. maj 2007 - 13:41 #5
Det var så ikke skrevet helt rigtigt - sådan er det når man skriver fra hukommelsen...

<!--[if IE]>You are using Internet Explorer<![endif]-->

Uanset hvad, så er conditional comment oplagt hvis det netop er IE du skal have fat i. Desværre er der ikke andre browsere der kan se det smarte i sådan en ting, så Firefox, m.v. implementerer ikke deres egne conditionals.
Avatar billede radion Nybegynder
29. maj 2007 - 14:09 #6
pidgeot: tja, bl.a. har du ikke mulighed for at lave en else, du kan kun tilføje til explore, ikke vælge mellem explore eller andre..
Avatar billede radion Nybegynder
29. maj 2007 - 14:09 #7
og svar
Avatar billede pidgeot Nybegynder
29. maj 2007 - 14:25 #8
Du har fint mulighed for at tilføje en else (der er nægtende conditional comments, som dermed kun vises i andre browsere end IE, omend det ikke går gennem W3C).

Nu er det jo desuden netop IE spørgeren vil have, og hvis det, som vi må gå ud fra med de oplysninger vi har, udelukkende er et spørgsmål om IE/ikke-IE, er conditional comments til enhver tid overlegen over hacks, user-agent check, m.v., netop fordi det ikke er noget der kan fuskes med.
Avatar billede radion Nybegynder
29. maj 2007 - 14:45 #9
ja, okay.. det er vel fikst, og enig, det kan sikkert ikke fuskes med, men.. hvor tit fuskes der?

men, ja, begge metoder fungerer.

anyway, så er det script jeg plejer at bruge her, her har du mulighed for at få versioner tilbage også..

jeg bruger det i forbindelse med opera, firefox og IE 7 har et stylesheet, og IE6- har sit eget :)

funktionen kaldes med

<?
$browser=browser_detection('full');

    if (  $browser[0]=='ie' && $browser[1]<7)
    {
    ?>
    <link rel="stylesheet" type="text/css" href="style_design_ie.css" />
   
    <?
    }
    else
    {
    ?>
    <link rel="stylesheet" type="text/css" href="style_design.css" />
    <?
    }
?>

og her er funktionen

<?
function browser_detection( $which_test )
{
    /* sample:

$a_browser_data = browser_detection('full');
if ( $a_browser_data[0] !== 'msie' )
{
    execute the non msie conditions
}
else// if it is msie, that is
{
    if ( $a_browser_data[1] >= 5 )
    {
        execute the ie stuff
    }
}
*/
    // initialize variables
    $browser_name = '';
    $browser_number = '';
    // get userAgent string
    $browser_user_agent = ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) ? strtolower( $_SERVER['HTTP_USER_AGENT'] ) : '';
    //pack browser array
    // values [0]= user agent identifier, lowercase, [1] = dom browser, [2] = shorthand for browser,
    $a_browser_types[] = array('opera', true, 'op' );
    $a_browser_types[] = array('msie', true, 'ie' );
    $a_browser_types[] = array('konqueror', true, 'konq' );
    $a_browser_types[] = array('safari', true, 'saf' );
    $a_browser_types[] = array('gecko', true, 'moz' );
    $a_browser_types[] = array('mozilla/4', false, 'ns4' );

    for ($i = 0; $i < count($a_browser_types); $i++)
    {
        $s_browser = $a_browser_types[$i][0];
        $b_dom = $a_browser_types[$i][1];
        $browser_name = $a_browser_types[$i][2];
        // if the string identifier is found in the string
        if (stristr($browser_user_agent, $s_browser))
        {
            // we are in this case actually searching for the 'rv' string, not the gecko string
            // this test will fail on Galeon, since it has no rv number. You can change this to
            // searching for 'gecko' if you want, that will return the release date of the browser
            if ( $browser_name == 'moz' )
            {
                $s_browser = 'rv';
            }
            $browser_number = browser_version( $browser_user_agent, $s_browser );
            break;
        }
    }
    // which variable to return
    if ( $which_test == 'browser' )
    {
        return $browser_name;
    }
    elseif ( $which_test == 'number' )
    {
        return $browser_number;
    }

    /* this returns both values, then you only have to call the function once, and get
    the information from the variable you have put it into when you called the function */
    elseif ( $which_test == 'full' )
    {
        $a_browser_info = array( $browser_name, $browser_number );
        return $a_browser_info;
    }
}

// function returns browser number or gecko rv number
// this function is called by above function, no need to mess with it unless you want to add more features
function browser_version( $browser_user_agent, $search_string )
{
    $string_length = 8;// this is the maximum  length to search for a version number
    //initialize browser number, will return '' if not found
    $browser_number = '';

    // which parameter is calling it determines what is returned
    $start_pos = strpos( $browser_user_agent, $search_string );
   
    // start the substring slice 1 space after the search string
    $start_pos += strlen( $search_string ) + 1;
   
    // slice out the largest piece that is numeric, going down to zero, if zero, function returns ''.
    for ( $i = $string_length; $i > 0 ; $i-- )
    {
        // is numeric makes sure that the whole substring is a number
        if ( is_numeric( substr( $browser_user_agent, $start_pos, $i ) ) )
        {
            $browser_number = substr( $browser_user_agent, $start_pos, $i );
            break;
        }
    }
    return $browser_number;
}
?>
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