卷曲后重定向不起作用

时间:2012-04-11 04:13:35

标签: php codeigniter curl payment-gateway

我有一个codeigniter应用程序,通过authorize.net有一个结帐系统。我使用的authorize.net库预先形成卷曲来进行付款,但在完成后我无法重定向,因为

headers already sent by (output started at /Users/phil/Sites/Medbridge/httpdocs/application/libraries/AuthorizeCimLib.php:1

这就是日志所说的。如果我注释掉付款的话,它会重定向。我不知道我是否理解卷曲,这就是为什么它正在做某事或者我需要更改一些卷曲设置。
谢谢

修改
这是我正在使用的库的链接,它很大,不想重新发布整个代码
http://www.communitymx.com/content/article.cfm?page=4&cid=FDB14

这是卷曲部分,也许有人可以看到这是否正在输出标题

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $this->_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    curl_setopt($ch, CURLINFO_HEADER_OUT, FALSE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $this->_xml);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $this->_response = curl_exec($ch);

谢谢

2 个答案:

答案 0 :(得分:1)

这是因为服务器向浏览器输出了一些内容,之后无法通过php重定向。

正如评论中所提到的,您最有可能在代码中的某处包含一些空格。对于练习和较少的故障排除,您不需要在php文件的底部包含结尾?>。这根本不是必需的,有时可能会在?>之后找到一个空格,这会在执行代码时产生回声。

include代码中的任何文件可能在文件末尾有吗?

如果可能,另一个“解决方案”是回应

<script type="text/javascript">
    top.location = '<?=$str_redirect_url?>';
</script>

修改

如果您使用的是Codeigniter,则应检查modelhelperlibrary个文件是否有空格。

答案 1 :(得分:0)

也许您可以使用AJAX发出付款电话,获取响应并使用Javascript重定向?