ajax登录和TP安全

Posted PHP菜鸟进阶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax登录和TP安全相关的知识,希望对你有一定的参考价值。

ajax登录

ajax异步登录,有效提升用户体验、减少服务器负载、减少带宽占用。

登录页面login.html
<input name="name" type="text" />
<input name="pwd" type="password" />
<span class="mb2">登录</span>
<!--引入jq-->
<script src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
$(function(){ $('.mb2').click(function(){  
//获取输入的用户名
var
name = $('input[name="name"]').val();  
//获取输入密码
var pwd = $('input[name="pwd"]').val();  
if(name==''||pwd==''){  alert('请输入用户名和密码'); }else{    
/*发送ajax请求: 
post形式发送用户名和密码到index控制器,
数据格式为json;返回数据如果为1登录成功*/
$.ajax({  
 type: "post",  
 url: "index.php",  
 data: {'username':name,'password':pwd},  
 dataType: "json",  
 success: function(msg){
if(msg.status!=1) alert('用户名或密码错误');
window.location.href="index.php"; } }); } }) })
</script>
控制器index.php
<?php
//开启session
session_start();
//notice错误不提示
error_reporting(E_ALL & ~E_NOTICE);
//status1时登录成功
$status = '';
//已登录过进入主页
if($_SESSION['admin']!='') header('Location:index.html');
//是否post抛来的数据
if(isset($_POST['username'])){
$username =$_POST['username'];  
//密码加密
$password = md5($_POST['password']);  
//连接数据库
$link = mysqli_connect('localhost',
'root','','1306_sql');  
//设置编码
mysqli_query($link,'set names utf8');  
/*显示不下这里回车了;
代码中回车要写成另一字符串,点连接起来*/
$sql = "select * from admin  where is_delete=1  and username='$username'  and password='$password'";  
//sql发送给数据库
$row=mysqli_query($link,$sql);  
//获取返回信息
$res=mysqli_fetch_assoc($row);  
//有结果将用户名保存在session
if($res){ $_SESSION['admin'] = $res['username']; $status = 1; } }
//判断是否为ajax请求
if(isset($_SERVER["HTTP_X_REQUESTED_WITH"])){  
//json形式返回ajax信息
echo json_encode(array('status'=>$status)); }else{  
//显示登录页面
require('login.html'); }
?>
  1. 先写出基本的登录html页面,用控制器加载显示出来;

  2. 引入jq库,不引入库jq用不了;

  3. 写js/jq,获取输入的用户名和密码;

  4. 发送ajax请求到控制器,控制器中要查看,在浏览器审查元素的网络中查看。

ThinkPHP框架安全机制

  1. 目录安全文件:每个文件夹下都有一个空的html页面,防止目录被异常访问。添加目录安全文件 ->在入口文件里面定义BUILD_DIR_SECURE常量

define('BUILD_DIR_SECURE', true);
  1. 表单安全:

    1. ThinkPHP内置的自动验证(模型类中定义$_validate)和自动完成(在模型类里面通过$_auto)功能可以有效地对表单提交的数据安全加以控制;

    2. 表单令牌有效防止表单的重复提交等安全防护

  2. 数据安全:

    1. 查询条件尽量使用数组形式,如果使用字符串形式使用预处理机制

    2. 自动过滤接收数据和添加到数据库的数据

  3. 上传安全:对上传的后缀、类型、大小进行检查


以上是关于ajax登录和TP安全的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序实现微信登陆(TP5后端)

TP3.2TP3.2下实现ajax分页(原创+亲测可用)

tp框架表单验证 及ajax

登录/会话 cookie、Ajax 和安全性

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

tp5的ajax分页实现