Sayfa IE6 kullanarak yüklenen olup olmadığını tespit etmek için PHP kullanmak için bir yolu var mı?
'MSIE 6.'
için kendi kullanıcı ajan kontrol etmeyi deneyin.
$using_ie6 = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== FALSE);
Bu this user agent information dayanmaktadır.
HTML ile bu şekilde IE6 algılayabilir
<!--[if IE 6]>
// ie6 only stuff here
<![endif]-->
Here's a link on how it's done in PHP Way Back Machine but I've seen many false positives in parsing the $_SERVER["HTTP_USER_AGENT"]
IE6
Opera çoğu gibi "MSIE 6.0", içeren bir kullanıcı aracısı dizesi ile kendisini tanımlayan çünkü bu sayfada user-agent tabanlı cevaplar çoğu da güvenilir değildir:
Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.51
This affects all versions of Opera 5 through 9 and even Opera 10 and can be turned on or off from within Opera. See this page. Em>
Ben gördüğüm bir ortak yaklaşım "MSIE" ve "Opera" karşı test etmektir. Örneğin,
if (preg_match('/\bmsie 6/i', $ua) && !preg_match('/\bopera/i', $ua))
echo "We have IE6!";
Sen get_browser updated browscap.ini file ile kullanabilirsiniz.
Herkesin dediği gibi, will sadece kullanıcı aracısı kontrol ederek yanlış pozitif olması ... yani neden both, kullanıcı aracısı denetimi ve koşullu açıklama kullanmayın.
örneğin ...
<? if (preg_match('/\bmsie 6/i', $_SERVER['HTTP_USER_AGENT']) { ?>
<!--[if IE 6]>
// ie6 only stuff here
<![endif]-->
<? } ?>
Bu şekilde en tarayıcılar için bu gereksiz kod geri gönderme olmayacaktır ... ama yine de bir yanlış pozitif durumunda güvenli olacaktır.
Sen can, HTTP User-Agent başlığı kullanılarak, ama ben şiddetle tavsiye ediyorum bunu yaparken değil mümkünse. User-Agent başlığının doğru ayrıştırmak için çok çok zordur, ve basit dize eşleme ile yanlış pozitif yönelik eğilimi - hatta diğer tarayıcılar taklit tarayıcıların sorunu görmezden. Örneğin Jeremy'nin "MSIE 6." Dizesi genellikle bunları conflate istemiyorum IE6 çok çok farklı IE Mobile, maç olacaktır.
Eğer farklı tarayıcılar için farklı HTML göndermek Artı, sen önbelleklerini farklı tarayıcılar için yanlış sayfaları göndermek önlemek için (önbelleğe az etkili yapar) 'Vary' başlığı kullanmak zorunda.
Kesinlikle en iyi tarayıcı farklılaşma yapmak için başka bir yer bulmak Yani eğer. Koşullu yorumlar ile Olafur yaklaşımı genellikle JavaScript ve HTML biçimlendirme / CSS bağlantıları değiştirmek için basit bir yaklaşımdır.
Birçok tarayıcılar için kullanabilirsiniz, ama o zaman alıcı ve bazen yanlış pozitif ...
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" />';
}
}
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);
}
Kullanımı:
$is_ie = isIE(); //Any version
$is_ie_7 = isIE(array(7)); //IE 7
$is_old_id = isIE(array(6,7));//IE 7 and 8
çok yararlı konu. Ben IE6 için <?xml>
beyanı gizlemek için bu kullanılır. IE6 sadece <?xml>
dize varsa, IE6 aşağıdaki bağımsız DOCTYPE kültürlerinden modunda işlemek anlamına gelir ki, doctype koklama için belgenin ilk satırı denetler <?xml>
çıkıyor deklarasyon
Ben emin değilim henüz bir opera kontrol dahil, fakat yine de dahil ettik kritik eğer.
//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";