【问题标题】:Redirect not working after curl卷曲后重定向不起作用
【发布时间】:2012-04-23 09:21:18
【问题描述】:

我有一个 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);

谢谢

【问题讨论】:

  • 正如错误所说,标题之前没有输出。
  • 我看到了,那么 curl 被认为是输出吗?
  • 确保在您的 AuthorizeCimLib.php 文档顶部开始
  • 在发送 HTTP 标头之前有一些输出(但必须先输出标头)
  • 我在

标签: php codeigniter curl payment-gateway


【解决方案1】:

这是因为服务器向你的浏览器输出了一些东西,之后就无法通过php重定向了。

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

您是否在代码中includeing 任何文件末尾可能有

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

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

编辑:

如果您使用 Codeigniter,您应该检查您的 modelhelperlibrary 文件中的空格。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我会考虑做一个ajax调用,这可以解决很多问题,唯一认为我不喜欢ajax调用的是浏览器(IE)问题
    • 只要确保你使用 jQuery :)
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多