PHP:重定向网站时,会话变量不可用

时间:2020-03-05 18:46:07  来源:igfitidea点击:

我必须为我的校友小组管理一个小型网站,该网站由我的ISV托管。该网址类似于www.myIsv.com/myWebSite/,该网址非常难看且令人难以忘怀。网络服务器的主要管理员已经注册了域名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>

它工作正常,但是某些功能(例如PHP Session变量)不再起作用!有人有纠正建议吗?

编辑:
这在IE和Firefox上均不起作用(无插件)

谢谢

解决方案

回答

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

PHP可以使用ID(服务器上生成的字母数字哈希)识别会话。通过使用称为PHPSESSID的cookie或者类似的cookie在请求之间传递ID(我们可以在浏览器的帮助下查看网站设置的cookie ...在Firefox上,我们具有Firebug + FireCookie和出色的Web Developer Toolbar。 ,我们可以轻松查看Cookie列表)。

所以... PHP正在通过PHPSESSID cookie传递会话ID。但是我们可以将会话ID作为普通的GET请求参数传递。

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

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

我已经有一段时间没有使用PHP了,但是我认为这可以工作。

回答

如果直接点击http://www.myIsv.com/myWebSite/,会话变量是否起作用?在我看来,服务器配置将决定会话是否可以工作。但是,如果我们以某种方式在www.mysmallwebsite.com上开始会话(看起来好像不是在使用PHP,但是也许我们正在使用),那么我们将无法在不编写一些后端的情况下传输会话数据。将会话从服务器移到服务器的逻辑。

回答

将session_start()放在脚本的开头,看看是否可以再次访问变量。

回答

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

回答

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

@亚历山德鲁
不幸的是,这不在同一台Web服务器上

回答

我们有什么浏览器/广告插件?可能是浏览器或者某些其他软件(甚至可能是网络服务器)阻止了http://www.myIsv.com/myWebSite/中的会话,因为该框架位于其他站点,考虑其XSS攻击。

如果该会话在http://www.myIsv.com/myWebSite/上运行而没有框架,则我们始终可以从http://www.mysmallwebsite.com重定向到丑陋的url,而不使用框架。

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

回答

So when you place the html link to the ugly domain name, assuming that it is the same PHP server (with the same sessions initialized), you can put it like this ...
  
  www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

从安全角度来看,我真的非常希望这行不通

回答

我们还可以在用户端设置一个cookie,然后在重定向后直接检查该cookie的存在,如果我们对友好的URL感到不便,则意味着我们不必在查询字符串中传递PHPSESSID 。

回答

当人们到达@ www.mysmallwebsite.com时,我将重定向到http://www.myIsv.com/myWebSite/

<?php header('Location: http://www.myIsv.com/myWebSite/'); ?>

这就是我在www.mysmqllwebsite.com/index.php中拥有的所有内容
这样,我们不必担心browserdr的兼容性,也不必担心会话的工作情况,只需重新编写就可以了。

回答

会话绑定到服务器和域。跨域使用框架集会导致各种损坏,因为这并非设计目的。

尝试使用apache mod rewrite创建"直通重定向",规则中的"代理"标志([P])是我们需要的魔术标志

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html上的文档