php 获取客户浏览器与操作系统类型

 更新时间:2016年11月25日 15:52  点击:1306

<?
function browse_infor()
{
$browser="";$browserver="";

//

$browsers =array("lynx","mosaic","aol","opera","java","macweb","webexplorer","omniweb");
$agent = $globals["http_user_agent"];
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];

//php一聚教程

$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))

//php一聚教程

{
$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 = "unknown";
}
return $browseinfo;
}
//调用方法$browser=browseinfo() ;直接返回结果
?>

====


获取访问者操作系统
<?
function osinfo() {
$os="";
$agent = $globals["http_user_agent"];
if (eregi('win',$agent) && strpos($agent, '95')) { //
$os="windows 95";
}
elseif (eregi('win 9x',$agent) && strpos($agent, '4.90')) {
$os="windows me";
}
elseif (eregi('win',$agent) && ereg('98',$agent)) {

//开源

$os="windows 98";
}
elseif (eregi('win',$agent) && eregi('nt 5.0',$agent)) {
$os="windows 2000";
}
elseif (eregi('win',$agent) && eregi('nt',$agent)) {

//开源

$os="windows nt";
}
elseif (eregi('win',$agent) && eregi('nt 5.1',$agent)) {
$os="windows xp";
}
elseif (eregi('win',$agent) && ereg('32',$agent)) {

//开源

$os="windows 32";
}
elseif (eregi('linux',$agent)) {
$os="linux";
}
elseif (eregi('unix',$agent)) {
$os="unix"; //php一聚教程
}
elseif (eregi('sun',$agent) && eregi('os',$agent)) {
$os="sunos";
}
elseif (eregi('ibm',$agent) && eregi('os',$agent)) { //
$os="ibm os/2";
}
elseif (eregi('mac',$agent) && eregi('pc',$agent)) {
$os="macintosh";
}
elseif (eregi('powerpc',$agent)) { //
$os="powerpc";
}
elseif (eregi('aix',$agent)) {
$os="aix";
}
elseif (eregi('hpux',$agent)) {
$os="hpux";

//一聚教程

}
elseif (eregi('netbsd',$agent)) {
$os="netbsd";
}
elseif (eregi('bsd',$agent)) {
$os="bsd";
}
elseif (ereg('osf1',$agent)) {

//一聚教程

$os="osf1";
}
elseif (ereg('irix',$agent)) {
$os="irix";
}
elseif (eregi('freebsd',$agent)) {
$os="freebsd";

//

}
if ($os=='') $os = "unknown";
return $os;
}
//调用方法$os=os_infor() ;
?>

标记行:用<form>表示.这个标记行必须包含action属性和method属性,action属性是给窗体提供另一个程序的url或路径(可以是当前文件),使该程序可以从窗体中提取并带走数据.method属性(get或post)则告诉窗体如何带走数据(post首选,因为它比较安全,因为它不在url中传送信息).
窗体的内容,包括输入字段:输入字段是用户输入信息的区域,就是<input>表单,<textarea>这些东西.输入的字段必须包含type和name属性,不过其他的属性也可以有,但不是必须的.输入字段的类型最常见的有:text,check box,radio,select,password等.
动作按钮或图像,一般用于提交/清理信息.用户定义的按钮在技术上也认为是输入类型:包括:submit,reset,image(经常作为图片按钮).
闭标记行:</form>


应用

第一种:通过url传送变量

例如:http://www.xxx.com/news/list.php教程?id=123&lang=en

id=123就是新闻的参数,而lang=en就表示语言是英文,那么我们可以通过php的$_get来取得id和lang的值

比如说要检索id的值 只需要$_get['id'] 就能取到id的值 同理 lang也一样

通过url传值的缺点:

1.每个人都能看到变量的值,所以用这种方式传输敏感数据并不是安全的.

2.用户可以随意修改url中的值,并可以尝试不同的组合,使打开网站后显示出我们不希望显示出来的信息.

3.用户还可能使用保存已久的url和内嵌其中的旧变量提取不正确的或陈旧信息.

第二种:通过会话中传送变量

如果说信息不那么敏感,或者信息是静态的,完全可以使用url传值,但如果用户要传送用户名,密码等信息或者传送地址和电话号码等个人信息,那最好要在传送的时候保持私密性.例如可以使用cookie 或者session.(个人想法,因为是重头重新学习~先说说session).

会话是仅存在浏览器关闭前的一组临时变量.会话信息包括会话id,被授权的个人是否登陆到站点上等.这些信息都是为php临时存储的以便在需要时使用.

如果强制用户使用cookie传送变量, 可以在php.ini里边设置   session.use_only_cookies=1

另外,在使用会话前应确保php.ini文件已经做好修改,即为:session.save_path显示有效路径.

接着只需要调用session_start()函数(写在本页的所有的输出语句前),在php中开始一个会话.

例如:文件1   test_1.php 
<?php
session_start();
$_session['username']='van';
$_session['authuser']=1;
?>
<html>
<head>
<title>test1</title>
</head>
<body>
<?php
$myfavmovie=urlencode('life of brian');
echo "<a href="test2.php?favmovie=$myfavmovie">";
echo "click here to see information about my favorite movie!";
echo "</a>";
?></body>
</html>

test2.php


<?php
session_start();
if($_session['authuser']!=1)
{
    echo "sorry,but you don't have permission to view this page!";
    exit();
}
?>
<html>
<head>
<title>
my movie site -<?php echo $_get['favmovie'];?></title>
<body>
<?php
echo 'welcome to our site,';
echo $_session['username'];
echo '!<br/>';
?>
</html>

第三种:用cookie传送变量

使用cookie存在潜在的安全风险,黑客可以通过cookie来获取你在这个web上所留下来的信息,加以利用,所以最好不要把私人信息存储在计算机上

由于访客可能选择关闭cookie功能,或者选择删除计算机中的cookie,所以从开发的角度来看,使用cookie信息并不是最佳的方法

置并发送 cookie:

<?php
$value = "my cookie value";

// 发送一个简单的 cookie
setcookie("testcookie",$value);
?>

<html>
<body>

...
...<?php
$value = "my cookie value";

// 发送一个 24 小时候过期的 cookie
setcookie("testcookie",$value, time()+3600*24);
?>

<html>
<body>

...
...

取得客户端ip地址
<?

//开源代码

function getip(){
             if (getenv("http_client_ip") && strcasecmp(getenv("http_client_ip"), "unknown"))
$ip = getenv("http_client_ip"); //开源
             else if (getenv("http_x_forwarded_for") && strcasecmp(getenv("http_x_forwarded_for"), "unknown"))
$ip = getenv("http_x_forwarded_for"); //
             else if (getenv("remote_addr") && strcasecmp(getenv("remote_addr"), "unknown"))
$ip = getenv("remote_addr");
             else if (isset($_server[@#remote_addr@#]) && $_server[@#remote_addr@#] && strcasecmp($_server[@#remote_addr@#], "unknown"))

//

$ip = $_server[@#remote_addr@#];
else
$ip = "unknown";
             return($ip);
}
?>

判断邮箱地址
<?
function checkemail($inaddress)
{
return (ereg("^([a-za-z0-9_-])+@([a-za-z0-9_-])+(.[a-za-z0-9_-])+",$inaddress));
}
?>

<?
function getip() { //获取ip
if ($_server["http_x_forwarded_for"])
$ip = $_server["http_x_forwarded_for"]; //
    else if ($_server["http_client_ip"])
$ip = $_server["http_client_ip"];
    else if ($_server["remote_addr"])
$ip = $_server["remote_addr"]; //
    else if (getenv("http_x_forwarded_for"))
$ip = getenv("http_x_forwarded_for");
    else if (getenv("http_client_ip"))
$ip = getenv("http_client_ip"); //
    else if (getenv("remote_addr"))
$ip = getenv("remote_addr");
    else
$ip = "unknown";
    return $ip;
}
?>

这里的日期操作函数有时间的增加,计算出给出的日期是星期几 ,检查日期是否合法日期  时间比较函数,返回两个日期相差几秒、几分钟、几小时或几天

<?php
function dateadd($date, $int, $unit = "d") {

//时间的增加(还可以改进成时分秒都可以增加,有时间再补上)
$datearr = explode("-", $date);
$value[$unit] = $int;

//

    return date("y-m-d", mktime(0,0,0, $datearr[1] + $value['m'], $datearr[2] + $value['d'], $datearr[0] + $value['y']));

//一聚教程网

}

function getweekday($date) {  //计算出给出的日期是星期几
$datearr = explode("-", $date);
    return date("w", mktime(0,0,0,$datearr[1],$datearr[2],$datearr[0]));

//

}
?>


<?
function check_date($date) { //检查日期是否合法日期
$datearr = explode("-", $date);
    if (is_numeric($datearr[0]) && is_numeric($datearr[1]) && is_numeric($datearr[2])) { //一聚教程网
        return checkdate($datearr[1],$datearr[2],$datearr[0]);
    }
    return false;
}
function check_time($time) {  //检查时间是否合法时间

//一聚教程网

$timearr = explode(":", $time);
    if (is_numeric($timearr[0]) && is_numeric($timearr[1]) && is_numeric($timearr[2])) {

//

        if (($timearr[0] >= 0 && $timearr[0] <= 23) && ($timearr[1] >= 0 && $timearr[1] <= 59) && ($timearr[2] >= 0 && $timearr[2] <= 59))

//php

            return true;
        else
            return false;
    }
    return false;
}


function datediff($date1, $date2, $unit = "") {

//时间比较函数,返回两个日期相差几秒、几分钟、几小时或几天
//
switch ($unit) {
        case 's':
$dividend = 1;
            break;
        case 'i':
$dividend = 60;

            break;
        case 'h':
$dividend = 3600;
            break;
        case 'd':
$dividend = 86400;
            break; //
        default:
$dividend = 86400;
    }
$time1 = strtotime($date1);
$time2 = strtotime($date2);
    if ($time1 && $time2) //
        return (float)($time1 - $time2) / $dividend;
    return false;
}
?>

//html表格的每行转为csv格式数组

<?
function get_tr_array($table) {

//php教程开源代码

$table = preg_replace("'<td[^>]*?>'si",'"',$table);
$table = str_replace("</td>",'",',$table);
$table = str_replace("</tr>","{tr}",$table); //开源代码osphp.com.cn
//去掉 html 标记 
$table = preg_replace("'<[/!]*?[^<>]*?>'si","",$table);
//去掉空白字符  
$table = preg_replace("'([rn])[s]+'","",$table);


$table = str_replace(" ","",$table);
$table = str_replace(" ","",$table);
$table = explode(",{tr}",$table);

array_pop($table);
        return $table;
}
?>

//将html表格的每行每列转为数组,采集表格数据

<?
function get_td_array($table) {
$table = preg_replace("'<table[^>]*?>'si","",$table);

//osphp.com.cn

$table = preg_replace("'<tr[^>]*?>'si","",$table);
$table = preg_replace("'<td[^>]*?>'si","",$table);
$table = str_replace("</tr>","{tr}",$table); //开源代码osphp.com.cn
$table = str_replace("</td>","{td}",$table);
//去掉 html 标记 
$table = preg_replace("'<[/!]*?[^<>]*?>'si","",$table); //osphp.com.cn开源
//去掉空白字符  
$table = preg_replace("'([rn])[s]+'","",$table);
$table = str_replace(" ","",$table);

 

$table = str_replace(" ","",$table);
$table = explode('{tr}', $table);
array_pop($table); //php开源代码
        foreach ($table as $key=>$tr) {
$td = explode('{td}', $tr);
array_pop($td);
$td_array[] = $td; //        }
        return $td_array;
}
?>

[!--infotagslink--]

相关文章

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

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

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • 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
  • 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
  • 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
  • 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
  • jquery获取tagName再进行判断

    如果是为了取到tagName后再进行判断,那直接用下面的代码会更方便: $(element).is('input') 如果是要取到标签用作到别的地方,可以使用一下代码: $(element)[0].tagName 或: $(element).get(0).tagName...2014-05-31
  • DOM XPATH获取img src值的query

    复制代码 代码如下:$nodes = @$xpath->query("//*[@id='main_pr']/img/@src");$prurl = $nodes->item(0)->nodeValue;...2013-10-04
  • 详解Vue Cli浏览器兼容性实践

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

    本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'ema...2014-06-07
  • php获取汉字拼音首字母的方法

    现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序。这是中国人大多数使用的排序方法。那么在php程序中该如何操作呢?下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的大多数是有问题的...2015-10-23
  • 使用C#获取系统特殊文件夹路径的解决方法

    本篇文章是对使用C#获取系统特殊文件夹路径的解决方法进行了详细的分析介绍,需要的朋友参考下...2020-06-25
  • 如何使用 JavaScript 操作浏览器历史记录 API

    这篇文章主要介绍了如何使用 JavaScript 操作浏览器历史记录 API,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下...2020-11-24
  • vue如何调用浏览器分享功能详解

    这篇文章主要给大家介绍了关于vue如何调用浏览器分享的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-20