使用跨域表单处理器的PHP会话

时间:2010-10-14 02:42:11

标签: php

我的网站上有一个下载页面。为了达到它,你必须填写一份表格,遗憾的是由于我无法控制的遗留编码,表格是通过另一个域(我们的crm所在的地方)的脚本处理的。

我无法传递您在成功将表单提交到下载页面时添加的会话值。同样,用户填写表单,处理表单并添加会话值,并将它们返回到下载页面。

在任何其他情况下,下载页面都应该无法使用。不希望人们绕过表单直接下载。

处理器脚本代码

<?PHP
  session_start();
  //lots of database stuff

  //successful insertion to database
  if (($row = mysql_fetch_assoc($result)))
    {
        $redirect .= '?sessionid=xvyXXXXX';
        header("Location: http://" . $redirect);
    }
?>

软件下载页面代码

<?php
$code = $_GET['sessionid'];

if(strcmp( $code , 'xvyXXXXX'  ) != 0) {
    header("Location: http://kinetick.com/V3/download-registration.php");
} else {
       header("Location: http://kinetick.com/V3/download-software.php");
}
?>

我无法让这个工作。还有另一种方法考虑到处理器脚本在另一个域上吗?目前当我删除if / else并将其打印出来时显示一个空数组。需要一些帮助大时间!全部

1 个答案:

答案 0 :(得分:0)

标题(“位置:http://”。$ redirect);

这条线最终会像这样......

http://?sessionid=1234xxx

遗漏了什么?

应为http://domain.com/somepage.php?sessionid=1234xxx

... 我宁愿查看curl库,因为这将隐藏会话ID,用户永远不会知道哪个会话ID被传递到该网站,除非他们已经阅读过这篇文章:)