.htaccess与php判断手机/电脑访问手机页面

 更新时间:2016年11月25日 15:46  点击:1455
本文章给大家介绍两种方法来识别访问你网站是手机用户不是PC用户,然后我们根据用户类型跳到相对应的页面去,下面先使用htaccess然后学有php的写法。

首页页面为网站更目录m下,后门参数和pc页面参数一样的话就可以这样,否则可能需要修改一下。
手机访问电脑页面时跳转:

 代码如下 复制代码
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /m
RewriteCond %{HTTP_USER_AGENT} “android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos” [NC]
RewriteRule ^(.*)$ /m/$1 [L,R=302] [L,R=302]
</IfModule>

?
电脑访问手机时跳转:

 代码如下 复制代码

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule ^(.*)$ /$1 [L,R=302]

</IfModule>

最后得说一下,因为RewriteRule ^(.*)$ /m/$1 [L,R=302] [L,R=302]的加入,如果手机页面中要访问非手机页面中的资源时,得用正则排除指定文件,如: RewriteRule ^(.*?(?<!jpg)$) /m/$1 [L,R=302],就不会造成手机访问非手机页面中jpg图片时出现无法访问的问题了。


如果你不能使用.htaccess文件我们可直接在php中加入下面代码

 代码如下 复制代码


//判断是否属手机
function is_mobile() {
 $user_agent = $_SERVER['HTTP_USER_AGENT'];
 $mobile_agents = Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte");
 $is_mobile = false;
 foreach ($mobile_agents as $device) {
  if (stristr($user_agent, $device)) {
   $is_mobile = true;
   break;
  }
 }
 return $is_mobile;
}

第二步:if 语句

 代码如下 复制代码
if( is_mobile() ){
 就跳到手机页面哦
}
else
{
中到PC页面
}
在php中文件上传我们使会用到$_FILES数组与move_uploaded_file函数,他们可实现文件上传,基于他们两我们就可实例多文件上传了,下面我一一给各位介绍一下。

先来看看$_FILES数组内容如下:

$_FILES['myFile']['name'] 客户端文件的原名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但用 putenv() 函数设置是不起作用的。
$_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。

下面是它的说明:(它们在PHP3.0以后成了常量)

UPLOAD_ERR_OK 值:0; 没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE 值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL 值:3; 文件只有部分被上传。
UPLOAD_ERR_NO_FILE 值:4; 没有文件被上传。 值:5; 上传文件大小为0.

注:
1. 文件被上传结束后,默认地被存储在了临时目录中,这时必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。所以在删除之前要用PHP的 copy() 函数将它复制到其它位置,此时,才算完成了上传文件过程。

2. 在 PHP 4.1.0 版本以前该数组的名称为 $HTTP_POST_FILES,它并不像 $_FILES 一样是自动全局变量。PHP 3 不支持 $HTTP_POST_FILES 数组。

3. 用form上传文件时,一定要加上属性内容 enctype="multipart/form-data",否则用$_FILES[filename]获取文件信息时会报异常。

 代码如下 复制代码

<form enctype="multipart/form-data" action="URL" method="post">
<input name="myFile" type="file">
<input type="submit" value="上传文件">
</form>

php代码

 

 代码如下 复制代码
 function uploadfile($file) {
        $destinationpath = "./upload/";
        if (!file_exists($destinationpath)){
            mkdir($destinationpath , 0777);     }
        //重命名
        $filename = date('ymdhis') . '_' . iconv('utf-8' , 'gb2312' , basename($file['name']));
        if (move_uploaded_file($file['tmp_name'], $destinationpath . $filename)) {         return iconv('gb2312' , 'utf-8' , $filename);
        }     return '';
}

多文件上传的原理也差不多,下面看个实例

 

 代码如下 复制代码

<form action="fileclass.php" enctype="multipart/form-data" method="post" id="userfile">
<table width="350" border="0" cellpadding="0" cellspacing="5">
  <tr>
    <td><input name="userfile[]" type="file" size="30" /></td>
  </tr>
  <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
  <tr>
    <td><input name="userfile[]" type="file" size="30" /></td>
  </tr>
  <tr>
    <td><input name="userfile[]" type="file" size="30" /></td>
  </tr>
  <tr>
    <td><input name="userfile[]" type="file" size="30" /></td>
  </tr>
  <tr>
    <td><input name="userfile[]" type="file" size="30" /></td>
  </tr>
   <tr>
    <td><input name="submitfile" type="submit" value="确认上传文件"/>&nbsp;<input name="resetfile" type="reset" value="取消上传文件"/></td>
  </tr>
</table>

</form>

fileclass.php文件代码如下:

 

 代码如下 复制代码

<?php
class more_file_upload{
 const FILE_PATH='../filehandle/uploadfile/';
 var $file_type;
 var $file_type_array;
 var $file_type_string;
 var $file_name;
 var $file_size;
 var $file_tmp_name;
 var $file_error;
 var $handledate;
 static $totalsize=0;

 function __construct($file_name,$file_error,$file_size,$file_tmp_name,$file_type){   
  $this->handledate=date('m-d-Y');
  if (!empty($file_name)){
   $this->file_name=$file_name;
   $this->file_error=$file_error;
   $this->file_size=$file_size;
   $this->file_tmp_name=$file_tmp_name;
   $this->file_type=$file_type;
   $this->file_type_array=array('text/plain','image/gif','image/jpg','text/html','image/pjpeg','image/png','application/msword','application/pdf');
  
   $this->show_execute_message($this->file_error,$this->file_name,$this->file_type,$this->file_size);
  }
 }
 
 function __destruct(){
  $this->file_name = NULL;
  $this->file_error = NULL;
  $this->file_size = NULL;
  $this->file_tmp_name = NULL;
  $this->file_type = NULL;
  self::$totalsize = 0;
 }
 
 function show_execute_message($smfileerror,$smfilename,$smfiletype,$smfilesize){
  if($smfileerror>0){
   switch ($smfileerror){
    case 1: $smfilemessage='<strong>文件超过服务器的约定大小!</strong>';break;
    case 2: $smfilemessage='<strong>文件超过指定的文件大小!</strong>';break;
    case 3: $smfilemessage='<strong>文件只上传了部分!</strong>';break;
    case 4: echo "$this->file_name ".'文件上传失败!<br/>';break;
   }
   self::__destruct();      
  }else{
   $smfiletypeflag=array_search($smfiletype,$this->file_type_array);
   if($smfiletypeflag == false){
    $smfilemessage='<strong>文件类型不对,请核实!</strong>';
   self::__destruct(); 
   }else{
    $resflag=$this->move_file($this->file_tmp_name,$this->file_name);
    if ($resflag == 1){
     $smfilemessage='文件上传成功!';
     self::$totalsize+=intval($smfilesize);
     self::__destruct();
    }else{
     $smfilemessage='<strong>文件上传失败!</strong>';
     self::__destruct();
    }
   }
  }
   $smfilesize=$smfilesize/1024;
   $smfilesizeformat=sprintf('%01d',$smfilesize);
   echo '<tr>
    <td align="left" >'.$smfilename.'</td>
               <td align="center" >'.$smfiletype.'</td>
               <td align="center" >'.$smfilesizeformat.'</td>
               <td align="center" >'.$smfilemessage.'</td>
    </tr>';   
 }
 
 function move_file($mvfiletmp,$mvfilename){          //移动文件
  $mvfilenamearr=explode('.',basename($mvfilename));
  $mvtime=mktime();
  $mvfilenamearr[0]=$this->rand_string(10)."$mvtime";
  $mvfilename=implode('.',$mvfilenamearr);

  if (is_uploaded_file($mvfiletmp)){
   $uploadfile=self::FILE_PATH."$mvfilename";
   $result=move_uploaded_file($mvfiletmp,$uploadfile);
   return $result;
  } 
 }

 function rand_string($len, $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'){ //指定范围内随机提取字符
     $string = '';
     for ($i = 0; $i < $len; $i++){
         $pos = rand(0, strlen($chars)-1);
         $string .= $chars{$pos};
     }
     return $string;
 }
}
echo '<table width="90%" border="1" cellpadding="0" align="center" cellspacing="2">';
  echo '<tr>
        <td align="center" >文件名</td>
              <td align="center" >文件类型</td>
              <td align="center" >文件大小(KB)</td>
              <td align="center" >执行结果</td>
             </tr>';
for ($i=0;$i<count($_FILES['userfile']);$i++){
 $filename[$i]=$_FILES['userfile']['name'][$i];
 $fileerror[$i]=$_FILES['userfile']['error'][$i];
 $filesize[$i]=$_FILES['userfile']['size'][$i];
 $filetmpname[$i]=$_FILES['userfile']['tmp_name'][$i];
 $filetype[$i]=$_FILES['userfile']['type'][$i];
 
 $filetemp=new more_file_upload("$filename[$i]","$fileerror[$i]","$filesize[$i]","$filetmpname[$i]","$filetype[$i]");
}
echo '</table>';
echo '<a href="upfile.html">继续上传</a> <a href="index.php">返回首页</a>';
?>

本文章给大家介绍PHP中多字节字符的preg_match_all实例,大家可参考。
 代码如下 复制代码

function mb_ereg_match_all($pattern, $subject, array &$subpatterns)
{
if(!mb_ereg_search_init($subject, $pattern)) // 初期化?I理
return false;
$subpatterns = array();
while($r = mb_ereg_search_regs()) { // 初期化?I理で?定したパタ?ンと文字列から?仕?br /> $subpatterns[] = $r;
}
return true;
}

$pattern = ‘[^s ]+’;
$subject = ‘你好, 吃了么。 我吃 的包子加油条。’;
mb_ereg_match_all($pattern, $subject, $result);
print_r($result);

本文章来给各位同学介绍关于PHP Session和Javascript实现文件上传进度条实现代码,有需要了解的同学可参考。

在PHP 5.4以前,实现这样的进度条并不容易,主要有三种方法:

1.使用Flash, Java, ActiveX
2.使用PHP的APC扩展
3.使用HTML5的File API
第一种方法依赖第三方的浏览器插件,通用性不足,且易带来安全隐患。不过由于Flash的使用比较广泛,因此还是有很多网站使用Flash作为解决方案。

第二种方法的不足在于,它需要安装PHP的APC扩展库,要求用户能够控制服务器端的配置。另外,如果安装APC仅仅是为了实现一个上传进度条,那么显然有点杀鸡用牛刀的意思。

第三种方法应该是最为理想的方法,不需要服务器端的支持,仅在浏览器端使用Javascript即可。但是由于HTML5标准尚未确立,各浏览器厂商的支持也不相同,所以暂时这种方法还难以普及。

PHP 5.4中引入的基于session的上传进度监视功能(session.upload_progress),它提供了一个服务器端的上传进度监视解决方案。升级到PHP 5.4之后,可以不必安装APC扩展,仅使用原生PHP和前端的Javascript即可实现上传进度条。

下面我们就详细介绍一下 PHP 5.4 的这个 session.upload_progress 新特性。

原理介绍
当浏览器向服务器端上传一个文件时,PHP将会把此次文件上传的详细信息(如上传时间、上传进度等)存储在session当中。然后,随着上传的进行,周期性的更新session中的信息。这样,浏览器端就可以使用Ajax周期性的请求一个服务器端脚本,由该脚本返回session中的进度信息;浏览器端的Javascript即可根据这些信息显示/更新进度条了。

那么,文件上传信息具体是如何存储的?我们要如何访问它呢?下面我们来详细说明。

PHP 5.4 中引入了一些配置项(在php.ini中进行设置)

 代码如下 复制代码

session.upload_progress.enabled = "1"
session.upload_progress.cleanup = "1"
session.upload_progress.prefix = "upload_progress_"
session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
session.upload_progress.freq = "1%"
session.upload_progress.min_freq = "1"

其中enabled控制upload_progress功能的开启与否,默认开启;cleanup 则设置当文件上传的请求提交完成后,是否清除session的相关信息,默认开启。

prefix 和 name 两项用来设置进度信息在session中存储的变量名/键名。关于这两项的详细使用见下文。

freq 和 min_freq 两项用来设置服务器端对进度信息的更新频率。合理的设置这两项可以减轻服务器的负担。

在上传文件的表单中,需要为该次上传设置一个标识符,并在接下来的过程中使用该标识符来引用进度信息。具体的,在上传表单中需要有一个隐藏的input,它的name属性为php.ini中 session.upload_progress.name 的值;它的值为一个由你自己定义的标识符。如下:

 代码如下 复制代码
<input type="hidden"
    name="<?php echo ini_get('session.upload_progress.name'); ?>"
    value="test" />

接到文件上传的表单后,PHP会在$_SESSION变量中新建键,键名是一个将session.upload_progress.prefix的值与上面你自定义的标识符连接后得到的字符串,可以这样得到:

 代码如下 复制代码

$name = ini_get('session.upload_progress.name');
$key = ini_get('session.upload_progress.prefix') . $_POST[$name];

$_SESSION[$key]; // 这里就是此次文件上传的进度信息了
$_SESSION[$key]这个变量的结构是这样的:

 代码如下 复制代码

<?php
$_SESSION["upload_progress_test"] = array(
 "start_time" => 1234567890,   // 开始时间
 "content_length" => 57343257, // POST请求的总数据长度
 "bytes_processed" => 453489,  // 已收到的数据长度
 "done" => false,              // 请求是否完成 true表示完成,false未完成
 
 // 单个文件的信息
 "files" => array(
  0 => array( ... ),
  // 同一请求中可包含多个文件
  1 => array( ... ),
 )
);
?>

这样,我们就可以使用其中的 content_length 和 bytes_processed 两项来得到进度百分比。

原理介绍完了,下面我们来完整的实现一个基于PHP和Javascript的文件上传进度条。

上传表单
首先,来编写我们的上传表单页面 index.php,代码如下:

 代码如下 复制代码

<form id="upload-form"
    action="upload.php" method="POST" enctype="multipart/form-data"
    style="margin:15px 0" target="hidden_iframe">
 
        <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="test" />
        <p><input type="file" name="file1" /></p>
        <p><input type="submit" value="Upload" /></p>
</form>    
 
<iframe id="hidden_iframe" name="hidden_iframe" src="about:blank" style="display:none;"></iframe>
 
<div id="progress" class="progress" style="margin-bottom:15px;display:none;">
        <div class="bar" style="width:0%;"></div>
        <div class="label">0%</div>
</div>


注意表单中的session.upload_progress.name隐藏项,值设置为了test。表单中仅有一个文件上传input,如果需要,你可以添加多个。

这里需要特别注意一下表单的target属性,这里设置指向了一个当前页面中的iframe。这一点很关键,通过设置target属性,让表单提交后的页面显示在iframe中,从而避免当前的页面跳转。因为我们还得在当前页面显示进度条呢。

#progress 这个div是用来显示进度条的。

注意 别忘了在index.php的最开始加上session_start()。

处理上传的文件
表单的action指向upload.php,我们在upload.php中处理上传的文件,将它转存到当前目录。这里与通常情况下的上传处理没有区别。

 代码如下 复制代码

<?php
if(is_uploaded_file($_FILES['file1']['tmp_name'])){
        move_uploaded_file($_FILES['file1']['tmp_name'], "./{$_FILES['file1']['name']}");
}
?>

Ajax获取进度信息
这一步是关键,我们需要建立一个 progress.php 文件,用来读取session中的进度信息; 然后我们在 index.php 中增加Javascript代码,向 progress.php 发起Ajax请求,然后根据获得的进度信息更新进度条。

progress.php 的代码如下:

 代码如下 复制代码

<?php
session_start();
 
$i = ini_get('session.upload_progress.name');
 
$key = ini_get("session.upload_progress.prefix") . $_GET[$i];
 
if (!empty($_SESSION[$key])) {
        $current = $_SESSION[$key]["bytes_processed"];
        $total = $_SESSION[$key]["content_length"];
        echo $current < $total ? ceil($current / $total * 100) : 100;
}else{
        echo 100;
}
?>

在这里我们获得$_SESSION变量中的进度信息,然后输出一个进度百分比。

在 index.php 中,我们将如下代码添加到页面底部 (为简便,这里使用jQuery):

 代码如下 复制代码
function fetch_progress(){
        $.get('progress.php',{ '<?php echo ini_get("session.upload_progress.name"); ?>' : 'test'}, function(data){
                var progress = parseInt(data);
 
                $('#progress .label').html(progress + '%');
                $('#progress .bar').css('width', progress + '%');
 
                if(progress < 100){
                        setTimeout('fetch_progress()', 100);
                }else{
            $('#progress .label').html('完成!');
        }
        }, 'html');
}
 
$('#upload-form').submit(function(){
        $('#progress').show();
        setTimeout('fetch_progress()', 100);
});

当#upload-form被提交时,我们把进度条显示出来,然后反复调用 fetch_progress() 获得进度信息,并更新进度条,直到文件上传完毕,显示'完成!'


注意事项


input标签的位置
name为session.upload_progress.name的input标签一定要放在文件input <input type="file" /> 的前面。

取消上传
通过设置 $_SESSION[$key]['cancel_upload'] = true 可取消当次上传。但仅能取消正在上传的文件和尚未开始的文件。已经上传成功的文件不会被删除。

setTimeout vs. setInterval
应该通过 setTimeout() 来调用 fetch_progress(),这样可以确保一次请求返回之后才开始下一次请求。如果使用 setInterval() 则不能保证这一点,有可能导致进度条出现’不进反退’。

json数据是我们实时交互时一些常用的文件,他可以利用php动态生成并由js或php接受进行相关处理,下面我来给各位同学介绍JSON数据的创建和解析,有需要了解的同学可参考。

具体操作

JSON是什么?

JSON一种用于在互联网络中传输超量数据的数据交换格式。虽然在Internet中交换数据XML占主要地位,然而JSON却更加的简单并且适用于轻型的数据。

尽管JSON当初是被JavaScript发明并且用于访问远程数据的,它现在却被广泛适用于各种语言,因为JSON是一种于平台无关的数据格式。

JSON数据的数据类型和实例

JSON支持各种各样的数据类型,包括数字、字符串、布尔值、数组数据甚至对象数据(是一个集合,每个元素都是键:值对形式,使用逗号分隔,并且使用大括号包裹)。

让我们看一个JSON数据的简单例子,该例子表示一个雇员的详细信息:

 代码如下 复制代码

{“id”:”1″,”name”:”mike”,”country”:”usa”,”office”:["microsoft","oracle"]}

使用PHP创建和解析JSON数据的方法

PHP从5.2.0版本以后提供了JSON扩展来处理JSON数据,通过PHP有两个函数json_encode()和json_decode非常方便的对JSON数据进行转换和解析。

首先,让我们看一段PHP用数组创建如上各式的JSON的代码:

 代码如下 复制代码

$json_data = array ('id'=>1,'name'=>"mike",'country'=>'usa',"office"=>array("microsoft","oracle"));  echo json_encode($json_data);


该代码直接产生了JSON数据。现在让我们用PHP将上面的JSON解码:

 代码如下 复制代码

$json_string='{"id":1,"name":"mike","country":"usa","office":["microsoft","oracle"]} ';  $obj=json_decode($json_string);

现在变量$obj包含了使用PHP解析后的JSON数据,你可以使用以下的方法来输出和访问:

 代码如下 复制代码

echo $obj->name; //displays mike  echo $obj->office[0]; //displays microsoft


你猜的没错$obj->office是一个数组,你能够使用PHP的foreach方法遍历它:

 代码如下 复制代码

foreach($obj->office as $val)      echo $val;

ajax时返回JSON格式的数据


原来的数据就是JSON格式
下例来自《锋利的jQuery

 代码如下 复制代码


$(function(){
     $('#send').click(function() {
          $.getJSON('test.js', function(data) {
              $('#resText').empty();
   var html = '';
   $.each( data  , function(commentIndex, comment) {
    html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>';
   })
  $('#resText').html(html);
         })
    })
})

你需要做的就是将数据存储为格式正确的 .json或者.js 文件。以下为示例所传送的json格式的数据


[
  {
    "username": "张三",
    "content": "沙发."
  },
  {
    "username": "李四",
    "content": "板凳."
  },
  {
    "username": "王五",
    "content": "地板."
  }
]

php输出JSON格式

那么php如何输出json格式?php 使用json_encode函数,然后jQuery使用datatype:json 就可以了嘛? 它的输出如下:

显然并非所愿。还是字符串,到底怎么实现?其实很简单,只要在php文件头部加入以下代码:

 代码如下 复制代码


header('Content-type: text/json');

这个头就是告知此文件输出类型为 json,这种形式我们见的最多的是验证码——php输出验证图片,有时php可以输出css文件,js文件等做一些有趣的事情。好的,我们测试一下吧

 代码如下 复制代码

<?php
header('Content-type: text/json');

$fruits = array (
    "fruits"  => array("a" => "orange", "b" => "banana", "c" => "apple"),
    "numbers" => array(1, 2, 3, 4, 5, 6),
    "holes"   => array("first", 5 => "second", "third")
);
echo json_encode($fruits);
?>

[!--infotagslink--]

相关文章

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

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

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

    华为手机怎么恢复已卸载的应用?有时候我们在使用华为手机的时候,想知道卸载的应用怎么恢复,这篇文章主要介绍了华为手机恢复应用教程,需要的朋友可以参考下...2020-06-29
  • 破解安卓手机上的九宫格锁方法步骤

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

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

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • 华为手机蓝牙可以连接几个设备?华为设置蓝牙音频连接个数的技巧

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

    小米手机负一屏该怎么设置?小米手机最近推出了负一屏的功能,集成了很多信息,可以放一些需要知道的信息,下面我们就来看看详细的教程,需要的朋友可以参考下。 最新的开...2016-12-15
  • oppo手机怎么设置充电提示音 oppo手机充电提示音设置方法

    oppo手机充电提示音怎么关闭?用户要学会充电提示音的设置方法,这样才能熟练的操作更换提示音或者是关掉提示音,关于OPPO手机充电提示音的设置下面会有具体的介绍,各位用户一起来看看详细的操作方法吧...2020-12-08
  • 保千里打令VR手机怎么样?什么时候发布?

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

    明明我的手机配置那么高(都八核了)为什么玩游戏还会卡?对安卓手机来说玩游戏卡顿的原因一般有两种;性能不足导致的卡顿以及CPU发热降频导致的卡顿,详情我们来看看吧...2017-07-06
  • 钉钉怎么双开登录两个账号? 小米手机双开钉钉的技巧

    钉钉怎么双开登录两个账号?钉钉中想要双开登录两个账号,该怎么登录呢?下面我们就来看看小米手机双开钉钉的技巧,需要的朋友可以参考下...2020-06-29
  • .htaccess的基本作用及相关语法介绍

    一、.htaccess的基本作用 启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用 如果需要使用.htaccess以外的其他文件名,可以用Ac...2016-01-28
  • MIUI儿童模式如何开启 小米手机儿童模式开启教程

    您是否遇到过孩子想要玩手机又不好拒绝,或者是您想要给孩子配一个联系用的手机有担心孩子玩手机上瘾?如果您购买的是小米手机,那么MIUI的儿童模式就能很好地解决这个问题...2016-12-21
  • 安卓4.1系统手机怎么设置用wifi上网

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

    Recovery模式是安卓系统特有的一个功能,进入Recovery模式可以刷机,也可以恢复出厂设置,同时进入Recovery模式的方法有很多,下面我来介绍利用手机助手快速进入Recovery模式...2016-09-20
  • 小米手机耗电快怎么办 你可能是费电服务设置没关

    小米手机如今也都为手机配备了越来越大容量的电池,但很多小米用户表示,自己手机电池容量明明很大,但费电仍然很快,这很可能是以为你有两个耗电大户的设置项目没关。下面就...2016-12-15
  • 安卓手机如何清理缓存

    小编给大家带来一篇关于安卓手机缓存怎么清理的问题解答,有需要的可以参考一下 &#8195;&#8195;安卓手机怎么清理缓存 android清除程序缓存的方法&#8195;&#8195;一,...2017-07-06
  • PHP代码判断设备是手机还是平板电脑(两种方法)

    现在移动互联网越来越发达,很多的网站都普及了手机端浏览,为了更好的让网页在手机端显示,我们都选择了使用CSS媒体查询制作响应式模版,但这也有弊端,例如某些网站的结构是CMS类型的,太多的内容要显示...2015-10-21
  • Ecshop 支付宝手机网页支付免费版

    Ecshop手机网页版本支持在网上找了很多需要花钱购买了,在这里小编整理了一个Ecshop 支付宝手机网页支付免费版供大家参考。 Ecshop 支付宝手机网页支付,针对ecshop...2016-11-25