基于session的简单登录逻辑

1  登录页 login.php

<?php
session_start();
//判断一下是否有Session
if (isset($_SESSION['user']) && $_SESSION['user']==='admin') {
    echo '您已经登录';
    echo "<a href='logout.php'>注销登录</a>";
    exit();
}
//登录逻辑
if (isset($_POST['submit'])) {
    //判断用户名和密码是否正确
    if ( isset($_POST['user']) && isset($_POST['pwd']) && $_POST['user']==='admin' && $_POST['pwd'] === 'admin') {
        //写入session
        if ($_SESSION['user'] = $_POST['user']) {
            //设置cookie成功 跳转到首页
            header('Location:skip.php?url=index.php&info=登录成功');
        } else {
            echo 'cookie设置失败';
        }
    } else {
        header('Location:skip.php?url=index.php&info=登录失败');
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
<form method="post" action="login.php">
    姓名:<input type="text" name="user"/>
    密码:<input type="password" name="pwd" />
    <input type="submit" name="submit" value="登录">
</form>
</body>
</html>

2  首页文件  

<?php
session_start();//打开一个会话
if (isset($_SESSION['user']) && $_SESSION['user'] === 'admin') {
    echo "亲爱的{$_SESSION['user']}你好,欢迎回来";
    echo "<br><a href='logout.php'>注销登录</a>";
} else {
    echo "<a href='login.php'>请登录</a>";
}

3 跳转页面 skip.php

<?php
//跳转中转页
if (!isset($_GET['url']) || !isset($_GET['info'])) {
    exit('url 或 info 没有收到');
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>桥页</title>
    <meta http-equiv="refresh" content="3;url=<?php echo $_GET['url'] ?>"> //本节重点 跳转的使用
</head>
<body>
    <div style="text-align:center;font-size:20px;"><?php echo $_GET['info'] ?>,3秒后自动跳转!</div>
</body>
</html>

4  退出登录 logout.php

<?php
session_start();//先打开session

//如果session有值 我们进行删除操作
if (isset($_SESSION['user']) && $_SESSION['user'] === 'admin') {
    session_unset();//删除session
    session_destroy();//删除服务端保存session的文件
    setcookie(session_name(),'',time()-3600,'/');//删除客户端cookie中保存的session_id
    header('Location:login.php');//跳转到登录页
} else {
    echo '退出登录失败 请重试';
}
原文地址:https://www.cnblogs.com/fuyunlin/p/13954405.html