1

我有一个 codeigniter 应用程序,它通过 authorize.net 有一个结帐系统。我使用的 authorize.net 库执行 curl 进行付款,但完成后我无法重定向,因为

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);

谢谢

4

2 回答 2

1

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

如评论中所述,您很可能在代码中的某处包含一些空格。为了练习和减少故障排除,您不需要?>在 php 文件的底部包含结尾。这根本不是必需的,有时可能会在其后出现一个空格,?>这会在代码执行期间导致回显。

您是否include在代码中使用文件末尾可能有 a的任何文件?

如果可以的话,另一个“解决方案”是回显

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

编辑:

如果你使用 Codeigniter,你应该检查你的model,helperlibrary文件是否有空格。

于 2012-04-11T07:00:41.940 回答
0

也许您可以使用 AJAX 来发出支付调用、获取响应并使用 Javascript 重定向?

于 2012-04-11T05:52:20.590 回答