controllo browser sul server o in php?

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Da qualche giorno sto diventando matto, letteralmente, in quanto fino alla sera/notte prima tutto funziona bene, poi la mattina successiva al test dell'integrità del sito, viste le ultime vicissitudini, il codice scritto sembra non valere più.
Vengo alla parte pratica.

Ho sul mio server un semplice controlllo sulla verisone del browser, che ovviamente reindirizza l'utente ad una pagina dedicata qual'ora rientri in alcuni casi, l'unica pecca è che non avendo io un server con apache ma su piattaforma nginx non vale più il file htaccess ma ho dovuto adattarlo al mio server.
il codice in questione è:
Codice:
#Redirect per IE 5-6-7-8
                if ($http_user_agent ~* 'MSIE 5|MSIE 6|MSIE 7|MSIE 8'){
                        rewrite ^ /browserko.php break;
                }

mentre nella pagina index ho inserito alla prima riga un controllo in php dove, se l'utente dovesse inserire volontariamente la voce index.php, viene reindirizzato alla pagina di prima.

Il codice in questione è:
PHP:
<?php
$userAgent = $_SERVER['HTTP_USER_AGENT'];

preg_match( '/MSIE ([0-9]{1,}[\.0-9]{0,})/', $userAgent, $matches );
$version = floatval( $matches[1] );
if( $version <= 8.0 ) {
	header("Location: ./browserko.php");
}
?>

Il problema è che se navigo sia in locale sia su server con firefox ottengo sempre la pagina del browser non compatibile. In cosa sbaglio?
 
Breve correzione del codice sul server, l'ho modificato così:
Codice:
 #Redirect per IE 6-7-8

                if ($http_user_agent ~ "MSIE 6.0" ) {
                set $browser-version outdated;
                }
                if ($http_user_agent ~ "MSIE 7.0" ) {
                set $browser-version outdated;
                }
                if ($http_user_agent ~ "MSIE 8.0" ) {
                set $browser-version outdated;
                }

                if ($browser-version = outdated) {
                rewrite  ^  /browserko.php  break;
                }

diciamo che non copre molte versioni ma sono quelle principalmente interessate e diciamo disponibili oggi.
 
Mentre con questa dovrei essere a posto.

PHP:
(preg_match('/MSIE ([5-8]{1})/',$_SERVER['HTTP_USER_AGENT'])) ? header("Location: ./browserko.php") : TRUE;

Almeno adesso funziona, speriamo che vada bene anche domani.:crying:

Se secondo voi non ci sono problemi ed il codice è corretto direi che si può chiudere.:fonzie:
Praticamente mi sono fatto una domanda e mi sono dato una risposta :quote::quote:
 

Discussioni simili