Gibt es eine Möglichkeit, PHP zu verwenden, um zu erkennen, ob die Seite mit IE6 geladen wird?Kann ich IE6 mit PHP erkennen?
Antwort
Probieren Sie mal die User-Agent-Überprüfung für 'MSIE 6.'
.
$using_ie6 = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== FALSE);
Dies basiert auf this user agent information.
Dies entspricht oft auch Opera, da Opera häufig "MSIE 6.0" in ihre User-Agent-Zeichenfolge einfügt. – thomasrutter
Letzte Versionen von Opera haben NICHT (standardmäßig) MSIE 6.0 in der User-Agent-Zeichenfolge – philfreo
In meinem Fall ist dies ein falscher positiver für alle MSIE-Browser, da alle "MSIE 6.0 kompatibel" auflisten, selbst wenn ihre Version tatsächlich ist höher. – Christian
Sie können IE6 erkennen mit HTML auf diese Weise
<!--[if IE 6]>
// ie6 only stuff here
<![endif]-->
Here's a link on how it's done in PHPWay Back Machine aber ich habe in Parsen der $_SERVER["HTTP_USER_AGENT"]
für IE6 viele Fehlalarme gesehen
+1 beste Antwort –
Dies kann manchmal nützlich sein, aber es ist nicht eigentlich eine Antwort auf die Frage. Es fragt, wie man das mit PHP macht. Der Benutzeragent könnte IE sein, aber möglicherweise wird HTML nicht gerendert. – Fuser97381
Sie können mit updated browscap.ini file verwenden.
Dies klingt interessant, ich werde es versuchen. – PHLAK
Sie können, mit der HTTP-User-Agent-Header, aber ich würde stark davon abraten, wenn möglich zu tun. Der User-Agent-Header ist sehr schwer genau zu analysieren und tendiert mit einfachem String-Matching zu falsch-positiven Ergebnissen - sogar wenn man das Problem von Browsern ignoriert, die vorgeben, andere Browser zu sein. Zum Beispiel entspricht die Zeichenfolge "MSIE 6." von Jeremy dem IE Mobile, der sich so sehr von IE6 unterscheidet, dass Sie diese im Allgemeinen nicht zusammenführen wollen.
Plus, wenn Sie verschiedene HTML an verschiedene Browser senden, müssen Sie die 'Vary' Header verwenden (wodurch Caches weniger effektiv), um zu vermeiden, dass Caches die falschen Seiten an verschiedene Browser senden.
Also, wenn Sie einen anderen Ort finden können, um die Browser-Differenzierung zu tun, die definitiv am besten ist. Ólafurs Ansatz mit bedingten Kommentaren ist normalerweise der einfachste Ansatz zum Ändern von JavaScript- und HTML-Markup/CSS-Links.
Danke Jungs, ich am Ende die folgende Funktion zu schaffen und nannte es nach Bedarf:
// IE6 Check
function isIE() {
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
if (ereg("msie 6.0", $userAgent)) {
return true;
} else {
return false;
}
}
Kurzer Tipp: Verwenden Sie die Preg-Funktionen in PHP anstelle von ereg, sie sind schneller. http://uk.php.net/manual/en/function.preg-match.php – DisgruntledGoat
Scratch, dass Sie keine reguläre Ausdruck-Funktion überhaupt verwenden sollten, wenn Sie nur nach dem Vorhandensein einer Zeichenfolge suchen. Verwenden Sie strpos, wie die obige Antwort vermuten lässt. – DisgruntledGoat
Viele der User-Agent-basierten Antworten auf dieser Seite sind nicht allzu zuverlässig, weil Opera identifiziert sich oft mit einem User-Agent-String "MSIE 6.0", wie enthalten:
Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.51
Dies betrifft alle Versionen von Opera 5 bis 9 und sogar 10 Opera und kann ein- oder ausgeschaltet aus Opera gedreht werden. See this page.
Eine gängige Methode, die ich gesehen habe, ist für "MSIE" und gegen "Opera" zu testen. Zum Beispiel
if (preg_match('/\bmsie 6/i', $ua) && !preg_match('/\bopera/i', $ua))
echo "We have IE6!";
gut PHLAK ...
Ich denke, das ist viel besser: P
if(preg_match('/msie [2-6]/i',$_SERVER['HTTP_USER_AGENT'])) {
// if IE<=6
} else {
//if IE>6
}
Funktioniert gut, außer "preg" sollte "preg_match" sein. – kingjeffrey
sry - i ate _match: P – marverix
Die Syntax '/ msie [1-6]/i'' ist kürzer und ist wahrscheinlich für die meisten Menschen vertrauter. –
Funktion ist preg_match() anstelle von Preg(), aber gut!
Hinweis IE8 gibt auch an, dass IE6 in seiner User-Agent-Zeichenfolge kompatibel ist.
Ich fand das vor kurzem wahr, als ein Benutzer mich kontaktierte, um zu sagen, dass sie IE8 verwendeten, aber ich entdeckte es als IE6. Ihre User-Agent-Zeichenfolge war dies: Mozilla/4.0 (kompatibel; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.1; SV1); .NET CLR 2.0.50727) – neave
Ich studierte dies und es scheint, dass es nur passiert, wenn der IE in Kompatibilitätsansicht ist. – Jonathan
sehr hilfreicher Thread. Ich habe dies verwendet, um die Deklaration für IE6 zu verbergen.nur stellt sich heraus IE6 die erste Zeile des Dokuments für Doctype prüft Schnüffeln, was bedeutet, dass, wenn der <?xml>
String vorhanden ist, IE6 im Quirks-Modus übertragen werden, unabhängig von der Doctype im Anschluss an der <?xml>
Erklärung
Ich bin nicht sicher, wenn sein Kritisch, um noch einen Opern-Check einzuschließen, aber haben es trotzdem aufgenommen.
//check if IE 6 or less
$not_lte_ie6 = true;
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if(strpos($ua,'msie') !== FALSE) {
if(strpos($ua,'opera') === FALSE) {
if(preg_match('/(?i)msie [1-6]/',$ua)) $not_lte_ie6 = false;
}
}
if ($not_lte_ie6)
echo "<?xml version='1.0' encoding='UTF-8'?>\n";
Sollte das nicht === sein? – Benubird
Die aufgeführten Methoden werden oft mit bestimmten Browser-Flag-Plug-Ins (MathPlayer, zum Beispiel, wie auch einige von Malware Symbolleisten).
finde ich eine viel zuverlässigere Methode ist:
if(preg_match('/^Mozilla\/4\.0 \(compatible; MSIE 6/', $_SERVER['HTTP_USER_AGENT']) != 0)
Das Snippet im if gibt TRUE zurück, wenn IE6 erkannt wird. –
Wie alle anderen gesagt, es wird Fehlalarme werden, indem nur den User-Agent überprüft ... also warum nicht verwenden beide, Benutzer Agentenüberprüfung und ein bedingter Kommentar.
zum Beispiel ...
<? if (preg_match('/\bmsie 6/i', $_SERVER['HTTP_USER_AGENT']) { ?>
<!--[if IE 6]>
// ie6 only stuff here
<![endif]-->
<? } ?>
Auf diese Weise werden Sie nicht diesen unnötigen Code zu den meisten Browsern werden zurückschicken ... aber immer noch im Falle eines falsch-positiven sicher sein.
Etwas einfacher:
if(stristr(strtolower($_SERVER['HTTP_USER_AGENT']), "msie 6.0")) {
// IE6? Aren't you out of fashion yet?
}
function isOldIE() {
// don't support IE6 or below
return preg_match('/MSIE [1-6]/', $_SERVER['HTTP_USER_AGENT']);
}
Sie es für viele Browser verwenden können, aber es ist zeitaufwendig und manchmal falsch positive ...
function do_stylesheet_link() {
// Picks up appropriate css file depending on the user-agent
// if (stristr($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
//echo '<link rel="stylesheet" href="css/firefox.css" type="text/css" />'; }
//elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Chrome')) {
//echo '<link rel="stylesheet" href="css/chrome.css" type="text/css" />'; }
//elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Safari')) {
//echo '<link rel="stylesheet" href="css/safari.css" type="text/css" />'; }
//elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Opera')) {
//echo '<link rel="stylesheet" href="css/opera.css" type="text/css" />'; }
if (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.')) {
echo '<link rel="stylesheet" href="css/ie6.css" type="text/css" />'; }
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 7.')) {
echo '<link rel="stylesheet" href="css/ie7.css" type="text/css" />'; }
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 8.')) {
echo '<link rel="stylesheet" href="css/ie8.css" type="text/css" />'; }
else {
echo '<link rel="stylesheet" href="css/style.css" type="text/css" />';
}
}
if(substr($_SERVER['HTTP_USER_AGENT'],0,34)=="Mozilla/4.0 (compatible; MSIE 6.0;") echo "I am stupid IE6";
IE 6 Startet immer mit "Mozilla/4.0 (kompatibel; ? MSIE 6.0;“ IE 7,8 hat "MSIE 6" in der Mitte ...
function isIE($versions=array()) {
if (!empty($versions))
$versions = '('.implode('|',$versions).')';
else
$versions = '1?\d';
$ua = $_SERVER['HTTP_USER_AGENT'];
$is_not_opera = false===stripos($ua, 'opera');
return $is_not_opera && preg_match('/\bmsie '.$versions.'\./i', $ua);
}
Verwendung:
$is_ie = isIE(); //Any version
$is_ie_7 = isIE(array(7)); //IE 7
$is_old_id = isIE(array(6,7));//IE 7 and 8
- 1. Erkennen von IE6 mit jQuery.support
- 2. jQuery erkennen IE6 mit jQuery.support NICHT jQuery.browser
- 3. Wie kann ich meine Website mit ie6
- 4. Wie kann ich die Videodateidauer in Minuten mit PHP erkennen?
- 5. Wie kann ich den Browser mit PHP oder JavaScript erkennen?
- 6. Kann ich MySQL-Warnungen mit PHP erkennen und behandeln?
- 7. Wie kann ich Mobile Safari Server Seite mit PHP erkennen?
- 8. Kann ich Integer-Überlauffehler mit Valgrind erkennen?
- 9. Wie kann ich die Tageslichtersparnis automatisch in PHP erkennen?
- 10. Kann man Hund/Katze in PHP erkennen?
- 11. Wie kann man einen Crawler/Spider mit PHP erkennen?
- 12. ie6 kann innerhalb des Textfelds
- 13. Problem mit IE6 CSS
- 14. iPad in PHP erkennen?
- 15. Wie kann ich nicht westliche Charaktere erkennen?
- 16. Rundenzahl in PHP erkennen?
- 17. PHP http_get_request_headers() nicht erkennen?
- 18. Erkennen überlappende Perioden php
- 19. kann ich mit php cachen?
- 20. Wie kann ich den unerwarteten Abstand in IE6 beseitigen?
- 21. Wie kann ich einem Objekt in IE6 Eigenschaften hinzufügen?
- 22. Erkennen von Überlappungskonflikten bei Kalenderereignissen mit PHP
- 23. PHP: Erkennen Seite Aktualisieren
- 24. Erkennen von IE mit jQuery
- 25. IE6 Schwimmer Seitenverkleidung Bug
- 26. Erkennen, ob Mod_Security mit PHP installiert ist?
- 27. PHP Elternbild Benutzer-URL erkennen
- 28. Wie kann ich die aktuelle IIS-Version mit PHP erkennen? jetzt
- 29. Kann ich (Grafiktablett) Stiftdruck in Javascript erkennen?
- 30. PHP - automatisch erkennen (Roh-) urlencode
ein besonderer Grund Sie dies tun wollen – staticsan
haha läßt töten IE6 http : //www.bringdownie6.com/ – lock
Weil es alt und zeitraubend ist, für zu entwickeln und manchmal möchten Sie nur umleiten, sie zu einer beschissenen, alten Version Ihrer Website.Online –