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 相关文章推荐
PHP下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
Mar 18 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 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计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
Python collections模块使用方法详解
2019/08/28 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
python实现从wind导入数据
2019/12/03 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
最好的商品表达自己:Cafepress
2019/09/04 全球购物
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
《大江保卫战》教学反思
2014/04/11 职场文书
党员示范岗材料
2014/12/19 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
ant design vue的form表单取值方法
2022/06/01 Vue.js