首先今天解决了一个路由上的问题,因为tp6是多应用模式,导致全局的那个配置路由似乎不起作用,只有那个hello函数能生效,下面的怎么配都不行。而且默认访问的似乎一直是index下的内容,而修改默认访问路径怕出现其他问题,也不敢动。浏览器搜了好多人症状跟我这个一样,但是每个人的解决方法都不同,我也试了直接在Admin下单独创建路由,但是还是绕不过Admin这个坎。于是便有了我下面的解决方案:
目标:通过输入域名直接能访问到网站,而不是“域名/admin”
方案:如图,需要说明的是如果像我一样用的是修改别人tp5的代码,一定要记得在controller文件中改一些代码,这就不细说了。
- 今天开始研究业务逻辑之登陆验证
前端对验证码的描述,其中知识点有:
<input name="verify" required="required" class="input-text size-L" type="text"
placeholder="验证码" style="width:150px;">
<img style="height: 42px;width: 193px;" id="captcha" src="
{:url('Index/Login/verify')}" alt="captcha" onclick="refreshVerify()"/>
<a style="margin-left: 200px;" href="javascript:refreshVerify();">
看不清,换一张</a>
- input中required=“required” 的意思是:“必填字段,不填会报错”。
- src里的url对应的是后端文件里的东西
- 刷新二维码的函数:
function refreshVerify() {
let ts = Date.parse(new Date())/1000;
console.log(ts);
$('#captcha').attr("src", "{:url('Index/Login/verify')}?"+Math.random());
}
- 关于状态码:200 OK 请求成功。一般用于GET与POST请求
400 Bad Request 客户端请求的语法错误,服务器无法理解
//在这里执行表单提交
$(form).ajaxSubmit({
type: "post",
dataType: "json",
url: "{:url('Login/login')}",
data: {
"password":md5("pwwz"+$('input[name="password"]').val()+"aino").toString()
},
success: function (res) {
console.log(res.datas);
// return true;
if (res.code == 200) {
top.layer.msg(res.msg , {icon: 1, time: 3000});
location.replace("{:url('common/index')}")
}
if (res.code == 400) {
top.layer.msg(res.msg , {icon: 0, time: 3000});
}
},
error: function (res) {
layer.msg(res.msg, {icon: 0, time: 3000});
},
});
在后端代码中,有以下几点需要看的:
- 安装验证码库之后就可以直接生成了
//验证码生成
public function verify()
{
return captcha::create();
}
public function login()
{
if ($this->request->isPost()) {
$posts = $this->request->post();
// dump($posts);
if(!captcha_check($posts["verify"])){
return $this->returnMsg(400, "验证码错误,验证码已过期!");
};
//管理员/开发人员跳转
if ($posts["auth"] == 10) {
$userdata = Db::table('adminer')->where("jobnum", $posts['username'])->find();
if ($userdata) {
if ($this->mmd5($posts["password"]) == $userdata["password"]) {
session("username", $userdata["name"]);
session("ad_id", $userdata["ad_id"]);
session("ac_id", null);
session("type", 1);//视频,文章,通知的标志:1-学校 0-学院
return $this->returnMsg(200, "登录成功");
} else {
return $this->returnMsg(400, "用户名不存在或密码错误!");
}
} else {
return $this->returnMsg(400, "用户名不存在或密码错误!");
}
} //实验员跳转
else if ($posts["auth"] == 5) {
$userdata = Db::table("teacher_acader")->where("jobnum", $posts["username"])->where("type", 1)->find();
if ($userdata) {
if ($this->mmd5($posts["password"]) == $userdata["password"]) {
session("username", $userdata["name"]);
session("ac_id", $userdata["ac_id"]);
session("ta_id", $userdata["ta_id"]);
session("type", 0);
return $this->returnMsg(200, "登录成功");
} else {
return $this->returnMsg(400, "用户名不存在或密码错误!");
}
} else {
return $this->returnMsg(400, "用户名不存在或密码错误!");
}
}
}
return View::fetch("common/login");
}
//json格式返回信息
public function returnMsg($code, $msg = "", $data = [])
{
$return_data["code"] = $code;
$return_data["msg"] = $msg;
$return_data["datas"] = $data;
return json($return_data);
}
private function mmd5($password)
{
$before = "*&%^$#%^&&*44adgg^%^asdfg1*_sbea36";
$after = "*4aha@$#%^%&15165(*&%$+-15sgsfdg15";
return md5($before . $password . $after);
}
}