我有一个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);
谢谢
答案 0 :(得分:1)
这是因为服务器向浏览器输出了一些内容,之后无法通过php重定向。
正如评论中所提到的,您最有可能在代码中的某处包含一些空格。对于练习和较少的故障排除,您不需要在php文件的底部包含结尾?>
。这根本不是必需的,有时可能会在?>
之后找到一个空格,这会在执行代码时产生回声。
您include
代码中的任何文件可能在文件末尾有吗?
如果可能,另一个“解决方案”是回应
<script type="text/javascript">
top.location = '<?=$str_redirect_url?>';
</script>
修改强>
如果您使用的是Codeigniter,则应检查model
,helper
和library
个文件是否有空格。
答案 1 :(得分:0)
也许您可以使用AJAX发出付款电话,获取响应并使用Javascript重定向?