php用户登录,异步提交表单注册
16lz
2022-05-05
index首页代码
<?php
session_start();
//判断用户是否登录
if(isset($_SESSION['admins'])){
$admins = unserialize($_SESSION['admins']);
}
?>
<!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>Document</title>
</head>
<body>
<?php if(isset($admins)): ?>
<a href="#" id="logout">退出</a>
<?php else: ?>
<a href="login.php">登录</a>
<?php endif ?>
</body>
<script>
let s=document.getElementById('logout');
if(s){
document.querySelector('#logout').addEventListener('click',function(event){
if(confirm('确定退出?')){
event.preventDefault();
location.assign('handle.php?action=logout');
}
});
}
</script>
</html>
登录代码login.php
<?php
session_start();
//判断用户是否登录
if(isset($_SESSION['admins'])){
exit('<script>alert("已登录");location.href="login.php";</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>login</title>
<style>
form{
text-align: center;
}
fieldset{
background-color:aqua;
}
</style>
</head>
<body>
<form action="handle.php?action=login" method="post">
<fieldset style="display:inline-block;">
<legend>用户登录</legend>
<p><input type="email" name="email" id="" placeholder="邮箱" require></p>
<p><input type="password" name="password" id="password" placeholder="不少于6位" require></p>
<p><button >提交</button></p>
</fieldset>
<p>如果没有账号,请点击<a href="register.php">注册</a></p>
</form>
</html>
注册文件代码register.php
<?php
session_start();
//判断用户是否登录
if(isset($_SESSION['admins'])){
exit('<script>alert("已登录");location.href="index.php";</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>register</title>
</head>
<body>
<form action="" method="post">
<fieldset style="display:inline-block;">
<legend>用户登录</legend>
<p><input type="email" name="name" id="name" placeholder="昵称" require></p>
<p><input type="email" name="email" id="email" placeholder="邮箱" require></p>
<p><input type="password" name="password" id="password" placeholder="不少于6位" require></p>
<p><input type="password" name="password1" id="password1" placeholder="二次密码必须一致" require></p>
<p><button onclick='check();'>注册</button></p>
</fieldset>
</form>
<script>
async function check(){
event.preventDefault();
$name = document.querySelector('#name').value;
$email = document.querySelector('#email').value;
$password = document.querySelector('#password').value;
$password1 = document.querySelector('#password1').value;
if($name ===''){
alert('昵称不能为空');return false;
}
if($email ===''){
alert('邮箱不能为空');return false;
}
if($password ===''){
alert('密码不能为空');return false;
}
if($password1 ===''){
alert('二次密码不能为空');return false;
}
if($password.trim() !== $password1.trim()){
alert('两次密码不一致,请重新输入');return false;
}else{
let url = '/0502/handle.php?action=register';
const form_data = new FormData();
form_data.append('name',$name);
form_data.append('email',$email);
form_data.append('password',$password);
// 接口url
const response = await fetch(url,{
method: 'POST',
body: form_data
})
const result = await response.json();
if(result == 1){
alert("注册成功");location.href="index.php";
}else{
alert("注册失败");location.href="index.php";
}
}
</script>
</html>
数据操作页handle.php
<?php
session_start();
$db = new PDO('mysql:dbname=phpedu;port=3306;charset=utf8','root','root');
$sql = 'SELECT * FROM `admin`';
$statt = $db->prepare($sql);
$statt->execute();
$admins = $statt->fetchAll(PDO::FETCH_ASSOC);
$action = $_GET['action'];
switch(strtolower($action)){
//登录
case 'login':
//确定是post请求
if($_SERVER['REQUEST_METHOD'] === 'POST'){
extract($_POST);
$result = array_filter($admins,function($admin) use ($email,$password){
return $admin['email'] === $email && $admin['password'] === md5($password);
});
if(count($result) === 1){
//序列化匹配正确数据,存到session
$_SESSION['admins'] = serialize(array_pop($result));
exit('<script>alert("验证通过");location.href="index.php";</script>');
}else{
exit('<script>alert("邮箱或者密码错误");location.href="login.php";</script>');
}
}else{
die('请求错误');
}
break;
//退出
case 'logout':
if(isset($_SESSION['admins'])){
session_destroy();
exit('<script>alert("退出成功");location.href="index.php";</script>');
}
break;
//注册
case 'register':
extract($_POST);
$password = md5($password);
$register_time = time();
$sql = 'INSERT `admin` SET `name`=?,`password`=?,`email`=?,`register_time`=?';
$statt = $db->prepare($sql);
$statt->execute([$name,$password,$email,$register_time]);
if($statt->rowCount() === 1){
echo json_encode(1);
}else{
echo json_encode(0);
}
break;
};
" class="reference-link">效果图
更多相关文章
- Fix one bug in Android(安卓)官方提供的例子
- Android(安卓)Zip文件解压缩代码
- 如何编程实现开启或者关闭GPS
- Android音乐播放器开发
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种
- Android的DrawerLayout全屏滑动显示
- 写给Android开发者的Kotlin入门
- 8步教你打开Android之门 NDK入门教程
- 解决android一直在running,打不开文件,下载不了gradle包的方法