php中$_SERVER['HTTP_USER_AGENT']判断是否为手机访问网站

 更新时间:2016年11月25日 15:48  点击:2173
HTTP_USER_AGENT是获取用户浏览器信息的一个全局变量,我们可以利用HTTP_USER_AGENT获取的值来判断用户是手机浏览器还是电脑访问网。
 代码如下 复制代码

$uAgent = $_SERVER['HTTP_USER_AGENT'];

$osPat = "mozilla|m3gate|winwap|openwave|Windows NT|Windows 3.1|95|Blackcomb|98|ME|X Window|ubuntu|Longhorn|AIX|Linux|AmigaOS|BEOS|HP-UX|OpenBSD|FreeBSD|NetBSD|OS/2|OSF1|SUN";

if(preg_match("/($osPat)/i", $uAgent )) //winwap 模拟WAP手机上网的一个浏览器; openwave|后面为各pc操作系统

{

echo "电脑访问";

}

else

{

echo "手机访问";

}

echo '<br/>'.$uAgent;

现在我们事完整的把实例写成一个文件

 代码如下 复制代码


$ua = strtolower($_SERVER['HTTP_USER_AGENT']);

$uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|mobile|wap)/i";

if(($ua == '' || preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap'))
{
    $Loaction = 'wap/';

    if (!empty($Loaction))
    {
        ecs_header("Location: $Loactionn");

        exit;
    }

}


/** 
* 自定义 header 函数,用于过滤可能出现的安全隐患 

* @param   string  string  内容 

* @return  void 
**/ 
function ecs_header($string, $replace = true, $http_response_code = 0)  
{  
    if (strpos($string, '../upgrade/index.php') === 0)  
    {  
        echo '<script type="text/javascript">window.location.href="' . $string . '";</script>';  
    }  
    $string = str_replace(array("r", "n"), array('', ''), $string);  
 
    if (preg_match('/^s*location:/is', $string))  
    {  
        @header($string . "n", $replace);  
 
        exit();  
    }  
 
    if (emptyempty($http_response_code) || PHP_VERSION < '4.3')  
    {  
        @header($string, $replace);  
    }  
    else 
    {  
        @header($string, $replace, $http_response_code);  
    }  

javascript中采用navigator.userAgent 来获取,但非智能机似乎不支持js。

支持js的移动客户端还可以用以下代码简单判断是不是windows电脑访问的

 代码如下 复制代码

if(navigator.platform.indexOf('Win32')!=-1){
//go to pc
}else{
// go to 手机
}

更多关于判断手机访问文章 http://www.111cn.net/phper/php-cy/44574.htm

在php中rmdir是不能直接删除非空目录的,如果想利用rmdir来删除非空目录我们需要遍历目录然后来删除目录中的文件再删除目录的文件夹即可实现,

rmdir() 函数删除空的目录。

 代码如下 复制代码

<?php
$path = "images";
if(!rmdir($path))
  {
  echo ("Could not remove $path");
  }
else
{
 echo '删除目录失败,因为images非空目录';
}
?>

如果images是空目录可成功删除,如果非空目录就删除不了


代码如下

 代码如下 复制代码

<?php
// 说明: 删除非空目录的解决方案

function removeDir($dirName)
{
    if(! is_dir($dirName))
    {
        return false;
    }
    $handle = @opendir($dirName);
    while(($file = @readdir($handle)) !== false)
    {
        if($file != '.' && $file != '..')
        {
            $dir = $dirName . '/' . $file;
            is_dir($dir) ? removeDir($dir) : @unlink($dir);
        }
    }
    closedir($handle);
     
    return rmdir($dirName) ;
}
?>

在php中可以直接调用linux中的文件压缩命令来实现文件快速压缩与解压缩,有需要的朋友可参考参考。

用PHP调用Linux的命令行 ,执行压缩命令,OK,马上行动!


/*拆分成3个txt文件 分别是wow_1.txt wow_2.txt 和 wow_3.txt  全部放到 Exl_file 目录下*/

 代码如下 复制代码

$outputs=array();

/*用php的exec执行Linux命令   括号里的字符串就是你在Linux命令窗口里敲的命令;
   第二个参数是  linux执行该命令后返回的结果数组;
   linux执行返回的每一条结果依次存入该数组
  
   第三个参数是结果,如果执行成功,则Linux返回结果值为0,如果执行失败,则结果值不为0
  
*/
  

 代码如下 复制代码

exec("zip ./Exl_file/wow.zip ./Exl_file/wow_1.txt ./Exl_file/wow_2.txt ./Exl_file/wow_3.txt",$outputs,$rc);


if($rc!=0){
    foreach ($outputs as $ko=>$vo){
        echo "$vo<br/>";
    }
}else{
    $zipfile='./Exl_file/wow.zip';
       
    //文件下载  输出后删除相关文件
    }
}

你可以把  if($rc!=0)  改成  if(1==1)  查看Linux执行命令返回的结果行,如下图:

 代码如下 复制代码
adding: Exl_file/wow_1.txt (deflated 96%)
adding: Exl_file/wow_2.txt (deflated 97%)
adding: Exl_file/wow_3.txt (deflated 97%) 

   可以看到执行返回的信息全部输入到了 $outputs 数组中,*.zip文件生成成功

php提供了system(),exec(),passthru()这几个函数来调用外部的命令.

他们的区别 :

system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:都可以获得命令执行的状态码

一个php调用zip实现方法,这个在windows中的

 #upload.php
   

 代码如下 复制代码

    <table border='0' >
   
    <form ENCTYPE="multipart/form-data" action="upsave.php" method="post">
   
    <tr>
   
    <td>如果是*.ZIP的文件会被自动解压缩<br>
   
    <INPUT NAME="MyFile" TYPE="File" size="50">
   
    </td>
   
    </tr>
   
    <tr>
   
    <td colspan='2' align="center">
   
    <input type="Submit" value=" 上传 " class=iwhite>
   
    <input type="reset" value=" 重填 " class=iwhite>
   
    </td>
   
    </tr>
   
    </table>
   
    </body>
   
    </html>
   
    <?
   
    //upsave.php
   
    //保存上传的文件
   
    $filename="$MyFile_name";
   
    copy($MyFile,"$filename");
   
    unlink($MyFile);
   
    //判断是否是ZIP文件
   
    $expand_name=explode(".",$filename);
   
    if($expand_name[1] == "zip" or $expand_name[1] == "ZIP")
   
    {
   
    $str="pkunzip.exe -e $filename ";
   
    exec($str);
   
    unlink($filename);
   
    }
   
    ?>
bool get_magic_quotes_gpc ( void )返回当前 magic_quotes_gpc 配置选项的设置 记住,尝试在运行时设置 magic_quotes_gpc 将不会生效。

默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

例子

1. addslashes() 示例

 代码如下 复制代码

<?
$str = "Is your name O&#39;reilly?";

// 输出:Is your name O''&#39;reilly?
echo addslashes($str);
?>

返回值

关闭 magic_quotes_gpc 时返回 0,否则是 1。 在 PHP 5.4.O 起将使用返回 FALSE

 代码如下 复制代码

<?php
// 如果启用了魔术引号
echo $_POST['lastname'];             // O'reilly
echo addslashes($_POST['lastname']); // O\'reilly

// 适用各个 PHP 版本的用法
if (get_magic_quotes_gpc()) {
    $lastname = stripslashes($_POST['lastname']);
}
else {
    $lastname = $_POST['lastname'];
}

// 如果使用 MySQL
$lastname = mysql_real_escape_string($lastname);

echo $lastname; // O'reilly
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
?>


php.ini:get_magic_quotes_gpc

在php的配置文件中,有个布尔值的设置,就是magic_quotes_runtime,当它打开时,

php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反

斜线。 当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时

就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini

文件中magic_quotes_runtime状态。 为了使自己的程序不管服务器是什么设置都能正常

执行。可以在程序开始用get_magic_quotes_runtime检测该设置的状态决定是否要手工处理

,或者在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉该设置。

magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的'"\加上反斜

线。可以用get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用

addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反

斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。

一个PHP二维数组按照一个字段排序程序实现代码,有需要的朋友可参考参考。

二维数组

 代码如下 复制代码
$arr = array ( 
    array ( 'key' => '69931', 
         'hsex' => '女', 
         'username' => 'jiayang3401', 
         'clicks' => 10, 
         'hyinglou' => '无' ),      
    array ( 'key' => '81', 
         'hsex' => '女', 
        'username' => 'susan', 
         'clicks' => 15, 
     'hyinglou' => '摄影名店' ),      
);   

 


 代码如下 复制代码

foreach($arr as $vo){ 
    $t[] = $vo['clicks']; 

array_multisort($t, $arr);//排序 
var_dump($arr); 

[!--infotagslink--]

相关文章

  • 安卓手机app添加支付宝支付开发教程

    支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
  • PHP+Ajax手机发红包的程序例子

    PHP+Ajax有许多的功能都会用到它小编今天就有使用PHP+Ajax实现的一个微信登录功能了,下面我们来看一个PHP+Ajax手机发红包的程序例子,具体如下所示。 PHP发红包基本...2016-11-25
  • 华为手机怎么恢复已卸载的应用?华为手机恢复应用教程

    华为手机怎么恢复已卸载的应用?有时候我们在使用华为手机的时候,想知道卸载的应用怎么恢复,这篇文章主要介绍了华为手机恢复应用教程,需要的朋友可以参考下...2020-06-29
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • 破解安卓手机上的九宫格锁方法步骤

    很多用安卓智能手机的朋友是用九宫格锁屏,网上也有暴力删除手机图形锁的方法,不过我们可以用程序来破解。本文只提供技术学习,不能干坏事 安卓手机的图形锁(九宫格)...2016-09-20
  • 华为手机怎么开启双时钟? 华为添加双时钟的技巧

    华为手机怎么开启双时钟?华为手机是可以设置双时钟的,如果来回在两个有时差的地方工作,是可以设置双时钟显示,下面我们就来看看华为添加双时钟的技巧,需要的朋友可以参考下...2020-12-08
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • mac下Apache + MySql + PHP搭建网站开发环境

    首先为什不自己分别搭建Apache,PHP和MySql的环境呢?这样自己可以了解更多知识,说起来也更酷。可也许因为我懒吧,我是那种“既然有现成的,用就是了”的人。君子生非异也,善假于物也。两千年前的荀子就教导我们,要善于利用工具...2014-06-07
  • php实现网站留言板功能

    我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的畅言留言板样式:网易跟帖样式:原理 需要在评论表添加两个主要字段 id 和 pid ,其他字段随意添加,比如文章id、回复时间、回复内容、...2015-11-08
  • 网站广告怎么投放最好?首屏广告投放类型优化和广告位布局优化的案例

    网站广告怎么投放最好?一个网站中广告位置最好的是哪几个地方呢,许多的朋友都不知道如何让自己的网站广告收效最好了,今天我们就一起来看看吧。 在说到联盟优化前,...2016-10-10
  • oppo手机怎么设置充电提示音 oppo手机充电提示音设置方法

    oppo手机充电提示音怎么关闭?用户要学会充电提示音的设置方法,这样才能熟练的操作更换提示音或者是关掉提示音,关于OPPO手机充电提示音的设置下面会有具体的介绍,各位用户一起来看看详细的操作方法吧...2020-12-08
  • 华为手机蓝牙可以连接几个设备?华为设置蓝牙音频连接个数的技巧

    华为手机蓝牙可以连接几个设备? 华为手机使用蓝牙的时候,想要知道能连接几个设备,这都是可以设置呢?下面我们就来看看华为设置蓝牙音频连接个数的技巧,需要的朋友可以参考下...2020-12-08
  • 小米手机负一屏该怎么设置? 如何使用小米手机负一屏

    小米手机负一屏该怎么设置?小米手机最近推出了负一屏的功能,集成了很多信息,可以放一些需要知道的信息,下面我们就来看看详细的教程,需要的朋友可以参考下。 最新的开...2016-12-15
  • 钉钉怎么双开登录两个账号? 小米手机双开钉钉的技巧

    钉钉怎么双开登录两个账号?钉钉中想要双开登录两个账号,该怎么登录呢?下面我们就来看看小米手机双开钉钉的技巧,需要的朋友可以参考下...2020-06-29
  • 保千里打令VR手机怎么样?什么时候发布?

    保千里打令VR手机怎么样?什么时候发布?全球首款VR手机保千里打令VR手机将于10月24日在深圳大梅沙国际水上运动中心隆重发布,对保千里打令VR手机不太了解朋友可以看看...2016-11-01
  • 手机配置那么高为什么玩王者荣耀还会卡?

    明明我的手机配置那么高(都八核了)为什么玩游戏还会卡?对安卓手机来说玩游戏卡顿的原因一般有两种;性能不足导致的卡顿以及CPU发热降频导致的卡顿,详情我们来看看吧...2017-07-06
  • js判断手机访问或者PC的几个例子(常用于手机跳转)

    js判断手机或者PC的例子我们在几乎所有网站都会有这段代码了,现在手机流量与pc差不多了,下面来看两段js判断手机或者PC例子吧...2015-12-17
  • MIUI儿童模式如何开启 小米手机儿童模式开启教程

    您是否遇到过孩子想要玩手机又不好拒绝,或者是您想要给孩子配一个联系用的手机有担心孩子玩手机上瘾?如果您购买的是小米手机,那么MIUI的儿童模式就能很好地解决这个问题...2016-12-21
  • 个人站长做网站应该考虑的一些问题

    个人网站建设应该考虑哪些问题呢?这个问题我们先在这里不说,下文会一一列出来,希望这些建义能帮助到各位同学哦。 我相信VIP成员里面有很多站长,每个人几乎都拥有一个...2016-10-10
  • 安卓4.1系统手机怎么设置用wifi上网

    wifi上网 几乎是不需要什么设置了,我们只要简单的输入wifi密码与用户名就可以自动连接wifi上网了,下面我以安卓4.1系统为实例 具体步骤 1.在安卓手机中点击“...2016-09-20