用PHP和Ajax进行前后台数据交互——以用户登录为例
很多网站中都有用户登录系统,要完成用户的注册和登陆,就一定要用到前后台的数据交互。在这里以简单的用户注册和登陆为例介绍一下前后台交互的大致流程。
首先,我们来做一个简单的登陆界面。

这里为了方便我使用了bootstrap插件
<form class="form-horizontal">
<div class="form-group">
<label>用户名</label>
<input type="text" class="form-control" name="userName"/>
</div>
<div class="form-group">
<label>密码</label>
<input type="password" class="form-control" name="pwd"/>
</div>
<div class="form-group btns">
<input type="button" class="btn btn-primary" value="登录系统" id="submit"/>
<a type="button" class="btn btn-success" href="reg.php"/>注册账号</a>
</div>
</form>
先做一个注册的功能,点击注册账号跳转到注册的页面。注册的页面跟登录页面类似,点击返回登陆能回到登录页。

给几个input添加name
<input type="text" class="form-control" name="userName"/>
<input type="password" class="form-control" name="pwd" />
<input type="password" class="form-control" name="rePwd" />
<input type="button" class="btn btn-primary" value="确定注册" id="submit"/>
接下来开始写JS代码,点击注册按钮,触发click事件。
1、我们把form表单传递的信息通过serialize()将转为字符串。
2、通过post()将数据提交给后台处理,第一个参数为提交的文件,第二个参数是传递的数据,这里我们写为对象的形式。
$(function(){
$("#submit").on("click",function(){
var str = $("form").serialize();
$.post("doReg.php",{"formData":str},function(data){
if(data=="true"){
alert("注册成功!即将跳转登陆页!");
location = "login.php";
}else{
alert("注册失败!因为啥我不知道!");
}
});
});
});
然后我们转到后台脚本
1、将接收的数据以"[;]"分隔,便于我们到时候分隔字符串。
$str = $_POST["formData"]."[;]";
2、这里我们先将数据写入一个txt文件,返回新增字段的长度,后期可以将数据保存到数据库。
$num = file_put_contents("user.txt", $str,FILE_APPEND);
3、 然后给前台发送一个数据,当$num>0说明文件写入了内容。
if($num>0){
echo "true";
}else{
echo "false";
}
这样我们就完成了一个简单的前后台数据交互。
完成注册以后我们可以回到登陆页面。
登陆页面的JS代码也是类似的
$(function(){
$("#submit").on("click",function(){
var str = $("form").serialize();
$.post("doLogin.php",{"formData":str},function(data){
if(data=="true"){
location = "index.php?name="+$("input[name='userName']").val();
}else{
alert("用户名或密码错误!!!");
}
});
});
});
接下来我们来进行后台操作
1、首先取到前台发来的数据
$str = $_POST["formData"];
2、然后将接收到的数据按照"&"符号进行分隔,因为我们存入的数据都是中间以&分隔,最后以[;]结尾

list()的用法是可以将分隔之后的各段的字符串分别赋予不同的变量。
list($userName) = explode("&", $str);
list(,$pwd) = explode("&", $str);
3、然后我们要取到存数据的文件
$users = file_get_contents("user.txt");
4、然后将每个用户区分,这次我们用[;]分隔
$userArr = explode("[;]", $users);
5、然后输入的登陆信息是不是跟我们文件里注册的用户信息一致,一致说明输入的信息正确,就可以结束脚本并给前台传回true
foreach ($userArr as $user) {
list($realName) = explode("&", $user);
list(,$realPwd) = explode("&", $user);
if($userName==$realName&&$pwd==$realPwd){
echo "true";
die();
}
}
echo "false";
然后在前台判断如果传回的是true就可以跳转页面了。
用PHP和Ajax进行前后台数据交互——以用户登录为例的更多相关文章
- 测开之路一百五十四:ajax+json前后台数据交互
在实际工作中,前后端数据交互大部分都是用的json格式,后端把数据处理完后,把json传给前端,前端再解析 项目结构 models里面加入把数据转为字典的方法 from datetime import ...
- Django学习笔记(8)——前后台数据交互实战(AJAX)
这里将自己这段时间学习的关于前后台数据交互的笔记写在这里,这里包含了Django传输数据给JS,AJAX的相关问题,跨域问题,如何解决AJAX的跨域问题等等.比较凌乱,请看到这篇博客的盆友见谅,如果我 ...
- Spring MVC 前后台数据交互
本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址地址:<Spring MVC 前后台数据交互> 1.服务端数据到客户端 (1)返回页面,Controller中方法 ...
- Phonegap开发的前后台数据交互
在用Phonegap开发时,需要进行前后台数据交互,在网上找资料,很多东西让人一头雾水,最后借鉴了下面的博客: http://blog.sina.com.cn/s/blog_681929ae01017 ...
- vue仓库、组件间通信、前后台数据交互、前端储存数据大汇总
目录 路由重定向 仓库介绍 vuex插件:可以完成任意组件间信息交互(移动端) 前端存储数据大汇总 前后台交互方式(重点) 前后台数据交互 axios插件:完成前后台ajax交互的 同源策略 - 前后 ...
- 玩转Web之Json(二)----jquery easy ui + Ajax +Json+SQL实现前后台数据交互
最近在学Json,在网上也找过一些资料,觉得有点乱,在这里,我以easy ui的登录界面为例来说一下怎样用Json实现前后台的数据交互 使用Json,首先需要导入一些jar包,这些资源可以在网上下载到 ...
- Asp.net--Ajax前后台数据交互
转自:http://www.cnblogs.com/guolebin7/archive/2011/02/22/1961737.html 代码由前后台两部分组成: 前台:(新建一个Default.asp ...
- 基于ssh框架的highcharts前后台数据交互实例
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用.HighCh ...
- GoAhead4.1.0 开发总结三(GoAction+Ajax实现局部数据交互)
环境 官方文档:https://www.embedthis.com/goahead/doc/ 源码下载: goahead-4.1.0-src.tgz 系统平台:Ubuntu 12.04.4 gcc v ...
随机推荐
- centeOS6.5 RPM方式安装MySQL5.6
RPM方式安装MySQL5.6 a. 检查MySQL及相关RPM包,是否安装,如果有安装,则移除(rpm –e 名称) 1 [root@localhost ~]# rpm -qa | grep -i ...
- hdu1151有向图的最小顶点覆盖
有向图的最小路径覆盖=V-二分图最大匹配. Consider a town where all the streets are one-way and each street leads from o ...
- 产品经理学Python:逻辑判断与运算符
这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...
- getRequestURI()与getRequestURL()的区别
引于: http://hi.baidu.com/cloudxpc request.getRequestURI() 返回值类似:/xuejava/requestdemo.jsprequest.getRe ...
- UML总结(对九种图的认识和如何使用Rational Rose 画图)
UML是一种建模语言,是系统建模的标准.我们之所以建模是因为大规模的系统设计时相当复杂的,当系统比较复杂时就会涉及到以下这几个问题: 开发人员如何与用户进行沟通来了解系统的需求? 开发人员之间如何沟通 ...
- 单页应用跳转ui-view,$stateProvider,$urlRouterProvider
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta charset="UTF- ...
- Java Map List 的使用
项目中有一个需求是将年月分两行显示: java后台代码 创建一个demo,使用Map List 拆分年月: package demo; import java.util.ArrayList;impor ...
- poj2481 Cows 树状数组
题目链接:http://poj.org/problem?id=2481 解题思路: 这道题对每组数据进行查询,是树状数组的应用.对于二维的树状数组, 首先想到排序.现在对输入的数据按右值从大到小排序, ...
- Tomcat--安装与部署(一)
一.Tomcat背景 自从JSP发布之后,推出了各式各样的JSP引擎.Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JS ...
- Linux(ubuntu)下jdk&tomcat的安装
1.下载相应版本的jdk及tomcat:sudo wget ${url} 2.解压: tar zxvf jdk-7u79-linux-x64.tar.gz tar zxvf apache-tomca ...