OneStep

缓存$_SESSION 与 $_COOKIE 和 Token区别

文章目录
Toc目录

php 缓存 $_SESSION 与 $_COOKIE
区别

$_SESSION

特点:存储在服务器上,周期短(浏览器关闭及清除) 相对于cookie更安全
使用: 开始 session_start();
赋值 $_SESSION["temp"] = "value";

示例

session_start();
if(isset($_SESSION["tempOrder"])){ $diyOrderType = $_SESSION["tempOrder"];}
else{$diyOrderType = 'modified';}
if(isset($_GET["orderVal"])){$_SESSION["tempOrder"]=$_GET["orderVal"];}

示例二

session_start();
$_SESSION['tempdiyorder'] = $diyOrderType;  /** 吧接收到的数据放入缓存 */
$tempDiyOrderType = $_SESSION['tempdiyorder'];

备注:每一个用户访问时都有自己的一个会话id,连接开始后会判断是否是同一个id
若设置了 session_id("08nr1fav9jqs2pdi5qlpsmd247"); 那就是固定id 所有用户(即更换浏览器更换ip)都使用这个id,访问到的数据也是相同的,不重新创建
Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。

相关操作代码
Session的配置与应用

session_start();          //初始化session.需在文件头部

$_SESSION[name]=value;    //配置Seeeion

echo $_SESSION[name];     //使用session

isset($_SESSION[name]);   // 判断

unset($_SESSION[name]);   //删除

session_destroy();             //销毁所有session

设置session_name()
session.name = PHPSESSID //默认值

设置id
示例:session_id("12345678901s2pdi5qlpsmd520");
那就是固定了

如何传递Session ID
方法一:通过 Cookie 来传递 Session ID
示例:
setcookie(session_name(), session_id(), 0, '/')

其他方式
session_id($_GET['sessid']);

方法二:通过 URL 来传递 Session ID
//开启 session
session_start();
// 在 URL 后面附加参数,变量名为session_name()获取的名称,值为session_id()获取
'网址?'.session_name().'='.session_id()
echo '演示';

设置 Session
session_get_cookie_params();

销毁变量

session_start();  //开启Session并初始化
session_unset();   //清除
session_destroy();  // 关闭session
$_SESSION = array();  // 删除所有Session的变量,也可以用`unset($_SESSION[XXX])`逐个删除

虚拟空间(虚拟主机)设置 超时过期

ini_set('session.gc_maxlifetime', "3600"); // 秒  
ini_set("session.cookie_lifetime","3600"); // 秒

vps主机 可以 编辑php.ini配置文件
设置session.gc_maxlifetimesession.cookie_lifetime节点属性值
示例 保存30天 ini_set("session.cookie_lifetime","25923000"); / 自定义session保存时间 /

php.ini配置文件 路径 可以通过 <?php echo phpinfo(); ?> 查看

#修改session配置
session.use_cookies = 1     // 是否使用cookies
session.cache_expire = 25923000  //设置缓存中的会话到期时间
session.gc_maxlifetime = 25923000    // 最大保存时间 ,默认1440秒(24分钟)
session.cookie_lifetime = 25923000   //cookie的保存时间,为0表示浏览器关闭直接清空

其他一些 不常用的

session.cookie_path = / ;    // cookie的有效路径
session.cookie_domain = ;   // cookie的有效域
session.name = PHPSESSID;      // 用在cookie里的session的名字
session.save_handler = files ;   //  用于保存/取回数据的控制方式
session.save_path = /tmp ;    // 在 save_handler 设为文件时传给控制器的参数, 这是数据文件将保存的路径.
session.gc_probability/session.gc_divisor;   // 启动垃圾回收机制的概率(建议值为1/1000——5000)
session.auto_start = 1 ;
// 值设置为1 ,则PHP中的session模块会在每个请求时自动启动一个会话,因此您不必在脚本中使用session_start函数。
session.save_path

不通过php.ini配置文件直接在php代码里 设置

/* 设置缓存限制为 “private” */
session_cache_limiter('private');
$cache_limiter = session_cache_limiter();
/* 设置缓存过期时间为 30 分钟 */
session_cache_expire(30);
$cache_expire = session_cache_expire();
/* 开始会话 */
session_start();

$_COOKIE

特点:缓存,,保存在本地。时效较长 但传输时容易被获取到

示例

if(isset($_COOKIE["diyOrderType"])){ $diyOrderType = $_COOKIE["diyOrderType"];}
else{$diyOrderType = 'modified';}
if(isset($_GET["orderVal"])){setcookie("diyOrderType",$_GET["orderVal"],time()+3600*24*30);} 

PHP中cookies无法跨目录(同域名下)调用访问问题
原代码
setcookie("cachekey",$Array_keys,time()+3600*24*30);
修改后的代码
setcookie("cachekey",$Array_keys,time()+3600*24*30,"/");
在最后增加路径参数/就可以了

调用
$_COOKIE["cachekey"]
echo $_COOKIE["cachekey"];
echo $HTTP_COOKIE_VARS["cachekey"];

语法
setcookie(name, value, expire, path, domain);

js删除cookie
document.cookie = "test=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;";

js获取cookie
console.log(document.cookie);

var sessid=document.cookie.split(";")[0].split("=")[1];console.log(sessid);
支付宝打赏 微信打赏

免责声明:本站多数资源来源于互联网。少数原创内容为本人随意书写不对其负任何法律责任(均为键盘和鼠标自行敲击),部分有助于网友的内容仅供学习与交流。如有转载、盗链等其它行为产生对国家社会网络不良影响均与本人无关。
版权说明:未经博主授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。

      




发表评论

发表新评论

请输入本站名:

暂无评论   

发送消息!
onestep
网站二维码
手机扫一扫,查看
.
贝多叶@聚合支付

真诚赞赏,手留余香

使用微信扫描二维码完成支付