【问题标题】:Detect redirection of remote url with php用php检测远程url的重定向
【发布时间】:2012-07-14 09:30:31
【问题描述】:

我有一个 php 页面,其中加载了一些预定义的选项和带有 html 代码的文本框。
稍后它会在远程页面上发布数据。

<img src="data:<?php echo $captchaQuery['content_type'] ?>;base64,<?php echo $captcha ?>" alt="Captcha" height="30" align="absbottom" id="msg_captcha" name="msg_captcha">
<input type="text" name="f_captcha" size="8" maxlength="5">
<input type="submit" value="SEND" class="btnorange">

大部分时间一切正常,包括远程验证码验证。当我按下发送按钮时,页面提交到远程 url 并重新加载 php 页面。

我的问题是,'当用户在文本框中输入错误数据时,远程站点会重定向到另一个页面,我怎样才能抓住该重定向链接并将用户重定向到该页面,而不是重新加载我的 php?

提交数据的目标url是:$baseurl。 ?psean=。

如果有错误重定向到:$baseurl。 ?psean=验证码错误

【问题讨论】:

  • 错误输入的重定向是否在您的控制之下?如果是这样,您需要在该页面上捕获事件。
  • 远程站点上没有重定向。网站决定什么是正确的或不正确的。
  • 是的,但是如果信息错误,它会将用户发送到哪里?回到你的网站,对吧?因为如果情况并非如此,那么您无能为力。除了,尝试和 Ajax 提交并捕获响应......但由于跨域提交,这将是复杂的......
  • 远程站点实际上拒绝并重定向到同一页面,并且 url 本身带有错误消息。
  • 您能否使用您的表单所在的示例 url 以及您返回的 url 编辑原始问题?

标签: php redirect curl


【解决方案1】:

查看服务器是否在响应标头中发送重定向位置

$url = "http://www.fb.com";
$headers = get_headers($url, 1);
if(!empty($headers['Location'])) {
  $location = (array) $headers['Location'];
  header('Location:' . end($location));
}

【讨论】:

  • 小错误:current() 需要一个数组。 $headers 是,但 $headers['Location'] 不是。
猜你喜欢
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多