【教程】PHP验证用户是否登录 [复制链接]
【作者】Shawna 2020年2月10日 23:41:15

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

因HTML特殊的机制,用户在前一个页面登录,下一个页面不知道用户有没有登录,这个时候,就需要用Session来保存用户的登录状态。


首先,写一个简易的H5登录页面

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="index.php" method="post">
    <label>账号
        <input name="account"></label>
    </label>
    <label>密码
        <input name="password"></label>
    </label>
    <button type="submit">登录</button>
</form>
</body>
</html>

重点在于<form>标签的action代表目标页面,通常为php页面,method代表请求方式,get方式会将参数显示在地址栏,不推荐使用。

向index.php发送表单的登录信息后,下面写index.php代码


首先要在index.php开头启用session

session_start();

启用后,可以通过$_SESSION['']的方式访问session储存的信息


获取用户提交的表单,并验证账号密码,如果账号密码全部正确,给$_SESSION['user']进行赋值,储存用户登录状态

$account = $_POST['account'];
$password = $_POST['password'];

if ($account == "admin" && $password == "admin"){
    $_SESSION['user'] = $account;
}

如上代码,当登录成功将用户账号储存以备之后页面检查登录状态时使用


后面可增加页面跳转,登录成功后跳转到main.php

main.php验证用户是否登录,如果没有登录则跳转回登录页

<?php

session_start();

if ($_SESSION['user'] == ""){
    header("location:login.html");//未登录,返回登录页
    return;
}

//已登录,显示账号
echo $_SESSION['user'];

至此结束。


完整示例如下:


index.php

<?php

session_start();

$account = $_POST['account'];
$password = $_POST['password'];

if ($account == "admin" && $password == "admin") {
    $_SESSION['user'] = $account;
    header("location:main.php");
    return;
}

if ($_SESSION['user'] == "") {
    header("location:login.html");
    return;
}

header("location:main.php");
return;


login.html

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="index.php" method="post">
    <label>账号
        <input name="account"></label>
    </label>
    <label>密码
        <input name="password"></label>
    </label>
    <button type="submit">登录</button>
</form>
</body>
</html>


main.php

<?php

session_start();

if ($_SESSION['user'] == ""){
    header("location:login.html");//未登录,返回登录页
    return;
}

//已登录,显示账号
echo $_SESSION['user'];