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'];