详解php中的会话技术

Cookie

设置Cookie用setcookie函数格式如下:

setcookie('name','value');

例子:

<meta charset="utf-8">
<?php
setcookie('www.aaa.com','123456');
setcookie('www.bbb.com','zxcasd');
setcookie('www.ccc.com','1fewq');
setcookie('www.ddd.com','sadb23v');
setcookie('www.eee.com','sadvb221');
设置超时时间

超时时间用time参数即可:

<meta charset="utf-8">
<?php
setcookie('www.aaa.com','123456');
setcookie('www.bbb.com','zxcasd',time()+60);
setcookie('www.ccc.com','1fewq',time()+600);
setcookie('www.ddd.com','sadb23v',time()+60*60);
setcookie('www.eee.com','sadvb221',time()+60*60*24*30);

这里借助插件看一下就知道,这个Cookie过期了:
在这里插入图片描述

用Cookie写一个网站访问计数器

在写之前需要说明一下,这个Cookie设置完以后,直接取是取不出来的,只有第二次访问页面时,才会带着cookie访问,所以我们这么写:

<meta charset="utf-8">
<meta charset="utf-8">
<?php

	# 初始化变量num
	$num = 0;
	# 如果cookie的值为空
	if (empty($_COOKIE['access']))
	{
		# 设置cookie的值为1
		setcookie('access',1);
		# 因为第一次访问不带cookie,所以这里做一个优化,让它输出1,假装用户带着cookie访问的
		echo "1";
		# 如果已经有了cookie
	}else{
		# 那么num的值就等于当前的cookie值
		$num = $_COOKIE['access'];
		# num的值进行自加
		$num++;
		# 重新设置cookie
		setcookie('access',$num);
		echo $num;
	}

Session

cookie是保存在浏览器端的,而session是保存在服务器端的,但是session必须依靠cookie来实现,在使用session之前,必须使用一个函数session_start():

先写一个传递session的页面:

<?php
session_start();
$_SESSION['website']='www.baidu.com';

这边var_dump一下这个session:

<?php

session_start();
var_dump($_SESSION);
?>

在这里插入图片描述

清空Session

直接把Session赋值给一个空数组就行了:

<?php

session_start();

# 清空Session
$_SESSION=array();
var_dump($_SESSION);

// 或者
// session_destroy()

?>

在这里插入图片描述

Session登陆测试

首先写一个登录界面进行表单提交:

<!DOCTYPE html>
<html>
<head>
	<title>后台管理</title>
	<meta charset="utf-8">
</head>
<body>

<form action="t3.php" method="post">
	用户名: <input type="text" name="username"/><br><br>
	密码:  <input type="password" name="password"/><br><br>
	<input type="submit" value="登录" />
</form>

</body>
</html>

在这里插入图片描述

接着写一个验证环节:

<meta charset="utf-8">
<?php
# 开启一个会话
session_start();
# 如果post的数据为空
if (empty($_POST))
{
	# 输出无法登录并给出跳转登录链接
	echo "<script>alert('内容不能为空!')</script>";	
	echo "<a href='t2.php'>请登录</a>";
}else{
	# 若post数据不为空则把username,password分别赋值给他们的变量
	$username = $_POST['username'];
	$password = $_POST['password'];
	# 如果username和password符合条件
	if ($username == 'admin' and $password == 'admin888')
	{
		# 将username的值储存到session的name中
		$_SESSION['name'] = $username;
		# 跳转到t1.php
		header("Location: t1.php");
	}else{
		# 不符合条件则给出跳转链接重新登录
		echo "<script>alert('用户名或密码错误!')</script>";	
		echo "<a href='t2.php'>请登录</a>";
	}
}

在这里插入图片描述

最后符合条件来到欢迎登陆界面,这里做了一个session验证:

<meta charset="utf-8">
<?php
	# 开始一个会话
	session_start();
	# 如果session的值为空
	if (empty($_SESSION))
	{	
		# 输出无权访问并给出跳转登录链接
		echo "<script>alert('无权访问!')</script>";
		echo "<a href='t2.php'>请登录</a>";
	}else{
		# 若session值不为空则将session中name的值赋给变量name进行下一步的弹窗
		$name = $_SESSION['name'];
		echo "<script>alert('欢迎 $name 登录系统!')</script>";
	}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值