• User Attivo

    Reindirizzare utente in base al browser

    Gentili amici,
    volevo capire come fare in php a reindirizzare un utente su altre pagine in base al browser che usa...
    Ho provato uno script in javascript con mozilla funziona ma con internet explorer va in loop.

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <LINK href="stile2.css" rel="stylesheet" type="text/css">

    <script language="javascript">
    <!--
    if (document.all)
    {
    location.href = "index.php";
    }

    else if (document.getElementById)
    {
    location.href = "index1.php";
    }

    //-->
    </script>


  • User Attivo

    Ciao,

    con php i dati relativi al browser, se disponibili, li trovi qui:
    [php]
    $_SERVER['HTTP_USER_AGENT']
    [/php]
    Fai i controlli necessari sulla stringa e reindirizza alla pagina corretta tramite la funzione:
    [php]
    header("Location: ....");
    [/php]

    Questo, ad esempio, è il contenuto di $_SERVER['HTTP_USER_AGENT'] quando apro una pagina con i seguenti browser che ho installati

    Explorer 7
    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

    Firefox 3
    Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

    Safari 3
    [LEFT]Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21

    Alessandro[/LEFT]


  • User Attivo

    Ciao:ciauz:

    Ho fatto cosi'
    [PHP]
    <?

    //Apro la sessione e...
    session_start();

    //Riconosco se usa internet explorer
    if (preg_match("/\bMSIE\b/i",$_SERVER['HTTP_USER_AGENT']))
    header("Location:index.php");

    //Riconosco se usa Mozilla firefox
    elseif (preg_match("/\bfirefox\b/i",$_SERVER['HTTP_USER_AGENT']))
    header("Location:index1.php");
    else

    header("Location:index.php");

    [/PHP]

    Con mozilla funziona...cioè mi va alla pagina index1.php,mentre se provo ad accedere da internet explorer la pagina si mostra che carica ma non visualizza nulla....va in loop....come mai?


  • User Attivo

    Perchè è esattamente quello che gli stai facendo fare:
    Accedi col browser alla pagina index.php, controlli il browser e se è IExplorer lo reindirizzi ad index.php, ovvero a sè stessa, rifai il controllo e lo reindirizzi, etc... ecco il loop!

    Se index.php contiene il codice da visualizzare per IExplorer perchè fare un reindirizzamento a sè stessa quando sei già sulla pagina da visualizzare?

    Nel tuo caso l'unico reindirizzamento da fare è per firefox.

    E ricorda l'exit...
    [php]
    if (preg_match("/\bfirefox\b/i",$_SERVER['HTTP_USER_AGENT'])) {
    header("Location:index1.php");
    exit();
    }
    [/php]

    Alessandro


  • User Attivo

    Cavoli...hai proprio ragione,questo particolare mi era sfuggito:():
    Ora funziona...

    Grazie Magicale;)