扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
哎,又是乱码问题,我不多说,直接上代码
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比施秉网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式施秉网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖施秉地区。费用合理售后完善,十载实体公司更值得信赖。
if(!preg_match('/^.*$/u', $_REQUEST['word'])){
$username=iconv('GB2312', 'UTF-8', $_REQUEST['word']);
}
上面的代码就是判断传来的是数据类型是不是UTF-8编码,如果不是就转成转UTF-8编码,当然只支持GB2313的,如果传递过来的编码是big5的话也还是出现乱码,但是一般浏览器中人用的大部默认是GB2312或是UTF8的,先用着再说
代码:
1、form name="form1" method="post" action="2.php"
method的意思是以post方式提交到2.php,action的意思是动作,method是类型
随便输一个:
label
input type="text" name="val" /
input是html的标签,类型是文本域(输入文字),名字是val(后台用于接收的名称)
/label
p
label
input type="submit" name="Submit" value="提交" /
/label
/p
/form
2、php(第二个页面)
?php
echo $_POST['val'];
//输出上一个页面提交过来的val文本域的值。
?
方法1、最常见的方法是:$_POST['fieldname'];
说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据
解释:也就是表单POST过来的数据
方法2、file_get_contents(“php://input”);
说明:
允许读取 POST 的原始数据。
和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。
php://input 不能用于 enctype=”multipart/form-data”。
解释:
对于未指定 Content-Type 的POST数据,则可以使用file_get_contents(“php://input”);来获取原始数据。
事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。
所以用方法二是最保险的方法。
方法3、$GLOBALS['HTTP_RAW_POST_DATA'];
说明:
总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。
此变量仅在碰到未识别 MIME 类型的数据时产生。
$HTTP_RAW_POST_DATA 对于 enctype=”multipart/form-data” 表单数据不可用
如果post过来的数据不是PHP能够识别的,可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,
比如 text/xml 或者 soap 等等
解释:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据。
$_POST或$_REQUEST存放的是 PHP以key=value的形式格式化以后的数据。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于centent-Type的设置,即POST数据时 必须显式示指明Content-Type: application/x-www-form-urlencoded,POST的数据才会存放到 $GLOBALS['HTTP_RAW_POST_DATA']中。
1、功能:获得查询的指定参数的值。
2、语法:COleVariat GetParamValue(LPCTSTR lpszName); COleVariat GetParamValue(int nIndex)
3、参数:lpszName 参数值的名字,用于按名字查找。nIndex 查询定义的参数收集中期望参数的基于零的索引。
4、返回值:包含这个参数值的类COleVariat的一个对象。说明:调用这个成员函数,可以获取查询定义参数集合中存储的指定参数的当前值,可以用名字或者它在集合中的序号位置访问这个参数。
5、示例:/************************************************************
演示函数原型:varParamValue=querydef. GetParamValue(“[FIELD]”);
程序功能说明:获得指定的请求定义对象记录的参数。
***********************************************************/
//定义CDaoDatabase对象的指针m_daodb
CDaoDatabase*m_daodb;
//定义查询对象
CDaoQueryDef querydef(m_daodb);
//获得查询的指定参数的值
COleVariat varparamvalue=query.GetParamValue(“[FieldID]”);
PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!
此时可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 来获取提交的数据
查看手册,可以发现$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的区别:
$_POST:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
?php
$str='{"sign":true,"message":"实时接口","data":[{"title":"北京快3","name":"bjk3","expect":"145130","opencode":"4,5,6","opentime":"2019-11-21 20:22:45","source":"sourcecode":""}]}';
$json=json_decode($str,false);
echo $json['data'][0]['expect'];
echo $json['data'][0]['opencode'];
echo $json['data'][0]['opentime'];
?
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流