PHP开发API接口及使用
服务端
<?php require 'conn.php';
header('Content-Type:text/html;charset=utf-8'); $action = $_GET['action'];
switch ($action) { //注册会员
case"adduserinfo";
$username = lib_replace_end_tag(trim($_GET['username']));
$password2 = lib_replace_end_tag(trim($_GET['userpassword']));
$password = md5("$password2" . ALL_PS);
$email = lib_replace_end_tag(trim($_GET['email'])); if ($username == '' || $password2 == '' || $password == '') {
$res = urlencode("参数有误");
exit(json_encode($res)); //有空信息
} $sql = "select username from `member` where username='$username'";
$query = mysql_query($sql, $conn);
$count = mysql_num_rows($query); if ($count > 0) {
exit(json_encode(1)); //返回1表示注册失败
} else { $addsql = "insert into `member` (username,password,email) values ('$username','$password','$email')";
mysql_query($addsql);
exit(json_encode(0)); //返回0表示注册成功
}
break; //查询用户信息
case"selectuserinfo";
$username = lib_replace_end_tag($_GET['username']);
$sql = "select id,username,nickname,mobile from `member` where username='$username'";
$query = mysql_query($sql, $conn);
$row = mysql_fetch_array($query);
foreach ($row as $key => $v) {
$res[$key] = urlencode($v);
}
exit(json_encode($res));
break; //会员登录
case"userlogin";
$username = lib_replace_end_tag($_GET['username']);
$password2 = lib_replace_end_tag(trim($_GET['userpassword']));
$password = md5("$password2" . ALL_PS);
$sqluser = "select id,username,password from `member` where username='" . $username . "' and password='" . $password . "'";
$queryuser = mysql_query($sqluser);
$rowuser = mysql_fetch_array($queryuser);
if ($rowuser && is_array($rowuser) && !empty($rowuser)) {
if ($rowuser['username'] == $username && $rowuser['password'] == $password) {
if ($rowuser['password'] == $password) {
$res = urlencode("登录成功");
exit(json_encode($res));
} else {
$res = urlencode("密码错误");
exit(json_encode($res));
}
} else {
$res = urlencode("用户名不存在");
exit(json_encode($res));
}
} else {
$res = urlencode("用户名密码错误");
exit(json_encode($res));
}
/*
* 0:表示登录成功,1:表示密码错误,2:用户名不存在,3:用户名密码错误
*/
break; default:
exit(json_encode(error));
}
?>
客户端
<?php
header('Content-Type:text/html;charset=utf-8'); //避免输出乱码
function httpPost($url, $parms) {
$url = $url . $parms;
if (($ch = curl_init($url)) == false) {
throw new Exception(sprintf("curl_init error for url %s.", $url));
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 600);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if (is_array($parms)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data;'));
}
$postResult = @curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($postResult === false || $http_code != 200 || curl_errno($ch)) {
$error = curl_error($ch);
curl_close($ch);
throw new Exception("HTTP POST FAILED:$error");
} else {
// $postResult=str_replace("\xEF\xBB\xBF", '', $postResult);
switch (curl_getinfo($ch, CURLINFO_CONTENT_TYPE)) {
case 'application/json':
$postResult = json_decode($postResult);
break;
}
curl_close($ch);
return $postResult;
}
}
$postUrl = "http://pujia.test.com/api/server.php";
$p=$_GET['p'];
if ($p =="selectuserinfo") {
$username = $_GET['username'];
$parms = "?action=selectuserinfo&username=" . $username . "";
} elseif ($p =="adduserinfo") {
$username = $_GET['username'];
$userpassword = $_GET['userpassword'];
$parms = "?action=adduserinfo&username=" . $username . "&userpassword=" . $userpassword . "";
} elseif ($p =="userlogin") {
$username = $_GET['username'];
$userpassword = $_GET['userpassword'];
$parms = "?action=userlogin&username=" . $username . "&userpassword=" . $userpassword . "";
}
$res = httpPost($postUrl, $parms); //$parms
$res = json_decode($res);
print_r(urldecode(json_encode($res)));
?>
PHP开发API接口及使用的更多相关文章
- 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本 功能清单文档下载地址: 功 ...
- php开发api接口
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...
- 简单天气应用开发——API接口
寒假回家无事,想到自学iOS开发已有一段时间,还没做过真正自己的应用,就起了做一个天气预报App的念头. 想到就做.天气预报第一步自然是找到好用的API接口来获取天气信息.在百度上搜索了一圈,找到的都 ...
- PHP开发api接口安全验证
php的api接口 在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道 ...
- 个人微信号二次开发SDK协议,个人微信号二次开发api接口
通过这个API接口可以做什么? 通过我们提供的API接口您可以开发: 工作手机(如:X创,X码,XX管家等) 微信群讲课软件(如:讲课X师,一起X堂等) 微信社群管理软件(如:小X管家,微X助手等) ...
- 个人微信二次开发API接口
通过这个API接口可以做什么? 通过我们提供的API接口您可以开发: 工作手机(如:X创,X码,XX管家等) 微信群讲课软件(如:讲课X师,一起X堂等) 微信社群管理软件(如:小X管家,微X助手等) ...
- PHP开发api接口安全验证的实例,值得一看
php的api接口 在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道 ...
- 没想到吧,Java开发 API接口可以不用写 Controller了
本文案例收录在 https://github.com/chengxy-nds/Springboot-Notebook 大家好,我是小富~ 今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便 ...
- PHP开发api接口安全验证方法一
前台想要调用接口,需要使用几个参数生成签名.时间戳:当前时间随机数:随机生成的随机数 签名:特定方法生成的sign签名 算法规则在前后台交互中,算法规则是非常重要的,前后台都要通过算法规则计算出签名, ...
- 【thinkphp5】使用tp5开发api接口 定义全局异常处理
1 新建文件夹以及文件 路径: /application/lib/exception/ExceptionHandler.php 并键入以下代码 <?php namespace app\lib\e ...
随机推荐
- HDU 4309 Seikimatsu Occult Tonneru 网络流量+像缩进
主题链接:点击打开链接 意甲冠军: 题意:给出一张N(N<=100)个点,M(M<=1000条)边的有向图. 每一个点上都有一些人.每条边有4个属性(u,v,w,p). 这些边分为三种:( ...
- 监测谁用了SQL Server的Tempdb空间
原文:监测谁用了SQL Server的Tempdb空间 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/02/11/sql-server-tempdb. ...
- 论docker中 CMD 与 ENTRYPOINT 的区别(转)
Dockerfile 用于自动化构建一个docker镜像.Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: ...
- Gradle sourceCompatibility has no effect to subprojects(转)
I have Java 6 and 7 installed on my machine. Gradle uses 1.7 (checked using gradle -v). But I need t ...
- NSIS脚本:更改壁纸
原文 NSIS脚本:更改壁纸 我们在制作主题安装包的时候,经常要进行自动更改壁纸的操作,其实用NSIS实现这一点非常简单.示例代码如下: 01 Name "更改壁纸" 02 Out ...
- linux 文件系统解析及相关命令(转)
简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...
- android控件 下拉刷新pulltorefresh
外国人写的下拉刷新控件,我把他下载下来放在网盘,有时候訪问不了github 支持各种控件下拉刷新 ListView.ViewPager.WevView.ExpandableListView.GridV ...
- JavaScript技巧&写法
原文:JavaScript技巧&写法 JavaScript技巧篇: 1>状态机 var state = function () { this.count = 0; this.fun = ...
- 把自解压的RAR压缩包解压到指定的软件安装目录
原文 把自解压的RAR压缩包解压到指定的软件安装目录 今天千里独行同学给轻狂来信问了一个问题:如何把一个自解压的RAR压缩包解压到我们指定的软件安装目录. 其实,在NSIS中,我们可以灵活运用相关 ...
- Rust这个新的语言
Rust这个新的语言 Rust初步(七):格式化 摘要: 在Rust中,如果要进行屏幕输出,或者写入到文件中,需要对数据进行格式化.这一篇总结一下它所支持的几种格式化方式. 这篇文章参考了以下官方文档 ...