php api怎么制作,Php接口应该加密哪些?
在实际开发中PHP接口开发是PHP常见的技术,可以通过接口进行一些操作,可以访问接口获取数据,给app提供数据接口等,但是如果接口没有加密解密的过程,很容易发生盗用和不安全的操作。
下边简单介绍一下API接口的加密方法
如app要请求用户列表,api是“index.php?module=user&action=list”
app生成token = md5 (‘user’.’list′.’abc12@1qwe~456’) = 5e549e3c1e808125d1a7e0746625abb6;
则实际发起请求为 “index.php?module=user&action=list&token=5e549e3c1e808125d1a7e0746625abb6”
服务器端接到请求用同样方法计算token:
<?php
$module = $_GET['module'];
$action = $_GET['action'];
$urltoken = $_GET['token']; //app发送过来的token
$token = md5($module.$action.'abc12@1qwe~456');
if($urltoken != $token){
exit('error');
}else{
echo 'success';
}
PHP用1个函数实现post请求?
引言
前天的文章,我们说到了如何高效的下载网络资源,对于小体积的文件。可以便捷的使用 file_put_contents() 进行请求。与之配对的函数 file_get_contents() 则是读取资源。
今天我们讨论一下,有没有一种可能,使用一个函数,就可以给服务器发送post请求的数据呢?
学习时间上一段中我们已经提示了,有一个函数可以用于读取网络资源,也就是间接的发起网络请求。默认 file_get_contents()是使用 GET 请求,如果是POST请求按道理也应该做的来。不过要怎么写呢?
file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。
其参数形式如下:
string file_get_contents( string $filename[, bool $use_include_path = false[, resource $context[, int $offset = -1[, int $maxlen]]]] )
复杂的功能,我们需要组装后面的参数即可。我们需要使用流操作的上下文 context,传入该函数。
首先构造请求的参数,也就是键值对,这里需要使用 & 进行多参数连接:
$postdata = http_build_query( array( 'name' => 'joe', 'age' => '13' ) );
接着构造请求结构体:
$opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => $postdata ) );
最重要的一步,创建基于流的上下文,使用
$context = stream_context_create($opts);
写到这里就“万事俱备只欠东风”了。我们隆重地清楚主旨函数处理这些参数:
$result = file_get_contents('http://example.com/submit.php', false, $context);
之后结果,或者错误内容,就会输出到 $result 对象。使用 false 判断,或者使用已知的接口返回数据类型,进一步处理。
深度定制上一节的内容并没有考虑网络超时,接口授权,等等情形。本节我们说一个复杂度高一些的,要求处理一个https请求,并配置了 basic auth 的 url,并使用 post 上传数据。
首先还是裁剪请求体:
$opts = array('http' => array( 'method' => 'POST', 'header' => "Content-Type: text/xml\r\n.Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n", 'content' => $body, 'timeout' => 60 ) );
注意我们在请求上添加了 header,这是根据目标 url 的要求添加的。$body 就是上一节中的 $postdata 结构类型。
接着创建流上下文:
$context = stream_context_create($opts);
最后调用函数:
$url = 'https://'.$https_server;
$result = file_get_contents($url, false, $context, -1, 40000);
写在最后通过上面两个细节的函数处理,大家是不是对 file_get_contents() 有了更加深入的看法,原来这家伙还可以这么用,真是开了眼界!
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
java做后台php做前台怎么对接?
有一定规模的系统,大后台用java,通过api与php等轻量平台交互。然后由php与前端交互。这样让数据库与前端隔离,数据层专门处理逻辑运算,系统架构更加安全,稳定。
当然如果项目不大,就没有必要采取该种架构。
你手机里有哪些堪称神器的App?
1.日程管理:时光序
支持根据“艾宾浩斯遗忘曲线”设置日程,被家长、学生誉为辅助学习超级功能。
学习某个知识点后,可自动按照1天、2天、4天、7天、15天的规律生成日程,然后再桌面日期界面显示。
科学学习=科学理论+高效工具+实践
桌面的日期插件支持透明化及颜色设置,支持显示文字提醒(不同颜色)
桌面插件支持经典重要/紧急四象限(深色配置,高级感):
而这几个,只是众多黑科技中的一小部分:
读书、记账、日记、课程表、生理期、事项、打开、专注.......
你要的它都有,没有都是精品。
而且,它还在进化。。。。。
2.免费的语音转文字:笛云听写语音转文字免费的软件并不多,笛云听写算一个,得到了众多大神推荐的超级小众软件:
每天十个小时免费转写时长:
支持多端同步:
深得网友喜爱:
而且,效果也很好:
(免费的不支持实时语音转写,拉轰目前选择:考拉语音转文字)
3.图片文字识别:全能宝扫描君好不好用,实践是最好的测试(这是一张打印的表格,并非规整)
识别效果,几乎完美还原:
一键导出到excel:
而这仅仅是它的一部分功能:
最关键的推荐理由:
和它同样级别的软件,需要的RM远远超过它。
4,超级文科软件:全世界这可能会成为你手机上最酷炫的软件,没有之一。推荐给任何一位朋友,都不会掉价。
时空柱,妥妥的科技感
关系图:一目了然
时空地图:历史+地理
而这,只是冰山一角。
5.有没有一款软件公认为神器:一个木函真的有一个超级app各种工具功能都有:
其他:免费看NBA等体育赛事:河豚直播、蓝鲸体育
超级软件,拉轰推荐
拉轰出品,必属精品
怎么通过API调用数据库信息?
你只要给你的网站做一套API就行了,比如adduser.php?username=xxxx&password=xxxx,你只要让客户端访问这个文件就能达到增加用户的效果,当然了这是get的简单方法,你可以设计成带密钥的post方法