前台

{include file='public/header' /}
<body class="login-bg">
<div class="login layui-anim layui-anim-up">
<div class="message">x-admin2.0-管理登录</div>
<div id="darkbannerwrap"></div>
<form>
<input name="username" type="text" placeholder="用户名">
<hr class="hr15">
<input name="password" type="password" placeholder="密码">
<p id="infoerror" style="color:red;"></p>
<hr class="hr15">
</form>
<button id="loginbutton" class="layui-btn layui-btn-lg layui-btn-fluid" onclick="dologin()"><h3>登入</h3></button>
</div> <script>
function dologin() { var username = $("input[name='username']").val();
var password = $("input[name='password']").val();
if (username == '') {
$("#infoerror").text('请填写用户名'); return;
}
if (password == '') {
$("#infoerror").text('请填写密码'); return;
}
var data = {
'username': username,
'password': password
};
$.post("{:url('check')}", data, function (res) {
if (res.code == 0) {
layer.msg(res.msg);
setTimeout("location.href='{:url('home/index')}'", 500); } else if (res.code == 1) {
$("#infoerror").text(res.msg);
return;
}
else if (res.code == 2) {
$("#infoerror").html(res.msg);
return;
}
}, 'json');
}
</script>
</body>
</html>

后台

<?php
namespace app\admin\controller;
use app\admin\common\Base;
use think\Controller;
use think\Request;
use think\Db;
use think\Session;
class Login extends Base
{
//首页
public function index()
{
return $this->view->fetch('login');
}
/* 验证用户身份*/
public function check()
{
if($this->alreadyLogin()){
exit(json_encode(array('code'=>2,'msg'=>'用户'.Session::get('admin')['username'].'已登录,<a href='.url('home/index').'>点我跳转到管理界面</a>')));
}
$username = trim(input('post.username'));
$password = trim(input('post.password'));
if(!$username){
exit(json_encode(array('code'=>1,'msg'=>'请填写用户名')));
}
if(!$password){
exit(json_encode(array('code'=>1,'msg'=>'请填写密码')));
}
//从数据库查询到数组
$data = Db::table('admin')->where('username',$username)->find(); //如果查到为空
if(!$data){
exit(json_encode(array('code'=>1,'msg'=>'用户名不存在')));
} //如果密码匹配
if($data['password'] != md5($username.$password)){
exit(json_encode(array('code'=>1,'msg'=>'密码错误')));
}
//验证通过
//设置session
Session::set('admin',$data);
exit(json_encode(array('code'=>0,'msg'=>'登录成功')));
} /*退出登录*/
public function logout()
{
//删除session
Session::delete('admin'); //执行成功,并返回登录界面
$this->success('注销成功,正在返回···','admin/login/index');
}
}

前台后台$.psot交互的更多相关文章

  1. 【Win 10 应用开发】Toast通知激活应用——前台&后台

    老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎哟,这怎么回答呢,从短期来说,加入学生会有点用,至少可以娱乐一下,运气好的话, ...

  2. Javascript 中ajax实现前台向后台交互

    第一种情况:前台传入字符串参数 后台返回json字符串.或是json数组  代码如下: 前台: $.ajax({ url: "xxx/xxx.action", data: &quo ...

  3. java企业级开发的实质就是前台后台如何交互的-各个对象之间如何交互,通信的-程序执行的流程是怎样的

    1.开山鼻祖-servlet 如何将url 和 strvlet(.java文件)联系起来的 顺平说的:在xml中,url先找到xml,由对应的url的得到servlet那个类,然后就可以输入一个网址访 ...

  4. SprimgMVC学习笔记(八)—— SpringMVC与前台json数据交互

    一.两种交互形式 可以看出,前台传过来的方式有两种,一种是传json格式的数据过来,另一种就是在url的末尾传普通的key/value串过来,针对这两种方式,在Controller类中会有不同的解析, ...

  5. Asp.net中后台C#数组与前台Javascript数组交互

    摘自:http://blog.csdn.net/a6225301/article/details/20003305 在上一篇<asp.net中javascript与后台c#交互>中实现了前 ...

  6. 封装AJax实现JSON前台与后台交互

    实践技术点:1.AJax自定义封装 2.后台序列化与反序列化JSON 3.客户端解析JSON字符串,处理DOM 实现代码如下: 1.JS脚本代码:   1 /*** NOTE:AJAX处理JS TIM ...

  7. asp.net mvc--传值-前台->后台

    前端传值->后端 一.Model Binding 方式 前台 @model ADMgr.Web.Models.ListModel 后台 [HttpPost] public ActionResul ...

  8. .net中后台c#数组与前台js数组交互

    第一步:定义cs数组  cs文件里后台程序中要有数组,这个数组要定义成公共的数组.  public string[] lat = null;  public string[] lng = null; ...

  9. 批量删除checkbox前台后台

    <%@ page contentType="text/html;charset=UTF-8" %><%@ include file="/WEB-INF/ ...

随机推荐

  1. Python标准库之re模块

    re模块用于正则表达式. 正则表达式在线测试:http://c.runoob.com/front-end/854 正则表达式元字符可以参考:https://www.w3cschool.cn/zheng ...

  2. itchat 爬了爬自己的微信通讯录

    参考 一件有趣的事: 爬了爬自己的微信朋友 忘记从谁那里看到的了,俺也来试试 首先在annconda prompt里面安装了itchat包 pip install itchat 目前对python这里 ...

  3. ubuntu中的Linux安装程序的方法

    Ubuntu: 1.下载.deb文件,下载后,cd到.deb文件目录,然后使用sudo dpkg -i xxx.deb      dpkg=debian packager的缩写  -i=install ...

  4. python中的strip()方法

    python中字符串str的strip()方法 str.strip()就是把字符串(str)的头和尾的空格,以及位于头尾的\n \t之类给删掉. 例1: str=" python " ...

  5. python接口自动化-requests-toolbelt处理multipart/form-data

    1.requests-toolbelt官方文档:https://pypi.org/project/requests-toolbelt/ 2.环境安装 pip install requests-tool ...

  6. 题解【AcWing902】最短编辑距离

    题面 经典的最长公共子序列模型. 我们设 \(dp_{i,j}\) 表示 \(a_{1...i}\) 与 \(b_{1...j}\) 匹配上所需的最少操作数. 考虑删除操作,我们将 \(a_i\) 删 ...

  7. Loj514「LibreOJ β Round #2」模拟只会猜题意 - 模拟

    注意初始化即可. #include <bits/stdc++.h> using namespace std; ],a[],t1,t2,t3,t4; int main(){ memset(a ...

  8. 打包Windowsform项目出现File 'Cognex.VisionPro3D.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'错误

    错误信息: 个人理解此错误的大概意思是:打包的文件是64位的但是打包后的文件设置的是32位的,就出现冲突了. 解决方案:选择打包程序项目的属性窗口设置TargetPlatform属性为对应的值,本项目 ...

  9. C++——指针1

    7.关于内存地址 内存空间的访问方式:通过变量名访问,通过地址访问: 地址运算符:& 如:int var; 则&var表示变量var的内存起始地址: //& 出现在声明语句中出 ...

  10. 表结构修改以及sql增删改查

    修改表结构 修改表名 alter table 表名 rename 新名 增加字段 alter table 表名 add 字段名 数据类型 约束 删除字段 alter table 表名 drop 字段名 ...