<?php
@header("content-Type: text/html; charset=utf-8");
date_default_timezone_set('Asia/Shanghai');
date_default_timezone_set('PRC');
error_reporting(E_ALL & ~E_NOTICE);
session_start();
//if(defined('IN_CRONLITE'))return;
define('SYSTEM_ROOT', dirname(__FILE__).'/');
define('ROOT', dirname(SYSTEM_ROOT).'/');
define('TEMPLATE_ROOT', ROOT.'Template/');
define('PAYTEMPLATE_ROOT', ROOT.'Submit/Template/');
if (phpversion() < '5.6') {
exit('<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>站点提示信息</title>
<style type="text/css">
html{background:#eee}body{background:#fff;color:#333;font-family:"微软雅黑","Microsoft YaHei",sans-serif;margin:2em auto;padding:1em 2em;max-width:700px;-webkit-box-shadow:10px 10px 10px rgba(0,0,0,.13);box-shadow:10px 10px 10px rgba(0,0,0,.13);opacity:.8}h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px "微软雅黑","Microsoft YaHei",,sans-serif;margin:30px 0 0 0;padding:0;padding-bottom:7px}#error-page{margin-top:50px}h3{text-align:center}#error-page p{font-size:9px;line-height:1.5;margin:25px 0 20px}#error-page code{font-family:Consolas,Monaco,monospace}ul li{margin-bottom:10px;font-size:9px}a{color:#21759B;text-decoration:none;margin-top:-10px}a:hover{color:#D54E21}.button{background:#f7f7f7;border:1px solid #ccc;color:#555;display:inline-block;text-decoration:none;font-size:9px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;-webkit-border-radius:3px;-webkit-appearance:none;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.button.button-large{height:29px;line-height:28px;padding:0 12px}.button:focus,.button:hover{background:#fafafa;border-color:#999;color:#222}.button:focus{-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2)}.button:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}table{table-layout:auto;border:1px solid #333;empty-cells:show;border-collapse:collapse}th{padding:4px;border:1px solid #333;overflow:hidden;color:#333;background:#eee}td{padding:4px;border:1px solid #333;overflow:hidden;color:#333}
</style>
</head>
<body id="error-page">
<h3>站点提示信息</h3>
当前PHP版本('.phpversion().'),请切换到5.6以上方可使用!
</body>
</html>');
}
include("config.php");
include("authcode.php");
try {
$hsot=$dbconfig['hsot'];
$dbname=$dbconfig['dbname'];
$dbh = new PDO("mysql:host=$hsot;dbname=$dbname", $dbconfig['user'], $dbconfig['pwd']);
} catch (PDOException $e) {
//exit(json_encode(array('code'=>404,'msg'=>'链接数据库失败:'.$e->getMessage())));
exit('链接数据库失败:'.$e->getMessage());
}
require_once("sendmail.php");
require_once("obtanin.php");
/**
*邮件调用代码
*if (send_mali("3585812979@qq.com","标题","<p>内容</p>")) {
* echo "成功";
*} else {
* echo "失败";
*}
**/
?>
login.php
<?php
include("../core/login.php");
if (isset($_GET['logout'])) {
setcookie("admin","",time()-604800);
exit("<script language='javascript'>alert('你已注销本次登录');window.location.href='./login.php';</script>");
}elseif ($is_admin==1) {
exit("<script language='javascript'>alert('你已登录');window.location.href='./';</script>");
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>后台登录</title>
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="../css/login.css">
<link rel="stylesheet" href="../css/bootstrap.min.css">
</head>
<body>
<!-- 模态框 -->
<div class="modal fade" id="myModal">
<div class="modal-dialog">
<div class="modal-content">
<!-- 模态框头部 -->
<div class="modal-header">
<h4 class="modal-title" id="title">加载中</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<!-- 模态框主体 -->
<div class="modal-body">
<div style="display: flex; justify-content: center;" id="gif"><img src="../img/Loading.gif" alt="" width="200px" height="200px"></div>
<p id="text"></p>
</div>
<!-- 模态框底部 -->
<div class="modal-footer" style="display: none;" id="bottom">
<button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" id="btnan">确定</button>
</div>
</div>
</div>
</div>
<section class="back">
<div class="imgbox"><img src="../img/404.svg" alt=""></div>
<form action="form">
<h2>登录后台</h2>
<input type="text" name="user" id="user" placeholder="请输入账号">
<input type="password" name="pass" id="pass" placeholder="请输入密码">
<p id="login">登录</p>
</form>
</section>
<script src="../js/jquery-3.6.0.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script>
$(document).ready(function(){
$("#login").click(function(){
$("#myModal").modal("show");
$("#title").text("加载中");
$("#gif").css("display","flex");
$("#text").text("");
$("#bottom").css("display","none");
var user=$("#user").val();
var pass=$("#pass").val();
$.ajax({
type: "POST",
url: "ajax.php?act=login",
data: {"user":user,"pass":pass},
dataType: "json",
timeout: 15000,
success: function(data){
$("#title").text("网站提示");
$("#gif").css("display","none");
$("#text").text(data.msg);
if(data.code==1){
$("#bottom").css("display","flex");
}
},
error: function(data){
$("#title").text("网站提示");
$("#gif").css("display","none");
$("#text").text("服务器错误");
}
});
});
$("#btnan").click(function(){
$("#myModal").modal("hide");
location.href="./";
});
});
</script>
</body>
</html>
代码发给我,我给你调试好
第一张图有报错的具体代码定位,截图看一下
看起来是有的变量没有定义造成的。
php页面写的有bug,变量未定义
报错发一下
不知道你这个问题是否已经解决, 如果还没有解决的话:建立一个登录接口,在接口接受变量后,密码采用md5的校验,非明文的方式去处理。然后查询用户表,匹配是否满足检索用户是否存在。如果存在建立起session状态,缓存用户id,并返回一个随机token缓存下来。
<?php
//1.验证接口,接收数据,过滤数据合法性
//2.构建数据库链接
//3.md5 验证数据库用户密码
//4.生成session,返回token,带时长,或者使用数据库插入token,每次用数据库检索
//5.前端localStore 保存token,接口请求发送需要带上验证token匹配
header('Content-Type: application/json');
header('Content-Type: text/html;charset=utf-8');
$userName = $_POST['userName'];
$userPwd = md5($_POST['userPwd']);
$conn = mysql_connect("localhost","root","") or die('Could not connect: ' . mysql_error());
mysql_select_db("test",$conn);
mysql_query("set name utf-8");
//查询结果验证
$sql = "select * from user where name ='$userName' and pwd = '$userPwd'";
$result = mysql_query($sql);
if($data=mysql_fetch_array($result))
{
session_start();//启动session
$_SESSION['name'] = $data['name'];
$_SESSION['uid'] = $data['id'];
//生成token 返回给前端
$token = createToken();
$_SESSION['token'] = $token;
//返回一个结果
output(200,$token,'success');
}
else
{
output(400,'','密码或帐号出错');
}
mysql_close($conn);
//生成不重复的token,利用网上一个算法
function createToken()
{
$token = md5(uniqid(md5(microtime(true)),true));
$token = sha1($token);
return $token;
}
function output($code,$token,$msg='')
{
$outputData = array();
$outputData['code'] = $code;
$outputData['token'] = $token;
$outputData['msg'] = $msg;
echo json_encode($outputData);
}
?>
用户表 user
目前token方案在讨论后有两种:
1.采用session,对每一个用户记录
2.采用一个token 表。这张表有id ,token ,expire_time (过期时间), 维护好这张表,检索接口用户凭证。每次会通过session 或者表去检索,登录后会重新刷新时效性。
返回状态码说明:200 成功,400失败
根据提供的参考资料,登录后台的问题可能有以下几个原因:
数据库连接问题:首先需要确保连接数据库的配置信息正确,包括主机名、用户名、密码和数据库名。请检查conn.php
文件,确保其中的连接相关信息准确无误。
表单提交问题:在login.php
文件的代码中,获取用户名和密码的方式是使用$_POST
全局变量,需要确保页面中的表单元素的name
属性与代码中的$_POST
变量名一致,比如<input type="text" name="username">
和<input type="password" name="password">
。请检查登录页面的HTML代码,确保表单元素的name
属性正确。
SQL查询问题:在login.php
文件中,有一段SQL查询的代码,需要确保查询的表和字段名正确,并且用户名和密码是存储在数据库中的。请检查数据库中的表和字段名是否与代码中的查询语句一致。
综上所述,可能原因是数据库连接配置问题,表单提交问题或SQL查询问题。请逐一检查以上步骤,确保配置正确后尝试重新登录后台。如果问题仍然存在,请提供更多的错误信息或日志,以便进行更详细的排查。