当前位置: 首页 > news >正文

php热身2:CRUD with Ajax

这次热身是一个会员管理系统,包括会员注册、登录、资料修改功能,使用ajax技术

1.建表

use common_module;
create table if not exists member(
user_id int auto_increment primary key,
email varchar(60) comment '会员邮箱',
user_name varchar(60) comment '用户名',
password varchar(32) comment '密码',
question varchar(255) comment '找回密码问题',
answer varchar(255) comment '问题答案',
sex tinyint(1) comment '性别 1男 2女',
reg_time date comment '注册时间',
birthday date comment '出生年月日',
last_login date coment '最后一次登录时间',
last_ip varchar(15) comment '最后一次登录IP',
visit_count smallint(5) comment '登录次数',
parent_id mediumint(9) comment '推荐人id',
nickname varchar(60) comment '昵称',
address varchar(60) comment '地址',
phone varchar(20) comment '手机号',
is_adm smallint(6) comment '管理权限'
)CHARSET=utf8;

2.数据库连接类
书上没用PDO。但是pdo的封装,因为pdo函数用的不多,没啥经验,就先放放,只搞一个fetchAll好了。

3.引入公共包含文件
建一个inc.php,里面包含了所有要包含的文件,以及数据库连接实例和模版实例,以后只要引入它就行了,百宝箱的感觉。

4.ajax
稍微仔细写一下。
在html或者模版页中,引入js文件。js文件里面定义了一些事件处理函数,比如某文本框失去焦点后发起ajax请求,得到结果后在html或者模版页上进行显示,比如提示用户名已经注册等。
其中ajax的请求,需要指定url,也就对应到了后台的php文件上。
js文件中函数的编写,可以使用jquery。

网上找到一个很简单的例子:
check.html中进行用户名注册,当文本框失去焦点后,引入的check.js里的代码被执行,向check.php发起请求,得到结果后将check.html中的标签的属性进行修改或增加(提示用户名已经注册或未注册)
这个例子并没有自行编写ajax发送请求的底层函数,而是通过使用jquery,jquery自带了ajax功能。

jQuery还不怎么会用,例子中用到的几个函数:
ready()函数:在DOM加载后执行
$.post(url, data, callback_function()):发起ajax的POST请求,传入数据为data,回调函数为callback_function()。e.g. 在回调函数中进行ajax查询结果的后续处理。

好了,ajax流程讲清楚了,落实到细节上就可以了。当然其中少不了check.php中连接到数据库进行查询与判断:

<?php
/**
 * Created by PhpStorm.
 * User: Chris
 * Date: 2016/5/15
 * Time: 11:01
 */

session_start();
include('inc.php');
//demo来自天涯PHP博客 http://blog.phpha.com
if(_post('name')){
    $username = _post('name');
    $sql = "select * from member where user_name=?";
    $args = array($username);
    $result=$db->fetchAll($sql, $args);
    if(sizeof($result)){ //找到了
        exit('1');
    }
    exit('0');
}else if(_post('email')){
    $email = _post('email');
    $sql = "select * from member where email=?";
    $args = array($email);
    $result=$db->fetchAll($sql, $args);
    if(sizeof($result)){ //找到了
        exit('1');
    }
    exit('0');
}
?>

5.注册、登录、修改、查看
和前面一个例子相比,多了session的管理。登录后需要把用户的信息赋值给session,这样在页面之间跳转的时候就可以进行验证判断了。

6.管理员模块
书上和作者给出的代码中没有进行真正的权限管理处理,不过一个简单的办法,就是当用户登录后,会将信息赋值给session,那么是否是管理员只需要通过session就可以判断了,那么只要session中管理员项验证通过就可以进入管理员模块了。

7.下载链接
http://pan.baidu.com/s/1hsoA6QK

相关文章:

  • HIVE中的自定义函数
  • js创建数组的三个方式
  • 零基础小白也能做测试经理(高级测试工程师)?!
  • 【Django】Django Debug Toolbar调试工具配置
  • Jenkins2.3重点备忘
  • 4——PHP比较复制运算符
  • 利用amoeba实现mysql读写分离
  • XML序列化点滴
  • sqlalchemy(二)高级用法
  • eclipse properties 插件
  • CLR存储过程
  • 经典-输出规律的数字序列
  • 运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析
  • datepicker使用
  • Xargs用法详解(原创)
  • $translatePartialLoader加载失败及解决方式
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • ERLANG 网工修炼笔记 ---- UDP
  • Java 网络编程(2):UDP 的使用
  • MD5加密原理解析及OC版原理实现
  • Python学习之路13-记分
  • React的组件模式
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 前端知识点整理(待续)
  • 深度解析利用ES6进行Promise封装总结
  • 通过npm或yarn自动生成vue组件
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​flutter 代码混淆
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • $jQuery 重写Alert样式方法
  • (20050108)又读《平凡的世界》
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (4.10~4.16)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (蓝桥杯每日一题)love
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (三) diretfbrc详解
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)h264中avc和flv数据的解析
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET6 命令行启动及发布单个Exe文件
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [20171106]配置客户端连接注意.txt
  • [20190416]完善shared latch测试脚本2.txt