- Home
- Categorie
- Coding e Sistemistica
- Coding
- Reindirizzare utente in base al browser
-
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>
-
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.6Safari 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.21Alessandro[/LEFT]
-
Ciao
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");
elseheader("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?
-
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
-
Cavoli...hai proprio ragione,questo particolare mi era sfuggito:():
Ora funziona...Grazie Magicale;)