Come posso rilevare se l'utente non sta utilizzando nessuno dei browser Chrome, Firefox o Internet Explorer utilizzando JavaScript o PHP?Come posso rilevare il browser con PHP o JavaScript?
risposta
Il modo migliore per farlo in JS che ho trovato è Quirksmode. Ho fatto uno per PHP che dovrebbe funzionare con i browser più comuni:
$browser = array(
'version' => '0.0.0',
'majorver' => 0,
'minorver' => 0,
'build' => 0,
'name' => 'unknown',
'useragent' => ''
);
$browsers = array(
'firefox', 'msie', 'opera', 'chrome', 'safari', 'mozilla', 'seamonkey', 'konqueror', 'netscape',
'gecko', 'navigator', 'mosaic', 'lynx', 'amaya', 'omniweb', 'avant', 'camino', 'flock', 'aol'
);
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$browser['useragent'] = $_SERVER['HTTP_USER_AGENT'];
$user_agent = strtolower($browser['useragent']);
foreach($browsers as $_browser) {
if (preg_match("/($_browser)[\/ ]?([0-9.]*)/", $user_agent, $match)) {
$browser['name'] = $match[1];
$browser['version'] = $match[2];
@list($browser['majorver'], $browser['minorver'], $browser['build']) = explode('.', $browser['version']);
break;
}
}
}
così leggo in giro e questo è quello che ho trovato ... sia che sia php o javascript, entrambi ottengono l'informazione che il browser è attraverso httfeader, anche il modo in cui funziona Apache. Correggere se sbaglio. –
Esiste effettivamente una funzione in PHP per questo, get_browser.
Molto interessante, non ero a conoscenza di questa funzione. grazie per le informazioni – user103219
Quella funzione richiede browsecap.ini, che non è core PHP. –
Vero. Ecco una versione php pura di questa funzione. Aggiorna automaticamente anche il file del browser. http://code.google.com/p/phpbrowscap/ – txyoji
Io uso la classe Browser Detect per PHP.
Ecco il codice JavaScript attraverso il quale è possibile rilevare facilmente il browser.
var userAgent = navigator.userAgent.toLowerCase();
// Figure out what browser is being used.
var Browser = {
Version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
Chrome: /chrome/.test(userAgent),
Safari: /webkit/.test(userAgent),
Opera: /opera/.test(userAgent),
IE: /msie/.test(userAgent) && !/opera/.test(userAgent),
Mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent),
Check: function() { alert(userAgent); }
};
if (Browser.Chrome || Browser.Mozilla) {
// Do your stuff for Firefox and Chrome.
}
else if (Browser.IE) {
// Do something related to Internet Explorer.
}
else {
// The browser is Safari, Opera or some other.
}
In PHP Io uso il valore $_SERVER['HTTP_USER_AGENT']
e attaccare con regex o stristr.
Il modo più semplice per farlo con JavaScript è
<script language="Javascript">
location.href = 'URL_TO_FORWARD_TO';
</script>
All'interno del location.href
, è possibile utilizzare una variabile PHP in questo modo:
<script language="Javascript">
location.href = '<?php echo $_SERVER['QUERY_STRING']; ?>';
</script>
Questo vorrebbe un URL dato come una query lo script PHP e inoltrare a quell'URL. Lo script si chiamerebbe così:
http://your-server/path-to-script/script.php?URL_TO_FORWARD_TO
Buona fortuna.
Risposta alla domanda sbagliata, forse? –
PHP codice get_browser() è totalmente lavorando per me;)
<?php
function getBrowser()
{
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$bname = 'Unknown';
$platform = 'Unknown';
$version= "";
//First get the platform?
if (preg_match('/linux/i', $u_agent)) {
$platform = 'linux';
}
elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
$platform = 'mac';
}
elseif (preg_match('/windows|win32/i', $u_agent)) {
$platform = 'windows';
}
// Next get the name of the useragent yes separately and for good reason.
if (preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
{
$bname = 'Internet Explorer';
$ub = "MSIE";
}
elseif (preg_match('/Firefox/i',$u_agent))
{
$bname = 'Mozilla Firefox';
$ub = "Firefox";
}
elseif (preg_match('/Chrome/i',$u_agent))
{
$bname = 'Google Chrome';
$ub = "Chrome";
}
elseif (preg_match('/Safari/i',$u_agent))
{
$bname = 'Apple Safari';
$ub = "Safari";
}
elseif (preg_match('/Opera/i',$u_agent))
{
$bname = 'Opera';
$ub = "Opera";
}
elseif (preg_match('/Netscape/i',$u_agent))
{
$bname = 'Netscape';
$ub = "Netscape";
}
// Finally get the correct version number.
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
// we have no matching number just continue
}
// See how many we have.
$i = count($matches['browser']);
if ($i != 1) {
//we will have two since we are not using 'other' argument yet
//see if version is before or after the name
if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
$version= $matches['version'][0];
}
else {
$version= $matches['version'][1];
}
}
else {
$version= $matches['version'][0];
}
// Check if we have a number.
if ($version==null || $version=="") {$version="?";}
return array(
'userAgent' => $u_agent,
'name' => $bname,
'version' => $version,
'platform' => $platform,
'pattern' => $pattern
);
}
// Now try it.
$ua=getBrowser();
$yourbrowser= "Your browser: " . $ua['name'] . " " . $ua['version'] . " on " .
$ua['platform'] . " reports: <br >" . $ua['userAgent'];
print_r($yourbrowser);
?>
Questo può essere il modo semplice per sapere che il browser non utilizza IE, Chrome, o FF
if (navigator.userAgent.indexOf("Chrome") != -1)
BName = "Chrome";
if (navigator.userAgent.indexOf("Firefox") != -1)
BName = "Firefox";
if (navigator.userAgent.indexOf("MSIE") != -1)
BName = "IE";
if(BName=='Chrome' || BName=='Firefox' || BName=='IE')
BName="Not other";
else BName="other";
alert(BName);
Forse questa classe in JS
function CSystemInfo(){
var self = this;
self.nScreenWidth = 0;
self.nScreenHeight = 0;
self.sPlatform = "Unknown";
self.sBrowser = "Unknown";
var init = function(){
self.nScreenWidth = screen.width;
self.nScreenHeight = screen.height;
self.sPlatform = navigator.platform;
self.sBrowser = getBrowser();
}
var getBrowser = function(){
var userAgent = navigator.userAgent;
var version = "UNKNOWN VERSION";
if (userAgent.toLowerCase().indexOf('msie') > -1) {
var ieversionreg = /(MSIE ([0-9]{1,2}\.[0-9]{1,2}))/;
if(ieversionreg.test(userAgent)){
version = ieversionreg.exec(userAgent)[2];
}
return 'Internet Explorer '+version;
}
else if (userAgent.toLowerCase().indexOf('firefox') > -1){
var ffversionreg = /(Firefox\/(.+))/;
if(ffversionreg.test(userAgent)){
version = ffversionreg.exec(userAgent)[2];
}
return 'Firefox '+version;
}
else if (userAgent.toLowerCase().indexOf('chrome') > -1){
var chromereg = /Chrome\/([0-9]{1,2})/;
if(chromereg.test(userAgent)){
version = chromereg.exec(userAgent)[1];
}
return 'Google Chrome '+version;
}
else return 'Unknown';
}
init();
}
un'istanza chiamando
var oInfo = new CSystemInfo();
// Retrieve infos
oInfo.sBrowser; // Google Chrome 21
L'introduzione di IE 11 ha reso questo metodo obsoleto, anche se ho aggiornato a tenerne conto. È molto meglio usare JavaScript e il rilevamento delle funzioni. Certo, a volte vuoi solo uccidere completamente un browser e/o doverlo ospitare per il caso d'uso in cui JavaScript può essere disabilitato.
Non conosco l'obiettivo finale dell'OP, ma nel mio caso tutto ciò che volevo veramente fare era rimbalzare i browser di Balmer. Quello che avevamo a disposizione era fallito per gli utenti di IE 10 a causa di un falso positivo causato da un'espressione regolare simile a un'altra soluzione. (Non so se la regex in questo thread causi lo stesso falso positivo o no, ma so che quello in questa pagina non è lo stesso di quello rotto che avevamo).
Ho inventato un metodo che non si basava su un'espressione regolare (di per sé). Inoltre, non volevo imbattermi in uno scenario in cui dovevo modificare lo script per adattarlo ai nuovi browser, tuttavia, la modifica dello script per far scadere i browser obsoleti in futuro è accettabile.
function obsolete_browser(){
$ua = (isset($_SERVER['HTTP_USER_AGENT']))?$_SERVER['HTTP_USER_AGENT']:'';
$browser = explode(';',$ua);
foreach($browser as &$b){
$b = trim($b); // remove the spaces
$c = explode('.',$b); // major revision only please
if($c[0]){ $b = $c[0]; }
}
if(in_array("Trident/7",$browser)){ // IE11
return false;
} else if(in_array('MSIE 4',$browser)
|| in_array('MSIE 5',$browser)
|| in_array('MSIE 6',$browser)
|| in_array('MSIE 7',$browser)
// || in_array('MSIE 8',$browser) // we'll need this soon enough, right?
|| in_array('BOLT/2',$browser) // worst browser ever
){
return true;
}
return false;
}
1) 99,9% rilevatore preciso: BrowserDetection.php (Examples)
2) funzione più semplice (ma impreciso per ingannare):
<?php
function get_user_browser()
{
$u_agent = $_SERVER['HTTP_USER_AGENT']; $ub = '';
if(preg_match('/MSIE/i',$u_agent)) { $ub = "ie"; }
elseif(preg_match('/Firefox/i',$u_agent)) { $ub = "firefox"; }
elseif(preg_match('/Safari/i',$u_agent)) { $ub = "safari"; }
elseif(preg_match('/Chrome/i',$u_agent)) { $ub = "chrome"; }
elseif(preg_match('/Flock/i',$u_agent)) { $ub = "flock"; }
elseif(preg_match('/Opera/i',$u_agent)) { $ub = "opera"; }
return $ub;
}
?>
Semplicemente Java Script che rileva la tua browser, basta chiamare questo func zione:
<script>
function which_browser() {
//browser_flag --> 0 --> Opera, Chrome, Safari, Firefox
//browser_flag --> 1 --> Internet Explorer
var browser_flag = 0;
if((navigator.userAgent.indexOf("Opera") || navigator.userAgent.indexOf('OPR')) != -1)
{
alert('Opera --> browser_flag = ' + browser_flag);
}
else if(navigator.userAgent.indexOf("Chrome") != -1)
{
alert('Chrome --> browser_flag = ' + browser_flag);
}
else if(navigator.userAgent.indexOf("Safari") != -1)
{
alert('Safari --> browser_flag = ' + browser_flag);
}
else if(navigator.userAgent.indexOf("Firefox") != -1)
{
alert('Firefox --> browser_flag = ' + browser_flag);
}
else if((navigator.userAgent.indexOf("MSIE") != -1) || (!!document.documentMode == true)) //IF IE > 10
{
browser_flag = 1;
alert('IE --> browser_flag = ' + browser_flag);
}
else
{
alert('unknown');
}
return browser_flag;
}
</script>
Se IE, browser_flag ottiene 1, altro browser_flag è 0!
ovviamente regolabile
- 1. Come posso rilevare IE e il browser Edge?
- 2. Come posso rilevare se il browser ha riscontrato un errore JavaScript ... in JavaScript?
- 3. PHP: come determinare se il browser supporta javascript in PHP?
- 4. Posso rilevare l'area visibile dell'utente sul browser?
- 5. Come posso rilevare le specifiche dell'immagine clientide con javascript
- 6. È possibile rilevare JavaScript se il browser dell'utente supporta gzip?
- 7. Come rilevare se il browser è compatibile con ES2015
- 8. javascript o PHP opzione per rilevare lo stato AIM
- 9. Come posso rilevare il supporto rel = "noreferrer"?
- 10. Come posso rilevare le funzioni Javascript chiamate?
- 11. Rileva browser in-app (WebView) con PHP/Javascript
- 12. Utilizzo di javascript per rilevare il tipo di browser
- 13. javascript rilevare adobe plug-reader per il browser
- 14. Come posso rilevare il supporto per contentEditable tramite JavaScript?
- 15. In PHP, come rilevare l'esecuzione è dalla modalità CLI o tramite browser?
- 16. Come posso rilevare l'attivazione del fuoco con javascript?
- 17. Come posso rilevare il supporto tattile del dispositivo in JavaScript?
- 18. Come posso rilevare un evento del browser "copia immagine"?
- 19. Come posso rilevare il tasto Maiusc + in javascript?
- 20. Rilevare con Javascript se un browser supporta Web Open Font Format (Woff) o no
- 21. controllare o disabilitare browser pulsante Indietro con Javascript o AngularJS
- 22. Come posso testare potenzialmente JavaScript "che blocca il browser"?
- 23. Come rilevare che JavaScript e/o i cookie sono disabilitati?
- 24. Come rilevare l'attività del browser?
- 25. JavaScript: Cross-Browser "plugin per il browser" rilevamento
- 26. il modo migliore per rilevare il browser in js
- 27. Come rilevare il browser è andato a schermo intero
- 28. Come posso rilevare se un browser supporta MJPEG?
- 29. Rileva il cambiamento delle schede del browser con javascript
- 30. Come rilevare il supporto JSON in javascript?
potrei sottolineare che conoscendo il browser è utile solo fino a quando l'agente-stringa non è stata modificata ... Sto indovinando si conosce già questo tho. – jcolebrand