cookie、session学习

本文介绍了Cookie和Session在Web开发中的功能和应用场景,特别是它们在用户登录注销过程中的作用。Cookie是存储在客户端的文本信息,而Session则将用户信息存储在服务器端,相对更安全。文章通过实例代码展示了如何使用PHP进行Cookie和Session的设置、读取以及注销,并讨论了它们的安全性问题。Cookie容易被窃取,Session虽然也有风险但可通过注销机制降低威胁。
摘要由CSDN通过智能技术生成

1. COOKIE

cookie功能介绍

会话控制
浏览网页的时候,使用的是HTTP协议。
客户端发送请求,服务器端返回响应。
COOKIE

  • cookie是存储在客户端的一段文本,可以是文件,也可以是字符串。
  • 是服务器发送给客户端的,存储在客户端。
  • 相当于用户的身份证信息。
  • 每次客户端浏览器在发出请求的时候都会携带上cookie。

设置cookie

setcookie("name","value","expire","path","domain","secure","httponly");

name:名称
value:值
expire:过期时间 3600s=1hour
path:cookie的有效路径
domain:cookie的域名(防止把百度的cookie发送给微博的服务器)
secure:为true时,只能在https中使用cookie。
httponly:仅仅通过http协议访问,不能通过JS访问
接收cookie信息

$_COOKIE[]

cookie的注销

setcookie('name',$_COOKIE['name'],time()-3600)//直接写死,让cookie过期,time()表示当前时间

浏览器用JS写入cookie信息

document.cookie=("name=jl")

cookie的安全性
身份证信息放在浏览器端,容易被窃取和欺骗,是不是安全的,放在服务器端比较安全。由此引入了session机制(用户的身份证信息放在服务器端)。

cookie代码简单演示(登录注销功能)

login.php
<?php
if(isset($_POST['submit'])){
	if(isset($_POST['username'])&&$_POST['username']=='jl'&&isset($_POST['password'])&&$_POST['password']=='123456'){
		if(setcookie("name","jl")){
			echo "登录成功,<a href='./index.php'>返回首页</a>";
		}else{
			echo "cookie设置错误";
		}		
	}else{
		echo "用户名或密码错误,<a href='./login.php'>请重新登录</a>";
	}
}else{
	$htm=<<<HTML
	<form action="" method="post">
	用户名:<input type="text" name="username" autocomplete='off'><br/>
	密码:<input type="password" name="password" autocomplete='off'><br/>
	<input type="submit" name="submit" value="登录">	
	</form>
	HTML;
	echo $htm;
}
?>
index.php
<meta charset="utf-8">
<h1>刹那芳华论坛</h1>
<?php
if(isset($_COOKIE['name'])){
	var_dump($_COOKIE);
	echo "欢迎您".$_COOKIE['name'].'!<br/>';
	echo "<a href='./logout.php'>注销账户</a>";
}else{
	echo "<a href='./login.php'>请登录</a>";
}
?>
logout.php
<?php
	setcookie('name',$_COOKIE['name'],time()-3600);//直接写死,让cookie过期,time()表示当前时间
	echo "<a href='./index.php'>返回首页</a>";
?>

2. SESSION

SESSION功能介绍

  1. 依赖COOKIE实现
  2. Session id存储在浏览器端
  3. session_start();//开启session机制
  4. $_SESSION:完成对session数据的读写
  5. session的注销采用session_destroy()函数注销,session销毁,但是tmp文件没有删除,只是把里面的内容清空,解除与用户名的绑定。
  6. 安全性:sessionid也存在被窃取的风险,但是如果被窃取后,一个账户注销该sessionid后这个sessionid就失效了,窃取到的这个sessionid就用不了了。cookie如果被注销后,窃取到的cookie还能用。所以注销是一个很重要的功能。
session代码简单演示(登录注销功能)
login.php
<meta charset="utf-8">
<form action="" method="post">
	用户名:<input type="text" name="UserName" autocomplete="off"><br/>
	密码:<input type="password" name="password"><br/>
	<input type="submit" name="submit" value="登录">

</form>
<?php
session_start();//开启session机制,生成的sessionid放在服务器的tmp文件中\phpstudy_pro\Extensions\tmp,session_start一定要顶格写,前面不能有任何输出
?>
<?php
if(isset($_POST['submit'])){
	if(isset($_POST['UserName'])&&$_POST['UserName']=='jl'&isset($_POST['password'])&&$_POST['password']='123456'){
		$_SESSION['UserName']=$_POST['UserName'];//$_SESSION传入的数据存储在tmp文件中,在服务器端存储。如果销毁session,就是把tmp文件中的这些内容清空
		echo "登录成功,<a href='./index.php'>返回首页</a>"
	}else{
		echo "用户名或密码错误,<a href='./login.php'>请重新登录</a>"
	}

}else{
	$htm=<<<HTML
<form action="" method="post">
	用户名:<input type="text" name="UserName" autocomplete="off"><br/>
	密码:<input type="password" name="password"><br/>
	<input type="submit" name="submit" value="登录">
</form>
HTML;
echo $htm;
}
?>
index.php
<meta charset="utf-8">
<h1>刹那芳华</h1>
<a href='./login.php'>请登录</a>
欢迎您
注销
<?php
session_start();
?>
<?php
if(isset($_SESSION['UserName'])&&$_SESSION['UserName']=='jl'){
	echo "欢迎您!".$_SESSION['UserName']."<br/>";
	echo "<a href='./logout.php'>注销用户</a>";
}else{
	echo "<a href='./login.php'>请登录</a>";
}
?>
logout.php
<?php
session_start();
session_destroy();//session销毁,但是tmp文件没有删除,只是把里面的内容清空,解除与用户名的绑定
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值