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);
- ?>