zoukankan      html  css  js  c++  java
  • session,cookie总结

    不同的域名生成的session_id是不一样的,(就算是相同的主域,例如:www.test.com, blog.test.com 都不一样);

    相同的主域,不同的二级域名,例如www和blog都是不共享cookie的,要如何共享呢?

    setcookie("age", "1000000000", time()+3600,'/','test.com');  //这里指定主域的地址,这样,其二级域名就都可以访问这个cookie了。

    那么二级域名之间是如何共享session的呢?

    session的读取是根据session_id来从session的存储位置来读取的,那么如果在www和test之间能传递session_id那不就是可以共享session了?

    比如在www目录下面有index.php 的代码

    <?php
    session_start();
    setcookie("age", "1000000000", time()+3600,'/','test.com'); 

    $session_id = session_id();

    setcookie("PHPSESSID", $session_id, time()+3600,'/','maxomnis.com');       //这里的PHPSESSID为session_id默认的存储的名字,如果php.ini修改了这里也要修改;

    那么在blog目录下面的index.php如下的代码, 就可以去取到上面的age值了

    <?php
    session_start();
    var_dump($_COOKIE);

    不过首先上面的情况是www,blog都是在同一台服务器上,因为都是共用的同一台服务器,并且是同一个php-fpm所以能访问同一个路径下存储的session文件;

    那如果www.test.com, blog.test.com两个是不同的服务器,那怎么共享session呢?

    1.session都存在数据库里面,两个应用都访问同一个数据库,那么这样就可以解决共享的问题了, disucz, phpcms都是用的这种做法, 这种做法的弊端是,如果PV比较高的情况,会有性能的问题,因为每次session访问都要操作数据库。

    2.session存储在redis,memcache这种缓存里面,这种一种比较通用的做法,性能好,易扩展.

  • 相关阅读:
    bash八大扩展一网打尽
    MySQL命令行导出数据库
    Windows 7上的DirectX 11.1
    把KlayGE嵌入其他GUI框架
    KlayGE的资源载入系统
    学习路漫漫……
    写下我的第一篇Post,呵呵
    今天学习:CSS中的类class和标识id选择符(.和#号)
    Remove Duplicates from Unsorted List
    2012 TODO List
  • 原文地址:https://www.cnblogs.com/maxomnis/p/5515547.html
Copyright © 2011-2022 走看看