Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP存储临时变量?_Php - Fatal编程技术网

使用PHP存储临时变量?

使用PHP存储临时变量?,php,Php,好的,在我的网站上,我有很多Twitch的嵌入页面。在所有嵌入项下面,我还有一个授权流,这样人们就可以登录到Twitch并单击follow按钮 通常,流将从以下位置开始:mydomain.com/channel/name,在流结束时,它们将返回到mydomain.com/auth。最初,我使用它是为了使用javascript将开始URL存储在浏览器会话存储中;然后,当它们到达最终的auth端点时,我将使用javascript并提取会话存储,然后将它们重新定位到原始URL 这一直很有效。。。然而,

好的,在我的网站上,我有很多Twitch的嵌入页面。在所有嵌入项下面,我还有一个授权流,这样人们就可以登录到Twitch并单击follow按钮

通常,流将从以下位置开始:
mydomain.com/channel/name
,在流结束时,它们将返回到
mydomain.com/auth
。最初,我使用它是为了使用javascript将开始URL存储在浏览器会话存储中;然后,当它们到达最终的auth端点时,我将使用javascript并提取会话存储,然后将它们重新定位到原始URL

这一直很有效。。。然而,我在我的网站上的一个特性是能够使用自定义规范URL代理到我网站上的频道。因此有人可以使用
theirdomain.com
来代理
mydomain.com/channel/them

这导致会话存储出现问题,因为会话存储遵循跨域限制。它们将从域名
theirdomain.com
开始,在域名
mydomain.com/auth
结束。由于域不匹配,我无法访问会话存储以将它们转发回原始URL

我正在使用PHP,所以我想知道解决这个问题的最佳方法是什么。我想,不用将起始URL存储在会话存储中,我可以使用AJAX将其保存到使用PHP的临时存储中,并链接到它们的IP地址。然而,我不知道该怎么做


PHP是否有某种具有可定义TTL的临时存储系统?这也适用于多个域?(应该是同一台服务器)

如果请求被代理到同一个应用程序,那么会话是可访问的,导致问题的只是会话标识符(存储在cookie中,因此存在跨域问题)

您可以做的是将会话标识符从一个域传递到另一个域,作为get请求的一部分,因此当您从
theirdomain.com
跳到
example.com
时,请使用格式为
http://example.com/blah/?session_id=[来自cookie的会话id]
(理想情况下使用https)

然后在example.com上获取会话id并使用它在该域的cookie中设置会话id,它将从源域加载会话


这可以用于会话劫持,但在cookie中包含会话id也是可以的,所以通常可以这样做,不过使用https端点将提高安全性

你看过会话管理吗?比如在数据库中存储会话变量?这应该是跨域的,但我不知道它在你的网站上会如何运行…你可以使用http referer http referer可以伪造,不要每次都使用它我不确定我是否得到了全部信息,但为什么你不能允许他们的域名/auth?这就解决了一个问题?会话管理不起作用,因为它不是跨域的。我不能允许他们的域名,因为Twitch只允许一个URL。