PHP从入门到能用(九)会话管理

初始化会话 session_start(),注册访问会话变量$_SESSION[],销毁会话变量 unset(), 销毁会话 session_destory()的用法

【10-1】session 的用法

session 是什么?
session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置

10-1a.php

<form method="post" action="">
	用户名: <input type="text" name="user" >*要求为 612 个字符
	<br>密码:<input type="text" name="pwd" >*要求为 616 个数字
	<br><input type="submit" name="tj" value="提交">
</form>
<?php
if(isset($_POST["tj"]))
{
	session_start(); //初始化会话
	$user=$_POST["user"];
	$pwd=$_POST["pwd"];
	
	$checkid=preg_match('/^\w{6,12}$/',$user);  //检查是否为 6~12 个字符
	$checkpwd=preg_match('/^\d{6,16}$/',$pwd); //检查是否为 6~16 个数字
	if(!$checkid)
		echo "<script>alert('用户名格式错误!')</script>";
		elseif(!$checkpwd)
			echo "<script>alert('密码格式错误!')</script>";
		else{
			$_SESSION["user"]=$user;	//给会话赋值
			header('location:10-1b.php');
		}
}
?>

10-2b.php

<?php
session_start(); //初始化会话
echo $_SESSION["user"];
unset($_SESSION['user']);

在这里插入图片描述

【10-2】 Cookie 的用法

Cookie 是什么?
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件
语法setcookie(name, value, expire, path, domain);

10-2a.php

<form method="post" action="">
	用户名:<input type="text" name="user" ><br>
	密码:<input type="text" name="pwd" ><br>
	Cookie 保存时间:
	<select name="time">
		<option value="0">浏览器进程</option>
		<option value="1">保存 10</option>
		<option value="2">保存 1 分钟</option>
		<option value="3">保存 1</option>
		<option value="4">保存 1 星期</option>
		<option value="5">不保存</option>
	</select>
	<br><input type="submit" name="tj" value="提交">
</form>
<?php
if(isset($_POST["tj"]))
{
	$user=$_POST["user"];
	$pwd=$_POST["pwd"];
	$time=$_POST["time"];
	$checkid=preg_match('/^\w{6,12}$/',$user);	//检查是否为 6~12 个字符
	$checkpwd=preg_match('/^\d{6,16}$/',$pwd);	//检查是否为 6~16 个数字
	if(!$checkid)
	echo "<script>alert('用户名格式错误!')</script>";
		elseif(!$checkpwd)
			echo "<script>alert('密码格式错误!')</script>";
		else{
			switch($time)
			{
				case 0: setcookie("user",$user); break;
				case 1: setcookie("user",$user,time()+10);break;
				case 2: setcookie("user",$user,time()+60);break;
				case 3: setcookie("user",$user,time()+60*60*24); break;
				default: setcookie("user",$user,time()-1);
			}
		header('location:10-2b.php');
	}
}		
?>		

10-2b.php

<?php
if(isset($_COOKIE["user"]))
{
echo $_COOKIE["user"];
echo "欢迎光临!";
echo "<a href='10-2c.php'>安全退出</a>";
}
else
{
echo "您还未登录,请<a href='10-2a.php'>登录!
</a>";
}
?>

10-2c.php

<?php
setcookie("user","",time()-1);
//unset($_COOKIE);
echo " 退 出 成 功 ! 重 新 <a href='14-5.php'> 登 录
</a>";
?>

在这里插入图片描述

实战应用

通过Session判断用户的操作权限

通过Session判断用户的操作权限
1) 编写登录页面。要求有字段验证。
2) 编写登录处理页面。要求根据登录页面提交的数据,判断不同的身份,显示不同的菜单操作或跳转至不同的页面。
3) 编写注销页面。注销结束后跳转至登录页面。

z9-1a.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        span{
            display:block;
            margin-top:8px;
        }
    </style>
</head>
<body>
<form method="post" action="">
    <span>用户名:&nbsp;<input type="text" name="user" >*要求为 612 个字符</span>
    <span>密码:&nbsp;<input type="text" name="pwd" >*要求为 616 个数字</span>
    <span>
    <select name="who" id="">
    <option value="visitor">普通用户</option>
    <option value="vip">会员</option>
    <option value="admin">管理员</option>
    </select>&nbsp;&nbsp;<input type="submit" name="tj" value="提交"></span>
</from>
</body>
</html>


<?php
if (isset($_POST["tj"])) {
    session_start(); //初始化会话
    $user = $_POST["user"];
    $pwd = $_POST["pwd"];
    $identity = $_POST["who"];
    $checkid = preg_match('/^\w{6,12}$/', $user);
    $checkpwd = preg_match('/^\d{6,16}$/', $pwd);
    if (!$checkid) {
        echo "<script>alert('用户名格式错误!');</script>";
    } elseif (!$checkpwd) {
        echo "<script>alert('用户民格式错误!');</script>";
    } else {
        $_SESSION["user"] = $user;
        $_SESSION["identity"] = $identity;
        header("location:z9-1b.php");
    }
}

?>

z9-2a.php

<?php
session_start(); //初始化会话
if (isset($_SESSION["user"])) {
    echo "<font style='color:blue'>您好,尊敬的 " . $_SESSION["user"] . ",欢迎光临!</font>";
    if ($_SESSION['identity'] == 'visitor') {
        $who = "普通用户";
    } elseif ($_SESSION['identity'] == 'admin') {
        $who = "管理员";
    } elseif ($_SESSION['identity'] == 'vip') {
        $who = "会员";
    }
    echo "<br/>您当前的身份:<font style='color:red;'>" . $who."</font>";
    echo "<br/><a href='z9-1a.php'>安全退出</a>";
} else {
    echo "您还未登录,请<a href='z9-1a.php'>登录!</a>";
}
unset($_SESSION['user']);

在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值