Pagina 1 di 3

Rilevamento browser

Inviato: 07/11/2011, 15:56
da lenders
C'è una mod che permette che quando un utente usa IE,Opera,chrome o altri browser che gli esce una scritta che gli avvisa che il forum è solo ottimizzato per firefox?Io sono riuscito a fare una cosa cosi solo per IE:

http://i39.tinypic.com/nfo0g4.jpg

Re: Rilevamento browser

Inviato: 07/11/2011, 16:09
da Micogian
Basta una semplice ricerca su Google "individuare browser".
Ho trovato questo:

Codice: Seleziona tutto

function GetBrowser(){
    $browser = array("Internet Explorer" => "MSIE",
             "FireFox" => "Firefox",
             "Lynx" => "Lynx",
             "Opera" => "Opera",
             "WebTV" => "WebTV",
             "Konqueror" => "Konqueror",
             "Bot" => "bot|Google|slurp|scooter|spider|infoseek",
             "Netscape" => "Nav|Gold|x11|Netscape",
            );
    
    foreach($browser as $chiave => $valore){
        if(eregi($valore, $_SERVER["HTTP_USER_AGENT"])){
            return $chiave;
        }
    }

    return "Altro";
}    

echo GetBrowser();

Re: Rilevamento browser

Inviato: 07/11/2011, 16:14
da lenders
Illuminami,come funziona?Io ho usato un code cosi:

Codice: Seleziona tutto

<!--[if lte IE 9]>contenuto<![endif]-->

Re: Rilevamento browser

Inviato: 07/11/2011, 16:38
da Micogian
Qui stiamo parlando di PHP.
Fai un semplice file, ad esempio "browser.php" e ci metti il codice postato (mancano i tag)

Codice: Seleziona tutto

<?php
function GetBrowser(){
    $browser = array("Internet Explorer" => "MSIE",
             "FireFox" => "Firefox",
             "Lynx" => "Lynx",
             "Opera" => "Opera",
             "WebTV" => "WebTV",
             "Konqueror" => "Konqueror",
             "Bot" => "bot|Google|slurp|scooter|spider|infoseek",
             "Netscape" => "Nav|Gold|x11|Netscape",
            );
   
    foreach($browser as $chiave => $valore){
        if(eregi($valore, $_SERVER["HTTP_USER_AGENT"])){
            return $chiave;
        }
    }

    return "Altro";
}   

echo GetBrowser();
?>
Se lanci l'url browser.php avrai come risultato il tuo browser.
Ora si tratta di renderlo utilizzabile dal template.
Inserisci la function da qualche parte, es. il file functions.php oppure in index.php, visto che dovrebbe controllare quando apri l'indice.
Si potrebbe anche lasciare come file esterno e nell'index inserire la riga

Codice: Seleziona tutto

include($phpbb_root_path . 'browser.' . $phpEx);
Devi togliere però la riga echo GetBrowser(); e sostituirla con

Codice: Seleziona tutto

$template->assign_var(array('BROWSER_COR', GetBrowser()));
Nel template usi la variabile BROWSER_COR:

Codice: Seleziona tutto

<!-- IF BROWSER_COR <> 'FireFox' -->Messaggio<!-- ENDIF -->
Così, a spanne.

Re: Rilevamento browser

Inviato: 07/11/2011, 16:53
da lenders
Ho inserito questo

Codice: Seleziona tutto

    include($phpbb_root_path . 'browser.' . $phpEx);
sotto a:

Codice: Seleziona tutto

include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
Ma mi da l'errore

Codice: Seleziona tutto

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ')' in C:\xampp\htdocs\graphicforum\browser.php on line 22

Re: Rilevamento browser

Inviato: 07/11/2011, 17:18
da Micogian
Dovrebbe andare così:

Codice: Seleziona tutto

<?php
function GetBrowser()
{
	$browser = array(
		"Internet Explorer" => "MSIE",
		"FireFox" => "Firefox",
		"Lynx" => "Lynx",
		"Opera" => "Opera",
		"WebTV" => "WebTV",
		"Konqueror" => "Konqueror",
		"Bot" => "bot|Google|slurp|scooter|spider|infoseek",
		"Netscape" => "Nav|Gold|x11|Netscape",
		);
       
	foreach($browser as $chiave => $valore)
	{
		if(eregi($valore, $_SERVER["HTTP_USER_AGENT"])){
		return $chiave;
		}
	}
	return "Altro";
	}   
$template->assign_var(array('BROWSER_COR', GetBrowser()));
?>
L'unico dubbio è la posizione, eventualmente sposta l'include in fondo, prima di // Output page

Re: Rilevamento browser

Inviato: 07/11/2011, 17:26
da lenders
Questo si è risolto,adesso resta il fatto che quando inserisco il code nel template me lo visualizza su tutti i browser e non solo quello che ho scelto,ad esempio opera:

Codice: Seleziona tutto

<!-- IF BROWSER_COR <> 'Opera' --><div style="text-align:center;"><div style="margin-bottom: 10px; background: #b2ccff; padding: 6px; height:auto; border: 2px solid #80aaff; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px;"><span style="font-size: 150%; line-height: 116%;"><span style="font-family:Arial Black;">
<img width="48" height="48" alt="" style="float:left; padding-right:10px;" src="./images/ie.png">	
Attenzione!<br />Rilevato uso di Internet Explorer,al momento vi sono problemi che impedicono il corretto funzionamento del forum.<br />Si raccomanda per un uso fluido e senza problemi di usare <a href="http://www.mozilla.org/it/firefox/new/" target="_new"><span style="color:blue;">Mozilla Firefox</a></span>.
</span></a>.</span></span></div></div><!-- ENDIF -->

Re: Rilevamento browser

Inviato: 07/11/2011, 17:35
da Micogian
Ma guarda che "<>" vuol dire "diverso da..."

Codice: Seleziona tutto

<!-- IF BROWSER_COR <> 'Opera' -->
Infatti io avevo inserito

Codice: Seleziona tutto

<!-- IF BROWSER_COR <> 'FireFox' -->
che stava a significare "se hai un browser diverso da Firefox ...."
Per mettere "uguale a" devi fare così:

Codice: Seleziona tutto

<!-- IF BROWSER_COR == 'Opera' -->

Re: Rilevamento browser

Inviato: 07/11/2011, 17:57
da lenders
Allora sono io che non ho capito na mazza.Io per farlo visualizzare solo su IE ho usato questo code:

Codice: Seleziona tutto

<!-- IF BROWSER_COR == 'Internet Explorer' -->
Mentre se adesso voglio farlo visualizzare solo su opera ho usato questo code:

Codice: Seleziona tutto

<!-- IF BROWSER_COR == 'Opera'  -->
E non me lo visualizza perchè?

Re: Rilevamento browser

Inviato: 07/11/2011, 23:11
da Micogian
A parte che da come avevi posto il problema sembrava che il Browser corretto fosse Firefox, quindi la cosa più semplice da fare era quella di visualizzare il messaggio a tutti quelli che non hanno Firefox.
Se usi il primo codice che ho postato, quello con l'echo, ti fornisce il nome del tuo browser.
Cambia Browser e vedi cosa ti ritorna. Mi sembra elementare.
E ricordati anche che la function fornisce il nome solo ai browser indicati, altrimenti ritorna "Altri".