Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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:在多个iframe中使用iframe中设置的会话变量_Php_Session_Iframe_Session Variables - Fatal编程技术网

PHP:在多个iframe中使用iframe中设置的会话变量

PHP:在多个iframe中使用iframe中设置的会话变量,php,session,iframe,session-variables,Php,Session,Iframe,Session Variables,我使用一个名为liferay的内容管理系统,它可以让您非常轻松地将iFrame添加到页面中。我有各种不同的iframe,我想使用相同的php会话变量。如果主网页正在设置会话,那么这不会是一个问题。问题是会话是在一个iframe中创建的,我想在另一个iframe中使用它们 通常,会话id可以通过url传递,但这不是我设置它的方式。没有那样的导航。iframe根据在第一个iframe中设置的会话变量显示数据库中的内容,但它们没有链接 有人能帮我吗?我不确定iframe还能如何共享会话变量 谢谢 Jo

我使用一个名为liferay的内容管理系统,它可以让您非常轻松地将iFrame添加到页面中。我有各种不同的iframe,我想使用相同的php会话变量。如果主网页正在设置会话,那么这不会是一个问题。问题是会话是在一个iframe中创建的,我想在另一个iframe中使用它们

通常,会话id可以通过url传递,但这不是我设置它的方式。没有那样的导航。iframe根据在第一个iframe中设置的会话变量显示数据库中的内容,但它们没有链接

有人能帮我吗?我不确定iframe还能如何共享会话变量

谢谢


Jonesy

如果域保持不变,第一个iframe将创建会话,第二个iframe将在
session\u start()之后拾取会话。


你真的不需要在URL中传递这个会话。写入会话数据时的第一个iframe将锁定会话数据。但是有一个问题,对于iframe,您永远无法确定第一个iframe是否先加载,这可能是由于网络拥塞或其他原因,第二个iframe可能先加载。因此,也许可以稍微抵消一下加载第二个iframe的延迟。

正如Sabeen所说,如果您使用基于cookie的会话跟踪(如果用户代理支持cookie,PHP默认使用cookie),会话将自动拾取。如果Iframe中加载的页面来自不同的子域,则可能会遇到问题。在这种情况下,您必须使用
session.cookie\u domain
配置变量


ini_集(“session.cookie_domain”,“.domain.com”)

谢谢您的回复。当我试图通过iframe设置会话变量时,我无法在任何其他iframe页面(随后加载)中访问它们。但是当我在一个新窗口中打开iframe设置变量时,我可以从evry iframe访问这些变量。这就像它在iframe中的事实使得变量保持私有,但是在新窗口中打开它会使它们公开。希望这是有道理的。我要确保使用session_start();为什么不在主页中设置session_id并在iframes@Jonesy .. 你能从第一个和第二个iframe调用的PHP文件中发布一些代码吗?谢谢,它们只是本地的。liferay在localhost:8080上运行,php文件localhost/clientportal
echo session_id()以确保会话ID在这两个页面中相同。谢谢您的提示。设置会话的iframe web的会话id不同于任何其他iframe页面。你认为这是为什么?在谷歌快速搜索之后,我认为问题与你的主机名(localhost)有关。您是否可以通过编辑主机文件来使用别名,例如example.com?以下是我的建议。1) 请尝试使用虚拟主机或别名。2) 如果1不起作用,请尝试将
session.cookie\u domain
设置为127.0.0.1。3) 如果2不起作用,请安装LiveHTTPHeaders Firefox插件,找出会话cookie未保存的原因。