1.会话Session、缓存Cookie
session,可以理解为一种不断验证口令以获得用户持久链接的“访问机制”。
cookie,是当前访问的页面,由后台发往前台页面数据时所夹带的一小段信息。
原理说明:
当后台返回给前台数据的时候,添加的一段“持久”的信息,
因此,这段信息必须在PHP后台代码中插入添加。
相关技术:
① PHP中“$_GET”和“$_POST”对象,用于在PHP中获取 get 和 post 请求的数据对象;
② PHP中的“time()”方法用户获取当前的时间戳,单位是秒s,支持加减法;
③ PHP中 setcookie('key' , 'value' , 过期时间),用于设置缓存;
④ HTML中 document.cookie 用于获取页面所保存的 cookie 值,类型是字符串。
2.jqAjax
ajax是一种前后台数据交互的手段。
原生的ajax实现比较麻烦,需要借助 xmlhttprequest对象构建。
JQajax则是jQuery已经封装好的现成方法。
说明:
① get无参请求,一般用于前台界面向后台请求获取数据,但不会向后台发送数据;
$_GET是PHP中的内置对象,用于接受前台发送过来的 get 请求数据包;
② get有参请求,一般用于前台界面向后台有条件(参数)的请求获取数据,一般参数都比较小;
③ post请求,一般用于登录、注册等保密性较高的场景;
$_POST是PHP中的内置对象,用于接受前台发送过来的 post 请求数据包;
④ echo 用于返回前端请求的指定数据;
⑤ json_encode对象,用于将数组或对象等复杂值转换成 json 格式的数据。
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ajax请求</title>
<script src="JScodeFile/jquery-1.8.3.js"></script>
</head>
<body>
<span>Name</span><input type="text" class="userName"><br>
<span>Code</span><input type="password" class="userCode"><br>
<button>Get无参数</button>
<button>Get有参数</button>
<button>Post请求</button>
<script>
var $userName = $('.userName');
var $userCode = $('.userCode');
var $btns = $('button');
// Get无参数请求
$btns.eq(0).click(function () {
$.ajax({
//定义请求方式为 get
type:'get',
//设置请求发送的后台地址
url:'20210106Ajax.php',
//定义数据交互的格式
dataType:'json',
//设置回调函数,后台返回数据时,函数自动执行。
success:function (res) {
console.log(res);
console.log(res.msg2);
}
});
})
// Get有参数请求
$btns.eq(1).click(function () {
$.ajax({
//定义请求方式为 get
type:'get',
//设置请求发送的后台地址,以及需要发送的参数值,使用“?”及字符串拼接的形式
url:'20210106Ajax.php?userName='+$userName.val()+"&userCode="+$userCode.val(),
//定义数据交互的格式
dataType:'json',
//设置回调函数,后台返回数据时,函数自动执行。
success:function (res) {
console.log(res);
console.log(res.msg2);
}
});
})
// Post请求
$btns.eq(2).click(function () {
$.ajax({
//定义请求方式为 get
type:'post',
//设置请求发送的后台地址,以及需要发送的参数值,使用“data”发送参数
url:'20210106Ajax.php',
data:{
uName:$userName.val(),
uCode:$userCode.val(),
},
//定义数据交互的格式
dataType:'json',
//设置回调函数,后台返回数据时,函数自动执行。
success:function (res) {
console.log(res);
console.log(res.msg2);
}
});
})
</script>
</body>
</html>
<?php
/*
// get 无参数请求
$backData1 = array ('msg1'=>'oneSuccess','msg2'=>'twoSuccess');
//使用 json_encode()将数据转换成 json 格式,并通过 echo 将其返回给前台。
echo json_encode($backData1);
// get 有参数请求
$backData2 = array ('msg1'=>'oneSuccess','msg2'=>$_GET);
//使用 json_encode()将数据转换成 json 格式,并通过 echo 将其返回给前台。
echo json_encode($backData2);
*/
// post 请求
$backData2 = array ('msg1'=>'oneSuccess','msg2'=>$_POST);
//使用 json_encode()将数据转换成 json 格式,并通过 echo 将其返回给前台。
echo json_encode($backData2);
?>
3.登录交互案例
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<script src="JScodeFile/jquery-1.8.3.js"></script>
</head>
<body>
<span>Name:</span><input type="text" class="userName">
<span>Code:</span><input type="password" class="userCode">
<button>用户登录</button>
<script>
$('button').click(function () {
$.ajax({
type:'post',
url:'20210106Ajax.php',
data:{
userName:$('.userName').val(),
userCode:$('.userCode').val(),
},
dataType:'json',
success:function (fBack) {
console.log(fBack);
if (fBack.result==1){
alert('登录成功!')
}else{
alert('用户名或密码错误!')
}
},
})
});
</script>
</body>
</html>
<?php
$usName = $_POST['userName'];
$usCode = $_POST['userCode'];
$nameList = array('Rebecca'=>'111111');
$fBack = array();
if($usCode==$nameList[$usName]){
$fBack['result']=1;
}else{
$fBack['result']=0;
};
echo json_encode($fBack);
?>