phpredis - php Redis如何使多个域名共用一个session_id?
解决办法:
<code>ini_set('session.cookie_domain', '.domain.com');</code>
PHP文档:
http://php.net/manual/zh/function.sessio...
http://php.net/manual/zh/session.configu...
=========================================================================
现在需要用redis存储session,由于有多个域名,
例如:
a.domain.com,domain.com,www.domain.com
其中一个登陆了就需要另外的也是登陆状态,
就像淘宝一样,你登陆了taobao.com在tmall.com天猫中也是登陆的。session_id是一样的。
这个用redis来要配置什么?
回复内容:
解决办法:
<code>ini_set('session.cookie_domain', '.domain.com');</code>
PHP文档:
http://php.net/manual/zh/function.sessio...
http://php.net/manual/zh/session.configu...
=========================================================================
现在需要用redis存储session,由于有多个域名,
例如:
a.domain.com,domain.com,www.domain.com
其中一个登陆了就需要另外的也是登陆状态,
就像淘宝一样,你登陆了taobao.com在tmall.com天猫中也是登陆的。session_id是一样的。
这个用redis来要配置什么?
domain.com
a.domain.com
www.domain.com
都存在一个共同的域domain.com,只要你把PHPSESSID这个cookie的域设为.domain.com,那这三个域都可以访问这个PHPSESSID的cookie,也就能读取Redis里存储的会话数据.
http://php.net/manual/zh/function.session-set-cookie-params.php
而 taobao.com 和 tmall.com 是两个完全不同的域,比如可以这样实现跨域:
用隐藏的图片请求实现跨域登录(比如登录taobao后,访问tmall发现也登录了):
taobao.com添加隐藏的图片链接访问tmall.com进行登录,生成tmall.com的Cookie(Firebug可以看到Cookies下既有taobao.com,也有tmall.com的Cookie):
<code><div style="display:none;"><img src="/static/imghw/default1.png" data-src="tmall.com/login.php?token=xxx" class="lazy" alt="phpredis - php Redis如何使多个域名共用一个session_id?" ></div> </code>
其中token是一个经过加密的用户身份令牌,tmall.com拿到解密后登录对应的用户,从而生成域为tmall.com的cookie.
简单点说,把生成、保存、读取session_id
的逻辑从php中独立出来就可以了,跟redis的半毛钱关系在于,以session_id
为key在redis里保存用户的信息。。
我觉得楼主的问题是没搞清楚回话保持机制,建议先研究下。
@eechen 的回答我补充一下:
三个网站均用sessionsetcookie_params把session对应的cookie域设置为".domain.com"
参看
http://php.net/manual/zh/function.session-set-cookie-params.php

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

Redis集群模式通过分片将Redis实例部署到多个服务器,提高可扩展性和可用性。搭建步骤如下:创建奇数个Redis实例,端口不同;创建3个sentinel实例,监控Redis实例并进行故障转移;配置sentinel配置文件,添加监控Redis实例信息和故障转移设置;配置Redis实例配置文件,启用集群模式并指定集群信息文件路径;创建nodes.conf文件,包含各Redis实例的信息;启动集群,执行create命令创建集群并指定副本数量;登录集群执行CLUSTER INFO命令验证集群状态;使

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

使用 Redis 指令需要以下步骤:打开 Redis 客户端。输入指令(动词 键 值)。提供所需参数(因指令而异)。按 Enter 执行指令。Redis 返回响应,指示操作结果(通常为 OK 或 -ERR)。

要查看 Redis 中的所有键,共有三种方法:使用 KEYS 命令返回所有匹配指定模式的键;使用 SCAN 命令迭代键并返回一组键;使用 INFO 命令获取键的总数。

Redis 使用哈希表存储数据,支持字符串、列表、哈希表、集合和有序集合等数据结构。Redis 通过快照 (RDB) 和追加只写 (AOF) 机制持久化数据。Redis 使用主从复制来提高数据可用性。Redis 使用单线程事件循环处理连接和命令,保证数据原子性和一致性。Redis 为键设置过期时间,并使用 lazy 删除机制删除过期键。

启动 Redis 服务器的步骤包括:根据操作系统安装 Redis。通过 redis-server(Linux/macOS)或 redis-server.exe(Windows)启动 Redis 服务。使用 redis-cli ping(Linux/macOS)或 redis-cli.exe ping(Windows)命令检查服务状态。使用 Redis 客户端,如 redis-cli、Python 或 Node.js,访问服务器。
