Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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:会话变量aren';站点重定向时不可用_Php_Session_Session Variables - Fatal编程技术网

PHP:会话变量aren';站点重定向时不可用

PHP:会话变量aren';站点重定向时不可用,php,session,session-variables,Php,Session,Session Variables,我必须为我的校友会管理一个小网站,该网站由我的ISV托管。url类似于www.myIsv.com/myWebSite/,非常难看,而且非常容易伪造。Web服务器的主要管理员已注册域名www.mysmallwebsite.com,并将index.html与以下内容放在一起: <html> <head> <title>www.mysmallwebsite.com</title> </head> <frameset> &l

我必须为我的校友会管理一个小网站,该网站由我的ISV托管。url类似于www.myIsv.com/myWebSite/,非常难看,而且非常容易伪造。Web服务器的主要管理员已注册域名www.mysmallwebsite.com,并将index.html与以下内容放在一起:

<html>
<head>
<title>www.mysmallwebsite.com</title>
</head>

<frameset>
   <frame src="http://www.myIsv.com/myWebSite/" name="redir">
      <noframes>
        <p>Original location:
          <a href="www.myIsv.com/myWebSite/">http://www.myIsv.com/myWebSite/</a>
        </p>
      </noframes>
 </frameset>  
</html>

www.mysmallwebsite.com
原址:

它工作得很好,但是像PHP会话变量这样的一些特性不再工作了!有人有纠正这一点的建议吗

编辑: 这在IE和Firefox上都不起作用(没有插件)

谢谢你是什么意思? 你是说当你从www.mysmallwebsite.com转到www.myIsv.com/myWebSite/时,PHP会话丢失了吗

PHP使用ID(服务器上生成的字母数字散列)识别会话。ID通过一个名为PHPSESSID的cookie或类似的东西从一个请求传递到另一个请求(你可以在浏览器的帮助下查看网站设置的cookies…在Firefox上,你有Firebug+FireCookie和奇妙的Web开发者工具栏…通过它,你可以毫不费力地查看cookies列表)

所以。。。PHP正在通过PHPSESSID cookie传递会话ID。但是您可以将会话ID作为简单的GET请求参数传递

因此,当您将html链接放置到丑陋的域名时,假设它是相同的PHP服务器(初始化了相同的会话),您可以这样放置它

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>
www.myIsv.com/myWebSite/?PHPSESSID=

我已经有一段时间没有使用PHP了,但我认为这会起作用

如果直接点击,会话变量是否有效?在我看来,服务器配置将决定会话是否工作。但是,如果您以某种方式在www.mysmallwebsite.com上启动会话(看起来不像是在使用PHP,但可能是这样),如果不编写一些后端逻辑将会话从一个服务器移动到另一个服务器,您将无法传输会话数据。

粘贴会话\u start()在脚本的开头,查看是否可以再次访问变量。

它不起作用,因为客户端会话是按域进行的。所有cookie都保存在mysmallwebsite.com中,因此myIsv.com无法访问它们。

@pix0r www.myIsv.com/myWebSite/>会话变量工作 www.mysmallwebsite.com->会话变量不起作用

@亚历山大
不幸的是,这不在同一个Web服务器上

您有什么浏览器/广告?可能是您的浏览器或某些其他软件(甚至可能是web服务器)正在阻止会话从框架中工作,因为它位于不同的站点,认为这是XSS攻击

如果会话在没有框架的情况下工作,您可以始终向我们重定向到丑陋的url,而不是使用框架

编辑: 我刚刚在我的一个使用会话的站点上尝试了你的框架代码,firefox运行良好,我登录并保持登录状态,但IE7再次直接登录了我

因此,当您将html链接放置到丑陋的域名时,假设它是相同的PHP服务器(初始化了相同的会话),您可以这样放置它

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>
www.myIsv.com/myWebSite/?PHPSESSID=


从安全的角度来看,我真的很希望这不起作用

您也可以在用户端设置cookie,然后在重定向后直接检查cookie的存在,如果你担心友好的URL,这意味着你不必在查询字符串中传递PHPSESSID。

当人们到达@www.mysmallwebsite.com时,我只需重定向到


这就是我在www.mysmqllwebsite.com/index.php中的全部内容

这样,您就不必担心浏览器的兼容性,也不必担心会话是否正常工作,只需进行重播,您就会很好。

会话与服务器和域绑定。跨域使用框架集将导致所有类型的破坏,因为它不是这样设计的

尝试使用apachemod rewrite创建“passthrough重定向”,规则中的“代理””标志([p])是您需要的神奇标志

文件在