【问题标题】:refreshing a php page with a new url, drawn from a curl output使用从 curl 输出中提取的新 url 刷新 php 页面
【发布时间】:2012-04-14 15:14:47
【问题描述】:

我有一个表单,提交时需要用新的 url 刷新页面。

然而,新的 url 需要来自 curl 函数的输出。

目前,我可以让 curl 功能正常运行,但不是用那个 url 刷新页面,而是在页面上打印 url。

您知道我如何使用该 url 来刷新页面吗?

提前致谢

编辑:

$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, "http://uk.ImpulsePay.com/payforit?RouteID=5432&URL=Y"); 
curl_setopt($ch, CURLOPT_HEADER, 0);   


header( "Location: curl_exec($ch)");
curl_close($ch);

如果您访问上面的链接 - 它会显示一个在正文中有链接的页面。我基本上是在尝试获取页面正文中的链接,然后将页面刷新到该页面。

这有意义吗?

【问题讨论】:

  • 如果我理解正确的话,我认为你根本不需要 curl。请发布您的代码,以便我们更好地了解您要执行的操作。
  • 嗨,我确实需要使用 curl,因为基本上我提交给 curl 的 url 会吐出一个新的 url,这就是页面需要刷新到的 url。这是一个支付处理的事情,所以我想这是出于某种原因他们要求你这样做。

标签: php forms url curl


【解决方案1】:

您需要使用 PHP header() 方法,请参阅此页面:http://php.net/manual/en/function.header.php

这是他们的例子:

header("Location: http://www.example.com/"); /* Redirect browser */

注意以下内容:

请记住,必须在发送任何实际输出之前调用 header()

如果您需要在“打印”某些内容后更改标题,则需要使用输出缓冲,请参阅此页面以开始:http://php.net/manual/en/function.ob-start.php

更新: 您的 curl_exec( $ch ) 未执行,因为您无法在双引号内执行功能,您只能插入变量。

这是你想要做的:

$httpResponse = curl_exec( $ch );
header( "Location: $httpResponse");

假设响应只是一个 URL,这会将用户的浏览器重定向到 curl 请求返回的值。

更新: 我错过了您没有返回传输设置。 您需要在 CURLOPT_HEADER 行之后添加此行:

curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );

这将告诉 curl_exec 返回响应而不是布尔成功指示。

请参阅“返回值”部分:http://php.net/manual/en/function.curl-exec.php

【讨论】:

  • 我可以把代码放在php头方法前面吗?而不是任何需要输出的东西?谢谢
  • 是的,您可以,只要在 php 打开 之前没有任何内容并且您的代码行中没有任何回显/打印任何内容。否则,您需要使用前面提到的输出缓冲。
  • 好的,太好了...有没有办法可以获取 curl 函数的输出并将其用作刷新标题的 url?
  • 继续发布您用于 curl 请求的代码,以便更轻松地为您提出建议。
  • 嗨,这仍然不起作用,它将我的页面刷新到mydomain.com/payment-form/1,而不是预期的地址。有什么想法吗?如果您在 curl_exec( $ch ) 部分周围没有标题标签的情况下运行代码,它会输出一个域名,所以不确定为什么它只是将 1 放在我的域末尾
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-02
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 2012-02-08
相关资源
最近更新 更多