用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 ...
随机推荐
- SQL SERVER 变量的使用和样例
定义和使用局部变量:说明: 局部变量是用户可自定义的变量. 作用范围仅在程序内部. 局部变量的名称是用户自定义的,命名的局部变量名要符合SQL Server 2000标识符命名规则=>以@开 在 ...
- Python魔法方法总结及注意事项
1.何为魔法方法: Python中,一定要区分开函数和方法的含义: 1.函数:类外部定义的,跟类没有直接关系的:形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法 ...
- #使用parser获取图片信息,输出Python官网发布的会议时间、名称和地点。
# !/usr/bin/env/Python3 # - * - coding: utf-8 - * - from html.parser import HTMLParser import urllib ...
- 【css笔记(2)】如何给元素应用规则?
css选择器 在介绍之前我么你先来看看css大致分为几种选择器: 1.类型选择器(元素选择器) 2.后代选择器(元素的所有后代) 3.伪类(:active, :hover, :focus, :link ...
- Linux增加磁盘操作
首先,增加磁盘分为4个大步骤:1.插上硬盘:2.分区;3.格式化4.挂载,然后分别说说以上四步的具体事项和注意内容. 1.插上硬盘(本位以虚拟机为例) 新买来一块磁盘,把磁盘插到主板上.虚拟机中操作如 ...
- 机器学习:从编程的角度理解BP神经网络
1.简介(只是简单介绍下理论内容帮助理解下面的代码,如果自己写代码实现此理论不够) 1) BP神经网络是一种多层网络算法,其核心是反向传播误差,即: 使用梯度下降法(或其他算法),通过反向传播来不断调 ...
- java中多种写文件方式的效率对比实验
一.实验背景 最近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出.字符流输出.内存文件映射输出.前两种又可以分为 ...
- Python装饰器实现几类验证功能做法(续)
:昨天聊了一下构造.今天试了一下.感觉昨天聊的还是不够细化.今天结合代码实现,加以一点补充. 首先观察下面这个例子 from functools import wrapsdef decorator(f ...
- 18个你可能不相信是用CSS制作出来的东西
与流行的看法相反,CSS不仅仅是用来提供一个WEB页面的基本风格,以使它看起来更有吸引力.还有很多其他的事情,CSS也可以做的很好.由于它创建动画和交互的能力,CSS集合HTML以及JavaScrip ...
- 【JAVAWEB学习笔记】12_Http&Tomcat
一.Http协议 1.什么是Http协议 HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的 一种网络协议.所有的WWW文件都必须遵守这 ...