gpt4 book ai didi

php - session 数据的 file_get_contents(或 curl 或 fopen)问题

转载 作者:行者123 更新时间:2023-12-02 05:24:27 25 4
gpt4 key购买 nike

我有一个显示 session 值的页面,我们称它为 www.domain-a.com/master.php,如果我直接从浏览器输入它,它会显示 session 值。

但是当我尝试使用 file_get_contents(或其他方法)从另一个域(如 www.domain-b.com/slave.php)下载它时,它不会检索受 session 保护的内容,只是一个空白页。

我知道这是因为服务器 b 正在尝试检索内容,而不是用户...

任何人都知道如何告诉域-a 谁在检索信息是用户?有办法检索 session 值吗?

问候,

何塞

最佳答案

有一个有用的解决方案。

将 PHPSESSID 发送到另一台服务器没有意义,因为 session 数据存储在服务器上的文件中,这就是 file_get_contents 阻止 http 服务的原因。很简单。客户端使用 http 连接到服务器,服务器当然会打开包含 session 数据的文件以进行写入。 file_get_contents 创建连接到同一服务器的另一个连接(另一个线程)。如果设置了 session ID,则服务器会打开包含 session 数据的同一文件,但该文件已经打开。

所以这里有一个很好的解决方案可以防止这种碰撞:

$opts = array( 'http'=>array( 'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: ".session_name()."=".session_id()."\r\n" ) );

$context = stream_context_create($opts);
session_write_close(); // this is the key
$obsah = file_get_contents( 'http://blablabla.cz', false, $context);

它工作正常。对对对

关于php - session 数据的 file_get_contents(或 curl 或 fopen)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/766109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com