C#或js获取客户端信息

稍微研究了一下,服务器如何获取用户的信息做了一个整理。

cs代码 通过反射来访问类的实例属性和属性值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Reflection;
using System.Text.RegularExpressions;

namespace Whoru
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            System.Web.HttpBrowserCapabilities bCaps;
            // 请求者的浏览器信息
            bCaps = Request.Browser;

            // 获取bCaps对象的类型
            Type type = bCaps.GetType();
            object obj = Activator.CreateInstance(type);
            // 属性信息数组
            PropertyInfo[] props = type.GetProperties();

            string str = string.Empty;
            // 遍历实例的所有属性,及属性值
            foreach (PropertyInfo pi in props)
            {
                // 属性名
                string name = pi.Name;
                try
                {
                    str += string.Format("{0}:{1}", pi.Name, pi.GetValue(bCaps, null).ToString());
                    str += "<br>";
                }
                catch (Exception ex)
                {
                    //Response.Write("error:"+ex.Message);
                    str += "<br>";
                }
            }

            // 为了加强准确性,防止支持wap的浏览器如opera,加入操作系统验证。openwave|后为pc操作系统
            // Chrome浏览器有点捣蛋,它的agent信息里会包括Mozilla,Chrome,Safari等信息,所以必要时要做一些特殊的判断
            string osPat = "mozilla|m3gate|winwap|openwave|Windows NT|Windows 3.1|95|Blackcomb|98|ME|X Window|Longhorn|ubuntu|AIX|Linux|AmigaOS|BEOS|HP-UX|OpenBSD|FreeBSD|NetBSD|OS/2|OSF1|SUN";
            string osMob = "Android|iPhone|iPod|iPad|Windows Phone|MQQBrowser";
            string uAgent = Request.ServerVariables["HTTP_USER_AGENT"];
            Regex reg = new Regex(osPat);
            Regex regMob = new Regex(osMob);
            if (reg.IsMatch(uAgent))
            {
                str += "电脑访问";
            }
            else if (regMob.IsMatch(uAgent))
            {
                str += "手机访问";
            }
            else
            {
                str += "未知的设备";
            }
            str += "<br/>" + uAgent;

            divContent.InnerHtml = str;
        }
          
    }
}

html代码

把div定义为服务器控件,然后在后台把信息输出。

<%@ Page Language="C#" AutoEventWireup="true"  CodeBehind="Default.aspx.cs" Inherits="Whoru._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <script language="javascript">    

    function setBrowser()
    {
     var browser="unknown";
     var userAgent = navigator.userAgent.toLowerCase();
     if (userAgent.indexOf("chrome") > -1)
     browser="Opera";
     else if (userAgent.indexOf("konqueror") > -1)
     browser="Konqueror";
     else if (userAgent.indexOf("firefox") > -1)
     browser="Firefox";
     else if (userAgent.indexOf("netscape") > -1)
     browser="Netscape";
     else if (userAgent.indexOf("msie") > -1)
     browser="Internet Explorer";
     else if (userAgent.indexOf("opera") > -1)
     browser="Chrome";
     else if (userAgent.indexOf("safari") > -1)
     browser="Safari";
     var brDiv=document.getElementById("browser");
     brDiv.innerHTML=userAgent+"<b>" + browser + "</b>";
     }
    window.onload=setBrowser;

 </script>
</head>
<body>
    <form id="form1" runat="server">
    You are using:   <div id="browser"></div>
    <div id="divContent" runat="server">
        
    </div>
    </form>
</body>
</html>

  

posted @ 2013-04-24 18:09  V.Wang  阅读(400)  评论(0编辑  收藏  举报