首页 技术 正文
技术 2022年11月11日
0 收藏 957 点赞 3,016 浏览 1857 个字

在之后的工作和学习中,更是发现了自己对于基础知识的不扎实,于是又返回头来学习,确实很多东西是之前没注意或是没掌握的。

着重讲一下这几个问题

什么是 Cookie ?

简单来说:

  因为 HTTP 无状态的,所以为了想在客户端保存一些数据来和服务端进行交互,我们需要在客户端存一部分数据,就是 Cookie 。

PHP 如何设置 Cookie 呢?

看一下 PHP 官方对于设置 Cookie 函数的定义

bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

介绍一下 setcookie() 这里面参数的含义

  $name  顾名思义,设置 Cookie 的名字。

  $value  设置这个 Cookie 的值。

  $expire   设置 Cookie 的过期时间,如果不设置或者为空,则表示在关闭浏览器时候销毁 Cookie。

        注意,这个时间是真正意义上的结束时间,应该是以你当前的时间+过期时间来完成的,单位为秒。

        例如:

          setcookie(‘name’, ‘hong.li’, time() + 7*24*3600); // 当前时候后一周过期。

  $path   Cookie 有效的服务器路径。 默认值是设置 Cookie 时的当前目录。

         设置成 ‘/’ 时,Cookie 对整个域名 domain 有效。        

       如果设置成 ‘/foo/’, Cookie 仅仅对 domain 中 /foo/ 目录及其子目录有效(比如 /foo/bar/)。

  $domain 设置跨域。

  $secure    是否只接受 HTTPS 传来的 Cookie ,默认为 false;

  $httponly  是否只接受 HTTP 协议发来的Cookie,不允许 JS 来直接操作 Cookie ,可以有效防止 XXS 攻击,同时也可以在 php.ini 中设置。

除了 setcookie 这种方法,还有其他的方法可以设置 cookie 么?

当然是有的,先说一个 PHP 设置 Cookie 的其他一个函数

bool setrawcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

它和 setcookie 的唯一区别就是 setcookie 会对值进行 urlencode 编码,而他不会。

第二种方式是直接发送一个 HTTP 头,指定 Set-cookie ,在浏览器中,会认为你是设置 cookie 的属性

header('Set-cookie: username=hong.li');

再看看你的浏览器们是不是有这个 Cookie 了。

如何删除我们已经设置好的 Cookie 呢?

浏览器手动删除,哈哈~

通过 PHP 直接把 Cookie 设置成已过期的时间,Cookie就会被删除。

 

已经有了 Cookie 可以设置信息了,我们还用 SESSION 干什么?

我们都知道 Cookie 是存在客户端的。是容易篡改的,再说也不能使用一个客户端的凭证来判断用户身份吧。

扯远了。。。。。。

总之,使用 Cookie 信息是远远不够的,SESSION 是服务端的一种存储状态。

SESSION 原理是什么?

在开始了 session 之后,在浏览器访问这个页面时候。

  1:服务端会检测 是否有 SESSION .

  2: 如果没有,则产生一个随机的 PHPSESSID, 并且自动发送发送一个 Cookie,这个 Cookie 在关闭浏览器后消失。

  3:如果有,则读取对应 SESSION 信息。

如何使用SESSION?

在 PHP 我们首先需要初始化 SESSION。

session_start();

之后可以在 $_SESSION 这个全局变量中增加或者我们的值

$_SESSION['username'] = 'hong.li';

之后我们就可以取到对应的值了。

需要注意的是,虽然我们使用的默认 Cookie ,保存了 SESSION_ID 的信息,但是这个信息会在关闭浏览器后消失,我们明显不想这样。于是我们会在这里使用 setcookie 来设置我们的信息。

setcookie('PHPSESSID', session_id(),time()+3600);

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,997
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,511
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,356
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,139
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848