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学习之字符串比较和查找
Apr 17 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
Jun 16 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
PHP与Java对比学习日期时间函数
Jul 03 PHP
PHP静态成员变量
Feb 14 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
Oct 15 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 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读取javascript设置的cookies的代码
2010/04/12 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
Gird事件机制初级读本
2007/03/10 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
js Date概念详细介绍
2013/11/22 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
python列表去重的二种方法
2014/02/14 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
Python 从相对路径下import的方法
2018/12/04 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
Python Gitlab Api 使用方法
2019/08/28 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
比利时香水网上商店:NOTINO
2018/03/28 全球购物
求职信范文怎么写
2014/01/29 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
通知怎么写?
2019/04/17 职场文书
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
MySQL多表查询机制
2022/03/17 MySQL