怎么用PHP开发API接口
程序员文章站
2022-05-07 19:40:32
...
一、先简单回答两个问题:
(学习视频分享:编程视频)
1、PHP 可以开发客户端?
答:不可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:服务端的开发。(别去纠结 GTK、WinBinder)
2、为什么选择 PHP 作为开发服务端的首选?
答:跨平台(可以运行在UNIX、Linux、WINDOWS、Mac OS下)、低消耗(PHP消耗相当少的系统资源)、运行效率高(相对而言)、MySQL的完美搭档,本身是免费开源的,......
二、如何使用 PHP 开发 API(Application Programming Interface,应用程序编程接口) 呢?
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C)
1、和 WEB 开发一样,首先需要一些相关的参数,这些参数,都会由客户端传过来,也许是 GET 也许是 POST,这个需要开发团队相互之间约定好,或者制定统一规范。
2、有了参数,根据应用需求,完成数据处理,例如:任务进度更新、APP内购、一局游戏结束数据提交等等
3、数据逻辑处理完之后,返回客户端所需要用到的相关数据,例如:任务状态、内购结果、玩家信息等等
数据怎么返给客户端?
直接输出的形式,如:JSON、XML、TEXT 等等。
4、客户端获取到你返回的数据后,在客户端本地和用户进行交互
服务端
<?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图文教程
上一篇: css中关于2D转换的总结分享