導航:首頁 > 編程語言 > php獲取用戶瀏覽器

php獲取用戶瀏覽器

發布時間:2023-03-30 08:46:42

⑴ 怎樣用php獲取用戶瀏覽器,操作系統,本地天氣

$_SERVER['HTTP_USER_AGENT'] 可以獲取用戶的操作系統和瀏覽器,不過客戶端傳過來的數據,用戶可以偽造
獲取天氣得調用別人的介面,新浪,中國氣象網都提供介面,你調用就可以了

⑵ php 如何獲得客戶端瀏覽器主頁網址

一般客戶端信息會保存在一個數組裡面:
$_SERVER['HTTP_HOST']
一般來說通過$_SERVER這個數組可以得到很多客戶端信息!

⑶ php 怎麼獲取瀏覽器的類型

獲取客戶端瀏覽器、IP地址操作系統類型等的方法(PHP)

=========================
獲取客戶端信息(瀏覽器、IP、OS)
<?php
/*
作用:取得客戶端信息
參數:
返回:指定的資料
使用:
$code = new clientGetObj;
1、瀏覽器:$str = $code->getBrowse();
2、IP地址:$str = $code->getIP();
4、操作系統:$str = $code->getOS();
*/

class clientGetObj
{
function getBrowse()
{
global $_SERVER;
$Agent = $_SERVER['HTTP_USER_AGENT'];
$browser = '';
$browserver = '';
$Browser = array('Lynx', 'MOSAIC', 'AOL', 'Opera', 'java', 'MacWeb', 'WebExplorer', 'OmniWeb');
for($i = 0; $i <= 7; $i ++){
if(strpos($Agent, $Browsers[$i])){
$browser = $Browsers[$i];
$browserver = '';
}
}
if(ereg('Mozilla', $Agent) && !ereg('MSIE', $Agent)){
$temp = explode('(', $Agent);
$Part = $temp[0];
$temp = explode('/', $Part);
$browserver = $temp[1];
$temp = explode(' ', $browserver);
$browserver = $temp[0];
$browserver = preg_replace('/([d.]+)/', '\1', $browserver);
$browserver = $browserver;
$browser = 'Netscape Navigator';
}
if(ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) {
$temp = explode('(', $Agent);
$Part = $temp[1];
$temp = explode(')', $Part);
$browserver = $temp[1];
$temp = explode(' ', $browserver);
$browserver = $temp[2];
$browserver = preg_replace('/([d.]+)/', '\1', $browserver);
$browserver = $browserver;
$browser = 'Opera';
}
if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){
$temp = explode('(', $Agent);
$Part = $temp[1];
$temp = explode(';', $Part);
$Part = $temp[1];
$temp = explode(' ', $Part);
$browserver = $temp[2];
$browserver = preg_replace('/([d.]+)/','\1',$browserver);
$browserver = $browserver;
$browser = 'Internet Explorer';
}
if($browser != ''){
$browseinfo = $browser.' '.$browserver;
} else {
$browseinfo = false;
}
return $browseinfo;
}

function getIP ()
{
global $_SERVER;
if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
} else if (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} else if (getenv('REMOTE_ADDR')) {
$ip = getenv('REMOTE_ADDR');
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}

function getOS ()
{
global $_SERVER;
$agent = $_SERVER['HTTP_USER_AGENT'];
$os = false;
if (eregi('win', $agent) && strpos($agent, '95')){
$os = 'Windows 95';
}
else if (eregi('win 9x', $agent) && strpos($agent, '4.90')){
$os = 'Windows ME';
}
else if (eregi('win', $agent) && ereg('98', $agent)){
$os = 'Windows 98';
}
else if (eregi('win', $agent) && eregi('nt 5.1', $agent)){
$os = 'Windows XP';
}
else if (eregi('win', $agent) && eregi('nt 5', $agent)){
$os = 'Windows 2000';
}
else if (eregi('win', $agent) && eregi('nt', $agent)){
$os = 'Windows NT';
}
else if (eregi('win', $agent) && ereg('32', $agent)){
$os = 'Windows 32';
}
else if (eregi('linux', $agent)){
$os = 'Linux';
}
else if (eregi('unix', $agent)){
$os = 'Unix';
}
else if (eregi('sun', $agent) && eregi('os', $agent)){
$os = 'SunOS';
}
else if (eregi('ibm', $agent) && eregi('os', $agent)){
$os = 'IBM OS/2';
}
else if (eregi('Mac', $agent) && eregi('PC', $agent)){
$os = 'Macintosh';
}
else if (eregi('PowerPC', $agent)){
$os = 'PowerPC';
}
else if (eregi('AIX', $agent)){
$os = 'AIX';
}
else if (eregi('HPUX', $agent)){
$os = 'HPUX';
}
else if (eregi('NetBSD', $agent)){
$os = 'NetBSD';
}
else if (eregi('BSD', $agent)){
$os = 'BSD';
}
else if (ereg('OSF1', $agent)){
$os = 'OSF1';
}
else if (ereg('IRIX', $agent)){
$os = 'IRIX';
}
else if (eregi('FreeBSD', $agent)){
$os = 'FreeBSD';
}
else if (eregi('teleport', $agent)){
$os = 'teleport';
}
else if (eregi('flashget', $agent)){
$os = 'flashget';
}
else if (eregi('webzip', $agent)){
$os = 'webzip';
}
else if (eregi('offline', $agent)){
$os = 'offline';
}
else {
$os = 'Unknown';
}
return $os;
}

}
?>

獲取IP地址

說明:使用 Request.ServerVariables("REMOTE_ADDR") 來取得客戶端的 IP 地址,但如果客戶端是使用代理伺服器來訪問,那取到的就是代理伺服器的 IP 地址,而不是真正的客戶端 IP 地址。要想透過代理伺服器取得客戶端的真實IP 地址,就要使用Request.ServerVariables("HTTP_X_FORWARDED_FOR") 來讀取。不過要注意的事,並不是每個代理伺服器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 來讀取客戶端的真實 IP,有些用此方法讀取到的仍然是代理伺服器的 IP。
還有一點需要注意的是:如果客戶端沒有通過代理伺服器來訪問,那麼用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 取到的值將是空的。因此,如果要在程序中使用此方法,可以這樣處理:
......
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")
......
即:如果客戶端通過代理伺服器,則取 HTTP_X_FORWARDED_FOR 的值,如果沒通過代理伺服器,就取 REMOTE_ADDR 的值。

方法一:
function real_ip($type)
{
if ($_SERVER["HTTP_X_FORWARDED_FOR"])
{
if ($_SERVER["HTTP_CLIENT_IP"])
{
$proxy = $_SERVER["HTTP_CLIENT_IP"];
}
else
{
$proxy = $_SERVER["REMOTE_ADDR"];
}
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
else
{
if ($_SERVER["HTTP_CLIENT_IP"])
{
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
else
{
$ip = $_SERVER["REMOTE_ADDR"];
}
}
if($type=='ip')return $ip;

if($type=='proxy')return $proxy;
}

方法二:
<?
function iptype1 () {
if (getenv("HTTP_CLIENT_IP")) {
?return getenv("HTTP_CLIENT_IP");
}
else {
?return "none";
}
}
function iptype2 () {
if (getenv("HTTP_X_FORWARDED_FOR")) {
?return getenv("HTTP_X_FORWARDED_FOR");
}
else {
?return "none";
}
}
function iptype3 () {
if (getenv("REMOTE_ADDR")) {
?return getenv("REMOTE_ADDR");
}
else {
?return "none";
}
}
function ip() {
$ip1 = iptype1();
$ip2 = iptype2();
$ip3 = iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
?return $ip1;
}
elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") {
?return $ip2;
}
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {
?return $ip3;
}?
else {
return "none";
}
}

Echo ip();
?>

方法三:
01 : function ipCheck() {
02 : if (getenv( 'HTTP_CLIENT_IP' )) {
03 : $ip = getenv( 'HTTP_CLIENT_IP' );
04 : }
05 : elseif (getenv( 'HTTP_X_FORWARDED_FOR' )) {
06 : $ip = getenv( 'HTTP_X_FORWARDED_FOR' );
07 : }
08 : elseif (getenv( 'HTTP_X_FORWARDED' )) {
09 : $ip = getenv( 'HTTP_X_FORWARDED' );
10 : }
11 : elseif (getenv( 'HTTP_FORWARDED_FOR' )) {
12 : $ip = getenv( 'HTTP_FORWARDED_FOR' );
13 : }
14 : elseif (getenv( 'HTTP_FORWARDED' )) {
15 : $ip = getenv( 'HTTP_FORWARDED' );
16 : }
17 : else {
18 : $ip = $_SERVER[ 'REMOTE_ADDR' ];
19 : }
20 : return $ip;
21 : }

⑷ php怎麼獲取瀏覽器的類型

可以使用預定義變數:

$_SERVER['HTTP_USER_AGENT']

返回如下:

Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7

⑸ 我用PHP $_SERVER['HTTP_USER_AGENT'] 獲取到的客戶瀏覽器信息只有 「Mozilla/4.0」 這是什麼瀏覽器

簡單來說,瀏覽分為兩部分構成:shell+內核。其中shell的種類相對比較多,內核則比較少。shell是指瀏覽器的外殼,例如菜單工具欄目等,主要是提供給用戶界面操作,參數設置等等,它是調用內核來實現各種功能的,內核才是瀏覽器的核心。內核是基於標記語言顯示內容的程序或模塊,也有一些瀏覽並不區分內核和外殼,從Mozilla將Gecko獨立出來以後,才有了外殼和內核的明確劃分。目前主流瀏覽有:IE6,IE8,Mozilla FireFox,Opera,Safari,chrome,Netscape等。
瀏覽器內核又可以分為兩部分:渲染引擎和JS引擎。它負責取得網頁的內容(HTML,XML,圖像等等)、訊息整理(例如加入CSS等),然後會輸出至顯示器或者列印機。瀏覽器內核的不同對於網頁的語法解釋會有不同,所以渲染的效果也不同,所有網頁瀏覽器,電子郵件客房端,以及其它需要編輯,顯示網路內容的應用都需要內核,JS引擎則是解析javascript語言,執行javascript語言來實現網頁的動態效果。最開始渲染引擎和JS引擎沒有區分很明確,後來JS引擎越來越獨立,內核引擎就傾向於只指渲染引擎,有一個網頁標准計劃小組製作了一個ACID來測試引擎的兼容性和性能,內核的種類很多,如加上沒什麼人使用的非商業的免費內核,可能會有十多種,但是常見的瀏覽器內核可以分為四種:Trient\Gecko\Presto\Webkit.
Trident 又稱MSHTML,是微軟開的渲染引擎(包含了javascript引擎JScript),它已深入了Window系統的骨髓,例如:Window Player,Window explore,OutLook express等都使用了,目前很多瀏覽都使用這個引擎,如IE,Maxthon(最新版本使用Webkit).
Gecko:是使用C++開發的,Open Source的渲染引擎,包括了SpiderMonkey(Rhino)。主要的使用者有Firefox。
Webkit:是蘋果公司基於KHTML開發的,包括Webcore和JavaScriptCore(SquirrelFish,V8)兩個引擎。主要使用者有Safari,chrome.
Presto:Opera software公司開發的,用於Opera引擎渲染,Macromedia Dreamweaver (MX版本及以上)和Adobe Creative Suite 2也使用了Presto的內核。
Trident內核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等
Gecko內核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等
Presto內核:Opera7及以上
Webkit內核:Safari,Chrome等
1,Trident內核和W3C標准脫節。
2,Trident內核的大量Bug等安全問題沒有得到解決,加上一些專家學者公開自己認為IE瀏覽器不安全的觀點,使很多用戶開始轉向其他瀏覽器,FF,Opera就是這時期興起的。
Gecko:這是Firefox 和 Flock 所採用內核,這個內核的優點就是功能強大、豐富,可以支持很多復雜網頁效果和瀏覽器擴展介面,但是代價是也顯而易見就是要消耗很多的資源,比如內存。
Presto:Opera 採用的是 Presto內核,Presto內核被稱為公認的瀏覽網頁速度最快的內核,這得益於它在開發時的天生優勢,在處理JS腳本等腳本語言時,會比其他的內核快3倍左右,缺點就是為了達到很快的速度而丟掉了一部分網頁兼容性。

閱讀全文

與php獲取用戶瀏覽器相關的資料

熱點內容
怎麼在app上進行機場升艙 瀏覽:133
fx3ga用什麼編程軟體 瀏覽:498
深度學習演算法樣本數量 瀏覽:966
電腦文件夾打開畫面塊狀 瀏覽:790
固態硬碟與機械盤的加密方法 瀏覽:634
unix編譯軟體 瀏覽:563
影視製作中西書局中央編譯出版社 瀏覽:822
變數作用域是編譯器決定的嗎 瀏覽:755
linux結構分析 瀏覽:812
程序員記錄歷史 瀏覽:798
編譯器怎麼調用構造函數的 瀏覽:97
高質量cpdf 瀏覽:824
福建電信代理伺服器雲主機 瀏覽:618
美圖看看pdf 瀏覽:434
編譯後報錯 瀏覽:294
網路設備怎麼加密 瀏覽:789
hbuilderx文件夾有哪些 瀏覽:102
空調壓縮機生產板塊 瀏覽:616
開源多媒體伺服器都有什麼 瀏覽:396
反編譯了別人的app會被發現嗎 瀏覽:918