使用php自己实现所需接口(需要php基础)
来源:互联网 发布:阿里 开发的数据库 编辑:程序博客网 时间:2024/06/08 06:41
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">php的简单介绍:</span>
php是一脚本语言,功能十分强大,因为其开发速度快,周期短现在被广泛的使用,我们现在很多的服务器都是用php再写。
做android开发的对于我们经常跟服务器的交互肯定不陌生,通常都是通过服务器给定的url通过post,get等方法来请求服务器,然后处理服务器返回的数据,现在广泛使用的是json数据,xml也有,(比如天气预报的接口);
做手机端的可能对于接口这方面没有特别的了解过,经常有需要都是要服务端来做,但是我觉得熟悉他的流程已经编写还是很有必要的。
首先准备工作:
(1)安装一个集成好数据库,apache,以及php的工具wampserver(具体安装过程就不细说了,网上有很多,基本上傻瓜式的),当然也可以分别进行安装,只是配置有点麻烦,可以自己选择;
(2)确定工具安装成功,并且可以执行php
(3)php基础(本文是介绍接口,在测试post请求的时候可能需要通过表单提交来进行测试)
下边就一个登陆,注册接口为例来进行下介绍:
(1)编写一个配置文件Config.php;定义数据库连接的写参数,
参数分别是主机名,账号,密码,还有数据库名称
<?php define("DB_HOST","localhost");define("DB_USER","root");define("DB_PASSWORD","123456");define("DB_DATABASE","test");?>(2)编写数据库连接的管理文件(需要注意的是,以前的mysql开头的方法都已过时,统一使用mysqli开头的方法);
<?php class DB_Connect{ public $con; function __construct() { } function __destruct() { // $this->close(); } //连接数据库 public function connect() { require_once 'Config.php'; //连接mysql $this->con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) or die(mysqli_error($this->con)); if (mysqli_connect_errno()) { die("Database connection failed"); } // 返回 database handler return $this->con; } //关闭数据连接 public function close() { mysqli_close($this->con); } } ?>
(3)编写一个工具类用来处理跟数据库的交互等的操作,文件名DB_Functions.php
<?php class DB_Functions { private $db; // constructor function __construct() { require_once 'DB_Connect.php'; // connecting to database $this->db = new DB_Connect(); $this->db->connect(); } // destructor function __destruct() { } /** * 添加用户信息 */ public function storeUser($name, $email, $password) { $uuid = uniqid('', true); $hash = $this->hashSSHA($password); $encrypted_password = $hash["encrypted"]; // 加密后的密文 $salt = $hash["salt"]; // saltecho $uuid."==".$encrypted_password."==".$salt;echo "<pre>";print_r($hash);$sql = "INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())"; $result = $this->db->con->query($sql);echo $result; // 检查结果 if ($result) {echo "sucess"; // 获取用户信息 $uid = mysqli_insert_id($this->db->con); // 获取最新的id $result = mysqli_query($this->db->con,"SELECT * FROM users WHERE uid = $uid"); //返回刚插入的用户信息echo "<br>".$uid;$sql = "select * from users";$result = $this->db->con->query($sql);echo "<pre>";print_r($result);return true; } else {echo "false"; return false; } } /** * 通过email和password获取用户信息 */ public function getUserByEmailAndPassword($email, $password) { $result = mysqli_query($this->db->con,"SELECT * FROM users WHERE email = '$email'") or die(mysqli_connect_errno());echo "<pre>";print_r($result); // check for result $no_of_rows = mysqli_num_rows($result); if ($no_of_rows > 0) { $result = mysqli_fetch_array($result); $salt = $result['salt']; $encrypted_password = $result['encrypted_password']; $hash = $this->checkhashSSHA($salt, $password); // check for password if ($encrypted_password == $hash) { return $result; } } else { return false; } } /** * 通过email判断用户是否存在 */ public function isUserExisted($email) { $result = mysqli_query($this->db->con,"SELECT email from users WHERE email = '$email'"); $no_of_rows = mysqli_num_rows($result); if ($no_of_rows > 0) { // 用户存在 return true; } else { //用户不存在 return false; } } /** * 加密 * @param password * returns salt and encrypted password */ public function hashSSHA($password) { $salt = sha1(rand()); $salt = substr($salt, 0, 10); $encrypted = base64_encode(sha1($password . $salt, true) . $salt); $hash = array("salt" => $salt, "encrypted" => $encrypted); return $hash; } /** * 解密 * @param salt, password * returns hash string */ public function checkhashSSHA($salt, $password) { $hash = base64_encode(sha1($password . $salt, true) . $salt); return $hash; } } ?>(4)编写接口处理类index.php,处理post或get请求,但是要注意,get请求是明文请求,参数都是拼接到接口上的,任何人都能看的到(本文使用post方式)如果要使用get方式,把下边代码中所有_POST改为_GET即可。
<?phpif (isset($_POST['tag']) && $_POST['tag'] != '') { $tag = $_POST['tag']; require_once 'DB_Functions.php'; $db = new DB_Functions(); $response = array("tag" => $tag, "error" => FALSE); if ($tag == 'login') { $email = $_POST['email']; $password = $_POST['password']; $user = $db->getUserByEmailAndPassword($email, $password);echo "<br>".$user; if ($user != false) {echo $email."<br>" ;echo $password."<br>"; $response["error"] = FALSE; $response["uid"] = $user["unique_id"]; $response["user"]["name"] = $user["name"]; $response["user"]["email"] = $user["email"]; $response["user"]["created_at"] = $user["created_at"]; echo json_encode($response); } else{echo "hahaha"; $response["error"] = TRUE;//如果转json数据的时候没有输出日志,那么说明是编码错误了。如果是汉字必须是utf-8编码 $response["error_msg"] = "用户名或密码错误!";echo json_encode($response); } } else if ($tag == 'register') { $name = $_POST['name']; $email = $_POST['email']; $password = $_POST['password']; if ($db->isUserExisted($email)) { $response["error"] = TRUE; $response["error_msg"] = "用户已存在"; echo json_encode($response); } else { $user = $db->storeUser($name, $email, $password); if ($user) { $response["error"] = FALSE; $response["uid"] = $user["unique_id"]; $response["user"]["name"] = $user["name"]; $response["user"]["email"] = $user["email"]; $response["user"]["created_at"] = $user["created_at"]; $response["user"]["updated_at"] = $user["updated_at"]; echo json_encode($response); } else { $response["error"] = TRUE; $response["error_msg"] = "服务器繁忙,操作失败"; echo json_encode($response); } } } else { $response["error"] = TRUE; $response["error_msg"] = "未找到您要的方法"; echo json_encode($response); }} else { $response["error"] = TRUE; $response["error_msg"] = "您的参数不正确!"; echo json_encode($response);}?>
(5)下边就是来调用接口了,我们可以通过android端来进行测试
看图
这是调用接口试验登录注册结果。如果需要看json数据可以打印查看。
访问网络我方式就不写了。
看demo:http://download.csdn.net/detail/u012808234/9587353
注意:(如果出现返回的json数据解析出现问题的话,而且json数据看着是没有问题的话,那么检查php代码的编码格式,自己调整,只要在json数据的前端没有空格即可)。
0 0
- 使用php自己实现所需接口(需要php基础)
- 使用PHP实现服务接口
- PHP 初学者 (PHP Beginner)所需要技能
- php面向对象基础概念(接口)
- php接口的实现
- php 接口的实现
- php 代码实现接口
- PHP中的接口实现
- PHP使用API实现基础汇率换算
- php 接口使用示例
- php接口使用
- php接口的使用
- PHP写接口需要注意的问题
- PHP基础----PHP 与 MySQL----php操作数据库标准思路(自己总结的,没有标号)
- 使用PHP调用Matlab接口实现一个简易的计算器
- PHP使用Guzzle依赖实现对外部接口封装
- PHP+TP框架实现使用微信图像接口
- php单一接口的实现
- mysql 修改root密码 修改账户登录host
- Mac环境下R链接MySQL数据库流程记录
- jquery-zclip插件
- HDU 5750 Dertouzos
- 机器学习方法的历史
- 使用php自己实现所需接口(需要php基础)
- ClassLoader 详解及用途
- POJ题目分类
- 《MarkDown》语法笔记
- 统计学习方法第二章笔记
- freeMarker 遍历 list,map,list<map>
- 使用Python工具分析风险数据 20160723
- 当file_get_contents或者simplexml_load_file的时候乱码
- ZRANGEBYSCORE