PHP学习——10 cookie介绍及使用

cookie是一个预定义的变量,其内容由 名 + 值 对组成。php脚本中的变量都是存储在服务器端, 写在客户端浏览器中的变量就是cookie。

提出问题:

  1. 为什么要用cookie?
  2. cookie由谁来创建?

一、为什么要用cookie?

cookie的作用在与让服务器知道客户端是谁(哪一个)。在进行交互的时候能更精准的传递正确信息到正确的客户端。同时在浏览器访问同个域名的不同页面时,实现多个页面数据的共享。

二、cookie由谁来创建?

1. 当浏览器打开一个网站时,浏览器会自动为当前域名在本地主机创建一个cookie,通常叫 uid:用户id,这是一个绝对不会重复的字符串值,用来识别访问者。

2. 接着cookie就与客户端无关了,全部由服务器上的程序控制(由服务器上应用来设置)

在浏览器中查看

<?php

// setcookie() 接收7个参数
// 1.name: Cookie名称;
// 2.value: Cookie值,这个值储存于用户的电脑里,请勿储存敏感信息。
// 3.expire: Cookie 的过期时间,这是个从1970 年 1 月 1 日 00:00:00到现在的时间戳(秒数)。 
// 也就是说,基本可以用 time() 函数的结果加上希望过期的秒数。

// 4.path: Cookie 有效的服务器路径。 设置成 '/' 时,Cookie 对整个域名 domain 有效。 如果设置成 '/foo/', Cookie 
// 仅仅对 domain 中 /foo/ 目录及其子目录有效(比如 /foo/bar/)。 默认值是设置 Cookie 时的当前目录。 

// 5.domain: Cookie 的有效域名/子域名。设置成子域名(例如 'www.example.com'),会使 Cookie 
// 对这个子域名和它的三级域名有效(例如 w2.www.example.com)。 要让 Cookie 对整个域名有效(包括它的全部子域名),
// 只要设置成域名就可以了(这个例子里是 'example.com')。 

// 6.secure: 设置这个 Cookie 是否仅仅通过安全的 HTTPS 连接传给客户端。 设置成 TRUE 时,只有安全连接存在时才会设置
// Cookie。 如果是在服务器端处理这个需求,程序员需要仅仅在安全连接上发送此类 Cookie (通过 $_SERVER["HTTPS"] 判断)。 

// 7.httponly: 设置成TRUE,Cookie仅可通过HTTP协议访问,这意思就是Cookie无法通过类似JavaScript这样的脚本语言访问。 
// 要有效减少 XSS 攻击时的身份窃取行为,可建议用此设置(虽然不是所有浏览器都支持),不过这个说法经常有争议。 
// PHP 5.2.0 中添加。 TRUE 或 FALSE 

setcookie('cookieDemo','PHP Study Hard!');
echo $_COOKIE['cookieDemo'];

?>

接下来模拟一个登陆操作

模拟的登陆操作

我的文件目录

// cookie-demo.php
<?php
$action = $_GET['action'];
if($action=='login'){
	if($_POST['name']=='user'&&$_POST['password']=='123456'){
		setcookie('userName',$_POST['name'],time()+3600*24);// 设置cookie,有效期一天
		header('Location:index.php'); // 导航到首页
	}
}else if($action=='logout'){
	setcookie('name','',time()-3600); // 注销cookie,设置过期时间
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>登陆操作</title>
</head>
<body>
	<form action="<?php echo $_SERVER['PHP_SELF']; ?>?action=login" method='post'>
		<fieldset>
			<legend>用户登陆</legend>
			<label for='name'>用户名</label>
			<input type="text" name="name" id='name' placeholder="请输入用户名">
			<br>
			<label for='password'>密码</label>
			<input type="password" name="password" id='password' placeholder="请输入密码">
			<br>
			<input type="submit" value="提交">
		</fieldset>
	</form>
</body>
</html>
// index.php
<?php
if(!isset($_COOKIE['userName'])){
	header('Location:cookie-demo.php'); // 未登录,跳转到登陆页面
}else{
	echo '欢迎'.$_COOKIE['userName'].'回到首页!';
}
?>

先输入错误的用户名,密码,弹出登录失败提示

输入正确的 user,123456,登陆成功,cookie值出现了

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值