PHP实现的注册,登录及查询用户资料功能API接口示例


Posted in PHP onJune 06, 2017

本文实例讲述了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)));
?>

注:代码中的lib_replace_end_tag函数为自定义字符串过滤函数,具体可参考:浅析php过滤html字符串,防止SQL注入的方法

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
对盗链说再见...
Oct 09 PHP
用PHP编程开发“虚拟域名”系统
Oct 09 PHP
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
php一些公用函数的集合
Mar 27 PHP
PHP中其实也可以用方法链
Nov 10 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
php ios推送(代码)
Jul 01 PHP
浅析PHP文件下载原理
Dec 25 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
Apr 27 PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 PHP
php 三大特点:封装,继承,多态
Feb 19 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
May 30 PHP
PHP PDO操作MySQL基础教程
Jun 05 #PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 #PHP
Windows 下安装 swoole 图文教程(php)
Jun 05 #PHP
PHP手机号中间四位用星号*代替显示的实例
Jun 02 #PHP
总结一些PHP中好用但又容易忽略的小知识
Jun 02 #PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 #PHP
Yii2中简单的场景使用介绍
Jun 02 #PHP
You might like
PHP中$_SERVER的详细参数与说明
2008/07/29 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
Python素数检测实例分析
2015/06/15 Python
Python运算符重载详解及实例代码
2017/03/07 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
详解Python3的TFTP文件传输
2018/06/26 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
python实现大文件分割与合并
2019/07/22 Python
python生成requirements.txt的两种方法
2019/09/18 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
电钳专业个人求职信
2014/01/04 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
会议主持词开场白
2015/05/28 职场文书
python如何做代码性能分析
2021/04/26 Python
Python 统计序列中元素的出现频度
2022/04/26 Python