Php sunucu tarafında tarayıcı tanımlama

10 Cevap php

Ben bir web sitesi var. Kullanıcı belirli bir sayfada tıkladığında (diyelim identify.php) Ben istemci kullanan tarayıcı türünü bulmak istiyorum. Tarayıcı mozilla olabilir, IE, Opera, Chrome ya da SonyEricssonK610i, SAMSUNG SGH-E370, SonyEricssonT700 veya NokiaN73-1 gibi diğer herhangi bir cep cihazı.

Bu kullanıcı tarayıcıyı tespit etmek mümkün mü?

10 Cevap

Sen bakmak gerekir:

$_SERVER['HTTP_USER_AGENT']

Bu tarayıcı için kullanıcı aracısı dizesi içerir. Eğer, örneğin, bu başlık içinde her tarayıcı için belirli bir metin için bakmak gerekir - ki hemen hemen tüm tarayıcılar uyumluluk nedenlerle "Mozilla" olduğunu iddia sakının. Internet Explorer için "MSIE".

Some examples:

Benim Firefox Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 4.0.20506) kendini çağırır

Benim IE7 kendisini çağıran Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com); . NET CLR 1.1.4322; . NET CLR 2.0.50727; . NET CLR 3.0.04506.648; . NET CLR 3.5.21022; . NET CLR 3.0.4506.2152; . NET CLR 3.5.30729; . NET CLR 4.0.20506)

IE bir örneğin tüm hile edin. birden çok sürümü olduğunu iddia eden.

Php function get_browser deneyin ();

http://us3.php.net/function.get-browser

Yoksa o sayfanın yorumlarında çok hafif ağırlık komut birini deneyebilirsiniz.

Sen $_SERVER['HTTP_USER_AGENT'] bakmak olabilir

http://php.net/manual/en/reserved.variables.server.php

Biz browsecap kullanmaya başladı ve bu doğru HTTP_USER_AGENT dize kendimizi ayrıştırma tarayıcı türünü belirlemek için çalışırken daha güvenilir bir çözüm olduğuna inanıyoruz ettik.

dahil etmek için php.ini dosyası (. veya htaccess dosyası) düzenleyin:

php_value browscap                        '/path/to/my/browscap/browscap.ini'

... Sonra php fonksiyon çağrısı olduğu konum:

$browser = get_browser(null, true);

For mobiles, use WURFL

$myDevice = new wurfl_class($wurfl, $wurfl_agents);
$myDevice->GetDeviceCapabilitiesFromAgent($_SERVER["HTTP_USER_AGENT"]);
if ( $myDevice->is_wireless_device ) {
  header("Content-Type: text/vnd.wap.wml");
}

$ _SERVER ['' HTTP_USER_AGENT '];

Bu superglobal değişken:

$_SERVER['HTTP_USER_AGENT'];

neye ihtiyacınız olduğunu ;-)

PHP provides a function called get_browser that checks the user-agent header and tries to guess the browser against a whitelist. It's quite limited, but it works for the most common browsers.

Bu uygulama uymuyorsa, o zaman özel bir işlevi oluşturmak gerekebilir.

$_SERVER['HTTP_USER_AGENT']

Bu değişken talep cihazın kullanıcı aracısı dizesi sağlar. Burada, size bu bol miktarda vardır yapmaması gereken nedenlerden sayısını cheThe için regex kullanabilirsiniz:

  1. Kullanıcı Ajanlar easily spoofed ve dolayısıyla güvenilmez
  2. User Agent dizeleri (here bunlardan bir liste olmasına rağmen) sürekli değişen (yani geleceğe) ve not easily interpreted, tutarsız

I jQuery does gibi, Javascript ile kontrol yeteneği yapıyor öneririz.

Herkes söz vardır gibi, tarayıcı algılamak HTTP_USER_AGENT dizeyi kullanın. Burada nasıl görüneceğini bir örnek:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0.

Sadece çeşitli tarayıcılar için değerleri kaydetmek ve ardından Chrome gibi anahtar kelimeleri kontrol. Büyük olasılıkla bu sayfa görüntülenir nasıl etkiler çünkü Webkit veya diğer görüntüleme ajanları kontrol etmek isteyecektir.