• 客户端禁用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 )

  • 相关阅读:
    二叉树的遍历(递归,迭代,Morris遍历)
    1003. Emergency
    1002. A+B for Polynomials
    设计模式6——创建型模式之原型模式
    设计模式5——创建型模式之建造者模式
    设计模式4——创建型模式之单例模式
    设计模式3——创建型模式之抽象工厂模式
    设计模式2——创建型模式之工厂方法模式
    设计模式1——创建型模式之简单工厂模式
    设计模式六大原则
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522548.html
Copyright © 2020-2023  润新知