对于 手机端 和 php服务器的通信,是不存在表单这一概念的  ,除非自己去实现, 所以通常情况下步骤是:

假定上传的是字符串。

1  手机端的流程是 把文件或者字符串,转化为 特定的流。

2 通过http post上传流。

3 服务器接收到 request   不能使用_Post['']方式 读取流信息, 而是通过 $link = fopen("php://input", 'r');  获取上传的数据。

PHP code $link = fopen("php://input", 'r');

打开php的输入流,所有提交到该文件的数据都可用用此获取

$json = fread($link, 10000);

读取刚才打开的输入流,最多读取10000字节

echo $json;

对于上一节说的,_Post 能够获取post方式 的 数据的基本依据是  Content-Type=application/x-www.form-urlencoded      通过表单上传文件时必须指定编码类型为"multipart/form-data"。

text/plain是我们在做纯文本传输时防止接收数据时出现编码混乱而设置的。为什么要这么设置?以下三者的区别。

application/x-www-form-urlencoded 采用键值对应的方式 post,

multipart/form-data  上传文件  需要使用多媒体协议

http://hi.baidu.com/i3_online/item/77fdbdf08b514325743c4cb7   详细介绍了  3中 编码格式 。

、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

接下来  是     $HTTP_RAW_POST_DATA和php://input和$_POST接收的区别

不是基于浏览器表单的情况的时候,post是不提交表单的。所以那一套$_POST是获取不到 表单里面控件的数据的。没有键值对应。同时,编码格式不是enctype="multipart/form-data。
$HTTP_RAW_POST_DATA是全局变量 $GLOBALS['HTTP_RAW_POST_DATA']   在编码是enctype="multipart/form-data。(表单编码)数据不可用。  这是使用表单上传文件的编码格式,启用多媒体协议,采用二进制流。
,基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用
$GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。可以说$GLOBALS['HTTP_RAW_POST_DATA']范围更广一些。php不识别的编码和能识别的 他都可以显示 除了form-data
PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型,也就是基本的 表单提交数据的 编码格式。
 
对于 text/xml类型  是提交一个xml文档给服务器。要怎么获得这个post数据呢 ? text/xml可是个 php不识别的编码格式啊。
由于PHP默认只识别application/x-www.form-urlencoded标准的数据类型,因此,对型如text/xml的内容无法解析为$_POST数组,这个时候'HTTP_RAW_POST_DATA'该出场了。故保留原型,交给$GLOBALS['HTTP_RAW_POST_DATA']
来接收。他返回的应该是一个string,代表xml文件内容。
当然 最好的方式是使用  php://input 实现这个功能
php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的
php.ini 设置。php://input 不能用于 enctype="multipart/form-data"。
<form   action="post.php"   method="post">  
      <input  
type="text"   name="user">  
      <input   type="password"  
name="password">  
      <input  
type="submit">  
  </form>   
 post.php  
  ----------------------------  
  <?   echo  
file_get_contents("php://input");   ?>   首选 file_get_contents 替代 fopen ,file_get_content也可以听用来读取服务器本地文件。  返回值是一个string http://www.lvtao.net/showarticle.php?articleid=1063
 
 
 
 

Php 笔记2-----手机端 与 php服务器的通信的更多相关文章

  1. EasyDSS高性能流媒体服务器前端重构(六)- webpack-dev-server 支持手机端访问

    很多时候,前端开发的页面,不仅要在PC端测试效果, 还要在手机端测试效果. 在开发阶段, 我们以 webpack-dev-server 来启动浏览器, 打开正在开发的页面. webpack-dev-s ...

  2. js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式

    js replace 全局替换   js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <scrip ...

  3. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端源码重构(六)- webpack-dev-server 自适应支持手机端访问

    关于EasyDSS EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP流媒体服务器 ...

  4. TERSUS无代码开发(笔记07)-简单实例手机端后台逻辑开发

    提交申请逻辑开发 1.添加父级对象引用(从父级对象中获取前端输入框的值) 1.设计数据库表(表名和字段名称不能用中文) 2.设计置数据库主键(可设联合主键) 3.传值形成数据实列处理 4.服务器端处理 ...

  5. TERSUS无代码开发(笔记06)-简单实例手机端页面设计

    手机端的设计 1.页面说明 2.默认页面===>提交请假单(上面页面双击进入,页面主要编辑区) 2.1默认页面===>提交请假单===>头部区(页面部份主要编辑区01) 2.1.1默 ...

  6. 使用localResizeIMG3+WebAPI实现手机端图片上传

    前言 惯例~惯例~昨天发表的使用OWIN作为WebAPI的宿主..嗯..有很多人问..是不是缺少了什么 - - 好吧,如果你要把OWIN寄宿在其他的地方...代码如下: namespace Conso ...

  7. 《JS实现复制内容到剪贴板功能,可兼容所有PC浏览器,不兼容手机端》

    前记:本来原生的JS是有提供一个函数来实现这个功能(window.clipboardData),但是很遗憾,这个函数仅仅支持IE和FF浏览器,所以基本用处不大.下边介绍的是一个第三方插件库(ZeroC ...

  8. 移动手机端H5无缝间歇平滑向上滚动js代码

    在没结合css3的transform实现平滑过渡前,我都是用的jquery的animate方法,此方法在PC端基本看不出来有稍微卡顿的现象,但是在性能不高的手机上使用该方法,就会有明显的卡顿现象,不够 ...

  9. megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题

    最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用fla ...

随机推荐

  1. 一行代码设置TForm颜色的前世今生(属性赋值引起函数调用,然后发消息实现改变显示效果),TForm的初始颜色在dfm中设置了clBtnFace色

    来自万一的帖子:http://www.cnblogs.com/del/archive/2008/04/27/1173658.html的确做到了一行代码设置TForm控件的颜色(一点感想:Delphi程 ...

  2. Redis通用操作(适用于String,Hash,链表等)

    keys pattern 查询相应的key 在redis里,允许模糊查询key 有3个通配符 *, ? ,[] *: 通配任意多个字符 ?: 通配单个字符 []: 通配括号内的某1个字符 redis ...

  3. swift:入门知识之类和对象

    1.swift中使用class创建一个类.一个类的声明则是在类里作为常量或变量声明的,除了是在类的上下文中.在方法和函数中也是这么写的. 2.swift中使用init(...)作为初始化构造函数 3. ...

  4. jsp中的out对象 和 servlet中的response.getOutputStream()

    web容器生成的servlet代码中有out.write(””),这个和JSP中调用的response.getOutputStream()产生冲突. 即Servlet规范说明,不能既调用 respon ...

  5. WebMvcConfigurerAdapter

    spring Boot 默认的处理方式就已经足够了,默认情况下Spring Boot 使用WebMvcAutoConfiguration中配置的各种属性. 建议使用Spring Boot 默认处理方式 ...

  6. javascript把IP地址转为数值几种方案,来挑战一下效率吧

    先看看什么是IP地址: IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节).IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~25 ...

  7. Java面试汇总

    转自:http://zy19982004.iteye.com/blog/1846537#comments 一.All 最近找工作,遇到的笔试面试题,归纳如下,供大家参考. 二.J2SE 容器 Hash ...

  8. OSX 升级 vim

    善用 Homebrew 神器啊,少年!Homebrew - The missing package manager for OS X安装完成后打开终端输入: brew install vim --wi ...

  9. R语言记录程序运行的时间

    f <- function(start_time) { start_time <- as.POSIXct(start_time) dt <- difftime(Sys.time(), ...

  10. HTML发展历史

    概述 HTML从1993到如今的发展,同时针对其以后的发展进行评测. HTML 语言作为网络语言标准规范,在计算机的发展史中有着不可或缺的地位.在HTML 上的成就也决定着一个时代的发展. 1.HTM ...