zoukankan      html  css  js  c++  java
  • 客户端禁用cookie后session的解决方法

    如果禁用cookie理论上来讲, 会影响session: session基于cookie实现, session的SESSID利用cookie保存.

    但是如果禁用了cookie之后, session就不能用了. 如果有用户恶意(选择)禁用cookie: 可以理解为用户不愿意使用我们的网站.

    如果非要实现: 可以通过a链接实现

    一、手动a链接: 用户自己给a链接的href

    session_name(): 获取或者设置session名字(没有参数就是获取,有参数就是设置)
    session_id(): 获取或者设置sessionID(没有就是获取,有就是设置)

    1. 在保存session数据界面, 获取session信息(name和id), 嵌入到URL中.

    // 保存session数据
    
    // 开启session
    session_start();
    
    // 获取session信息
    $name = session_name();
    $id = session_id();
    
    // 保存session数据
    $_SESSION['name'] = 'jason';
    
    // 给出一个链接
    echo "<a href='session.php?{$name}={$id}'>点我</a>";

    2. 在需要共享session数据的界面: 先获取session信息, 然后再获取session数据

    // 获取session数据
    
    // 改变session_start从cookie获取id的机制
    // 接受数据
    $id = $_GET[session_name()];
    
    // 修改session_start的开启机制: 使用当前制定SESSID
    session_id($id); // 注册sessionid
    
    // 开启session
    session_start(); // 不再从cookie获取,也不会自动创建新的
    
    // 获取
    print_r($_SESSION); // Array ( [name] => jason )

    浏览器输出效果:

    二、自动a链接: 通过修改session默认的机制(PHP配置文件php.ini)

    1. 修改session默认的只允许使用cookie的原则

    session.use_only_cookies = 1 改为 session.use_only_cookies = 0

    2. 开启URL转换sessionid信息的配置

    session.use_trans_sid = 0 改为 session.use_trans_sid = 1

    以上修改完了之后: 系统会自动在a标签中加入sessionid信息, 而且还能在获取session数据界面自动的从a标签去获取sessionid信息

    效果1: 所有的a标签都会自动加上session信息

    // 保存session数据
    
    // 开启session
    session_start();
    
    // 保存session数据
    $_SESSION['name'] = 'jason';
    
    // 给出一个链接
    echo "<a href='session.php'>点我</a>";

    效果2: session使用的时候,会自动的从a标签读取session信息

    // 获取session数据
    
    // 开启session
    session_start(); // 不再从cookie获取,也不会自动创建新的
    
    // 获取
    print_r($_SESSION); // Array ( [name] => jason )

  • 相关阅读:
    2020学习 04 python 爬取某政府网站信件
    2020学习03
    2020学习02
    阅读笔记--《一线架构师实践指南》--Pre-architecture阶段
    重构“信息领域热词分析”,实现六种质量属性战术
    pycharm错误:Error updating package list: connect timed out解决
    python连接mysql数据库——编码问题
    阅读笔记--《大型网站技术架构》—02架构
    python查询MySQL数据库的表以及所有字段
    python连接mysql数据库——版本问题
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522548.html
Copyright © 2011-2022 走看看