想要自己一个人完成app,那么后台接口也必须自己动动手。不用担心,其实很简单的,给自己信心!
下面就以登录注册为例,做一个api接口
首先在mac上搭建PHP环境,下载 MAMP Pro for Mac 3.4 破解版:
http://www.ifunmac.com/2015/08/mamp-pro-3-4/
即可一键安装Apache/PHP/MySQL开发环境。简单吧。
有了环境就可以写代码了:
首先写一个Config.php (配置数据库)
1 <?php 2 3 //定义数据库连接所需的变量 4 define("DB_HOST", "localhost"); 5 define("DB_USER", "root"); 6 define("DB_PASSWORD", "master12!"); 7 define("DB_DATABASE", "loginAPI"); 8 9 ?>
写一个DB_Connect.php(用于连接数据库)
1 <?php 2 3 class DB_Connect 4 { 5 public $con; 6 8 function __construct() 9 { 10 11 } 12 14 function __destruct() 15 { 16 // $this->close(); 17 } 18 19 //连接数据库 20 public function connect() 21 { 22 require_once 'include/Config.php'; 23 //连接mysql 24 $this->con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) or die(mysqli_error($this->con)); 25 if (mysqli_connect_errno()) { 26 die("Database connection failed"); 27 } 28 29 // 返回 database handler 30 return $this->con; 31 } 32 33 //关闭数据连接 34 public function close() 35 { 36 mysqli_close($this->con); 37 } 38 39 } 40 41 ?>
再来一个:DB_Functions.php (用来封装 执行sql后 返回数据的方法)
1 <?php 2 3 class DB_Functions { 4 5 private $db; 6 7 // constructor 8 function __construct() { 9 require_once 'DB_Connect.php'; 10 // connecting to database 11 $this->db = new DB_Connect(); 12 $this->db->connect(); 13 } 14 15 // destructor 16 function __destruct() { 17 18 } 19 20 /** 21 * 添加用户信息 22 */ 23 public function storeUser($name, $email, $password) { 24 $uuid = uniqid('', true); 25 $hash = $this->hashSSHA($password); 26 $encrypted_password = $hash["encrypted"]; // 加密后的密文 27 $salt = $hash["salt"]; // salt 28 $result = mysqli_query($this->db->con,"INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())"); 29 // 检查结果 30 if ($result) { 31 // 获取用户信息 32 $uid = mysqli_insert_id($this->db->con); // 获取最新的id 33 $result = mysqli_query($this->db->con,"SELECT * FROM users WHERE uid = $uid"); 34 //返回刚插入的用户信息 35 return mysqli_fetch_array($result); 36 } else { 37 return false; 38 } 39 } 40 41 /** 42 * 通过email和password获取用户信息 43 */ 44 public function getUserByEmailAndPassword($email, $password) { 45 $result = mysqli_query($this->db->con,"SELECT * FROM users WHERE email = '$email'") or die(mysqli_connect_errno()); 46 // check for result 47 $no_of_rows = mysqli_num_rows($result); 48 if ($no_of_rows > 0) { 49 $result = mysqli_fetch_array($result); 50 $salt = $result['salt']; 51 $encrypted_password = $result['encrypted_password']; 52 $hash = $this->checkhashSSHA($salt, $password); 53 // check for password 54 if ($encrypted_password == $hash) { 55 return $result; 56 } 57 } else { 58 return false; 59 } 60 } 61 62 /** 63 * 通过email判断用户是否存在 64 */ 65 public function isUserExisted($email) { 66 $result = mysqli_query($this->db->con,"SELECT email from users WHERE email = '$email'"); 67 $no_of_rows = mysqli_num_rows($result); 68 if ($no_of_rows > 0) { 69 // 用户存在 70 return true; 71 } else { 72 //用户不存在 73 return false; 74 } 75 } 76 77 /** 78 * 加密 79 * @param password 80 * returns salt and encrypted password 81 */ 82 public function hashSSHA($password) { 83 84 $salt = sha1(rand()); 85 $salt = substr($salt, 0, 10); 86 $encrypted = base64_encode(sha1($password . $salt, true) . $salt); 87 $hash = array("salt" => $salt, "encrypted" => $encrypted); 88 return $hash; 89 } 90 91 /** 92 * 解密 93 * @param salt, password 94 * returns hash string 95 */ 96 public function checkhashSSHA($salt, $password) { 97 98 $hash = base64_encode(sha1($password . $salt, true) . $salt); 99 100 return $hash; 101 } 102 103 } 104 105 ?>
在Index.php调用并输出返回值(这个文件地址就是接口的访问地址)
1 <?php 2 3 if (isset($_POST['tag']) && $_POST['tag'] != '') { 4 // tag是接口请求时post的值(方法名称),用来区别调用方法 5 $tag = $_POST['tag']; 6 7 //引用DB_Functions.php 8 require_once 'include/DB_Functions.php'; 9 $db = new DB_Functions(); 10 11 // 定义输入数组 12 $response = array("tag" => $tag, "error" => FALSE); 13 14 // 判断tag值 15 if ($tag == 'login') { 16 //获取login方法的post参数 17 $email = $_POST['email']; 18 $password = $_POST['password']; 19 20 // 通过email 和password获取用户信息 21 $user = $db->getUserByEmailAndPassword($email, $password); 22 if ($user != false) { 23 //找到用户信息 24 $response["error"] = FALSE; 25 $response["uid"] = $user["unique_id"]; 26 $response["user"]["name"] = $user["name"]; 27 $response["user"]["email"] = $user["email"]; 28 $response["user"]["created_at"] = $user["created_at"]; 29 $response["user"]["updated_at"] = $user["updated_at"]; 30 echo json_encode($response); 31 } else { 32 //没有找到用户信息 33 //输出错误信息 34 $response["error"] = TRUE; 35 $response["error_msg"] = "帐号或密码不正确!"; 36 echo json_encode($response); 37 } 38 } else if ($tag == 'register') { 39 //注册帐号 40 $name = $_POST['name']; 41 $email = $_POST['email']; 42 $password = $_POST['password']; 43 44 // 判断用户是否存在 45 if ($db->isUserExisted($email)) { 46 // 如果用户存在就返错误提示 47 $response["error"] = TRUE; 48 $response["error_msg"] = "用户已存在"; 49 echo json_encode($response); 50 } else { 51 // 新增用户 52 $user = $db->storeUser($name, $email, $password); 53 if ($user) { 54 //新增成功返回用户信息 55 $response["error"] = FALSE; 56 $response["uid"] = $user["unique_id"]; 57 $response["user"]["name"] = $user["name"]; 58 $response["user"]["email"] = $user["email"]; 59 $response["user"]["created_at"] = $user["created_at"]; 60 $response["user"]["updated_at"] = $user["updated_at"]; 61 echo json_encode($response); 62 } else { 63 // 新增失败,返回错误信息 64 $response["error"] = TRUE; 65 $response["error_msg"] = "服务器繁忙,操作失败"; 66 echo json_encode($response); 67 } 68 } 69 } else { 70 // tag值无效时 71 $response["error"] = TRUE; 72 $response["error_msg"] = "未找到您要的方法"; 73 echo json_encode($response); 74 } 75 } else { 76 $response["error"] = TRUE; 77 $response["error_msg"] = "您的参数不正确!"; 78 echo json_encode($response); 79 } 80 ?>