先登录
<?php
session_start();
if(isset($_SESSION['username']) && $_SESSION['username']==='admin'){
echo '<script>alert("已经登录请勿重新登录");location.assign("admin.php");</script>';
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>用户登录</title>
</head>
<body>
<h3>用户登录</h3>
<form action="check.php" method="post" onsubmit="return isEmpty()">
<p>
<label for="email">邮箱</label>
<input type="email" name="email" id="email">
</p>
<p>
<label for="password">密码</label>
<input type="password" name="password" id="password">
</p>
<button>提交</button>
</form>
<script>
function isEmpty() {
var email= document.getElementById('email').value;
var password = document.getElementById('password').value;
if (email.length===0 || password.length===0){
alert('邮箱不能为空');
return false;
}
}
</script>
</body>
</html>点击 "运行实例" 按钮查看在线实例
再验证
<?php
session_start();
//防止重复登录检查
if(isset($_SESSION['username']) && $_SESSION['username']==='admin'){
echo '<script>alert("已经登录请勿重新登录");location.href="admin.php";</script>';
die;
}
// 连接数据库
require __DIR__ .'/connect.php';
//print_r ('<pre>');
//print_r($_POST);
$email = htmlentities(trim($_POST['email'])); //htmlentities()进行转移 trim()过滤空格
$password = sha1($_POST['password']);
// 到用户表user中进行验证
$sql = 'SELECT * FROM `user` WHERE `email` = :email AND `password` = :password LIMIT 1';
$stmt = $pdo->prepare($sql);
//条理写法
$stmt->bindParam( 'email', $email, PDO::PARAM_STR);
$stmt->bindParam( 'password', $password, PDO::PARAM_STR );
$stmt->execute();
//简约写法:
//$stmt->execute(['email'=>$email,'password'=>$password]);
// fetch(): 成功返回数组,失败返回false
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if(false==$user){
// 登录失败
echo ' <script>alert("登录失败请检查");history.back();</script>';
die;// 终止当前脚本
}
// 登录成功,将用户信息写入cookie
//setcookie('username',$user['username']);
$_SESSION['username'] = $user['username'];
echo '<script>alert("登录成功");location.assign("admin.php");</script>'; //这里的assign()和location.href()意思一样就是写法不同点击 "运行实例" 按钮查看在线实例
通过后进入后台
<?php
//判断用户是否已经登录
session_start();
if(isset($_SESSION['username']) && $_SESSION['username']==='admin'): //这里 “ :”是三目运算符 表达式1?表达式2:表达式3 如果表达式1成了,结果为表达式2否则为表达式3
// 实际也可以也可以这样理解 ":"等于 "{}"
//其实也就是<?php else { ?>
<!--if(false) :-->
<!--echo 'if';-->
<!--else :-->
<!--echo 'else';-->
<!--endif;-->
<!--等价于:-->
<!--if(false){-->
<!--echo 'if';-->
<!--}else {-->
<!--echo 'else';-->
<!--}-->
<!--html 和php混用的时候,需要再其中插入php时,就需要--><?php //?><!--包着。如:-->
<!--<body>-->
<?php //if(true){ ?>
<!--<div>if</div>-->
<?php //}else { ?>
<!--<div>else</div>-->
<?php //} ?>
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>会员中心</title>
</head>
<body>
<h2>网站后台</h2>
<p>欢迎:
<?php echo $_SESSION['username']?>
</p>
<p>
<a href="logout.php">退出</a>
</p>
</body>
</html>
<?php else :?>
echo '<script>alert("请先登录");location.href="login.php";</script>';
<?php endif;?>点击 "运行实例" 按钮查看在线实例
退出
<?php
// 必须已经登录才允许进行退出操作
session_start();
if(isset($_SESSION['username']) && $_SESSION['username']==='admin'){
// setcookie('username', null , time()-3600);
session_destroy();
echo '<script>alert("退出成功");location.href="login.php";</script>';
}点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号