php 获取用户浏览器版本代码

 更新时间:2016年11月25日 16:28  点击:1869
在php中我们有个全局变量$_SERVER[\\\'HTTP_USER_AGENT\\\'];可以获取用户所有信息,我们要经过处理才可以判断用户浏览器是那种型的,下面的函数就可以准确的用户浏览器版本号代码。


function getbrowse()
        {
                $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;
        }
 //应用方法
 
 //在ie中
 echo getbrowse(); //internet explorer 6.0
 //在firefox中
 echo getbrowse() ;//netscape navigator 5.0

下面这是一款利用php生成验证码程序了,利用了srand随便函数生成并用php gd库的图像函数生成验证图片,再把生成的数据保存到session全局变量。

//调用此页面,如果下面的式子成立,则生成验证码图片

 代码如下 复制代码

if($_get['action']=='verifycode'){
    rand_create();
}
//验证码图片生成
function rand_create(){
    //通知浏览器将要输出png图片

    header('content-type: image/png');

    //准备好随机数发生器种子
    srand((double)microtime()*1000000);
    //准备图片的相关参数
    $im = imagecreate(62,20);
    $black = imagecolorallocate($im, 0,0,0); //rgb黑色标识符
    $white = imagecolorallocate($im, 255,255,255); //rgb白色标识符
    $gray = imagecolorallocate($im, 200,200,200); //rgb灰色标识符
    //开始作图  
    imagefill($im,0,0,$gray);
    while(($randval=rand()%100000)<10000);{
        //将四位整数验证码绘入图片
     session_start();
   $_session['login_check_num'] = $randval;
        imagestring($im, 5, 10, 3, $randval, $black);
    }
    //加入干扰象素
    for($i=0;$i<200;$i++){
        $randcolor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
        imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
    }
    //输出验证图片
    imagepng($im);
    //销毁图像标识符
    imagedestroy($im);
}
?>


调用方法

 代码如下 复制代码
<img src="code.php?action=verifycode" />

判断验证码是否输入正确

 代码如下 复制代码

<?
if( $_post['code'] == $_session['login_check_num'] )
{
 echo '验证码正确';
}
else
{
 echo '验证码错误';
}

php5有get_headers非常好用,因为他可以直接读取远程文件的信息,而不用把整个文件读取到服务器。但是现在很多web服务器都不支持php5,下面我们就来看一个关于php4获取远程服务器文件大小的实例类吧。

 /*
 
 */

 代码如下 复制代码

if(!function_exists('get_headers'))
{
    function get_headers($url,$format=0)
    {
        $url=parse_url($url);
        $end = " ";
        $fp = fsockopen($url['host'], (empty($url['port'])?80:$url['port']), $errno, $errstr, 30);
        if ($fp)
        {
            $out  = "get / http/1.1 ";
            $out .= "host: ".$url['host']." ";
            $out .= "connection: close ";
            $var  = '';
            fwrite($fp, $out);
            while (!feof($fp))
            {
                $var.=fgets($fp, 1280);
                if(strpos($var,$end))
                    break;
            }
            fclose($fp);

            $var=preg_replace("/ .*$/",'',$var);
            $var=explode(" ",$var);
            if($format)
            {
                foreach($var as $i)
                {
                    if(preg_match('/^([a-za-z -]+): +(.*)$/',$i,$parts))
                        $v[$parts[1]]=$parts[2];
                }
                return $v;
            }
            else
                return $var;
        }
    }
}

树型结构是很多程序会员会用到的,上面这款关于树型结构操作类,很好的解决了这个问题哦。

/***************************************************************
* 树型结构操作类(如果可以写成存储过程最理想)
*
*  ***************************************************************/

class treenode {
        var $f_id = 'id';
        var $f_pid = 'pid';
        var $f_lft = 'lft';
        var $f_rgt = 'rgt';
        var $f_s = 'sequence';
        var $f_level = 'lev';
        var $f_child_num = 'child_num';
        var $table;
        var $db;
        /**
         * 构造函数
         * @param string $table 表名
         * @param object $dbhanle adodb数据库教程操作句柄
         */
        function treenode($table, $dbhandle) {
                $this->db = $dbhandle;
                $this->table = $table;
                //$this->db->debug = true;
        }
        /**
         * 增加子节点
         * @param array $data 节点数据
         * @return bool
         */
        function addchild($data){
                $pid = $data[$this->f_pid];
                $sql = "select max({$this->f_s}) from {$this->table} where {$this->f_pid}=$pid";
                $data[$this->f_s] = $this->db->getone($sql) + 1;//得到待插入节点的序号
                $sql = "select * from {$this->table} where {$this->f_id} = -1";
                $rs = $this->db->execute($sql);
                $sql = $this->db->getinsertsql($rs, $data);
                $this->db->execute($sql); //插入节点数据
                if(!$this->db->affected_rows()){
                        return false;
                }
               
                $this->buildtree(1,1);        //重建节点左右值
                $this->updatelevel(1);        //生成节点级数值
                return true;
        }
        /**
         * 修改节点的数据
         * @param int $id 节点id号
         * @param array $data 节点数据
         * @return bool
         */

导入数据到ucenter与论坛,或其它 cms用户同小只要操作ucenter的两张表就行了,uc_members,uc_memberfields哦,涉及到更新的字段也不多,所以总体来讲把它系统的数据导入到ucenter进行会员同止步是很简单的。

/*
我们要用的会员表结构

 代码如下 复制代码
create table if not exists `net_111cnnet` (
  `id` int(11) not null auto_increment,
  `username` varchar(32) default null,
  `add_time` int(11) default null,
  `email` varchar(50) default null,
  `password` varchar(50) default null,
  `last_login` int(4) default null 
  primary key  (`id`)
) engine=myisam  default charset=utf8 auto_increment=1 ;


会员表
*/

 代码如下 复制代码
$host ='localhost';
$db ='abc';
$user='root';
$password ='root';

//数据库教程连接配置,由于我的ucenter表与现在的会员表在同一个数据库所以就一次连接就行了。

 代码如下 复制代码

try { 
 $conn = mysql教程_connect($host,$user,$password);
 mysql_select_db($db,$conn);
} catch (dbexception $e) { 
 exit('database connect fail!');// 数据库出错处理处
}

$sql ="select * from net_111cnnet "; //查出要导入到ucenter所有会员数据
$query = mysql_query( $sql,$conn);
while( $rs = mysql_fetch_array( $query ))
{
 $uc_sql = "select * from uc_members where username='".$rs['username']."'";
 $data = mysql_query( $uc_sql ) ;
 if( $data )
 {
  ;
 }
 else
 {
  $salt = substr(uniqid(rand()), -6);
  $password = md5($rs['password'].$salt);//按照ucenter规则生成用户登陆密码
  
  mysql_query("insert into uc_members set uid= '".$rs['id']."', username='".$rs['username']."', password='$password', email='".$rs['email']."', lastlogintime ='".$rs['last_login']."', regdate='".$rs['add_time']."', salt='$salt'"); //把数据插入到uc_members表
  mysql_query("insert into uc_memberfields set uid='".$rs['id']."'");//更新uc_memberfields表。
 }
}
exit('所有用户己导入到ucenter');

/*
总结:
 
 本文章原创于www.111cn.net转载的朋友请尊重他人的劳动成果,注明来源。
*/

[!--infotagslink--]

相关文章

  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • js实现浏览器打印功能的示例代码

    这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • php根据用户语言跳转相应网页

    当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <&#63;php $lan = substr(&#8194;$HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08
  • js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本

    第一种,只区分浏览器,不考虑版本 复制代码 代码如下:function myBrowser(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf("Opera") > -1; if (isOp...2014-05-31
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 详解Vue Cli浏览器兼容性实践

    这篇文章主要介绍了详解Vue Cli浏览器兼容性实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-09
  • DOM XPATH获取img src值的query

    复制代码 代码如下:$nodes = @$xpath->query("//*[@id='main_pr']/img/@src");$prurl = $nodes->item(0)->nodeValue;...2013-10-04
  • jquery获取tagName再进行判断

    如果是为了取到tagName后再进行判断,那直接用下面的代码会更方便: $(element).is('input') 如果是要取到标签用作到别的地方,可以使用一下代码: $(element)[0].tagName 或: $(element).get(0).tagName...2014-05-31
  • php有效防止同一用户多次登录

    【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
  • PHP 如何获取二维数组中某个key的集合

    本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'ema...2014-06-07
  • js检测用户输入密码强度

    一个用Javascript检测用户输入密码强度的效果代码,以下代码主要是从以下四个方面检测用户输入的密码的强度的,有兴趣的朋友可以自己添加或修改成自己想要的形式! 1. 如果输入的密码位数少于5位,那么就判定为弱。 2. 如果...2015-10-23