0
点赞
收藏
分享

微信扫一扫

cookie、session学习

暮晨夜雪 2022-04-24 阅读 74
php

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文件没有删除,只是把里面的内容清空,解除与用户名的绑定
?>
举报

相关推荐

0 条评论