繁体   English   中英

使用PHP CURL将数据发布到外部URL并重定向

[英]Using PHP CURL to post data to external URL and redirect

这是我的情况。 我有一个外部URL: https : //staging.mead.com.ph/login/sso现在,我必须将数据发布到该URL,假设如下所示:

  1. 名称
  2. 类型
  3. 移动数字

现在,发布后,我必须重定向到curl_getinfo()内部的[redirect_url]。 [redirect_url]具有以下值: https : //staging.mead.com.ph/login/key=abcde

但是,回显curl_exec的结果后,它说“ 对象移到此处 ”和“ 此处 ”重定向到https:// myservername / login / key = abcde而不是https://staging.mead.com.ph/login / key = abcde

这是我的代码:

$url    =  "https://staging.mead.com.ph/login/key=abcde";
$token  = "token1234";
$params = array(
    "Name" => "Ana",
    "Type" => "A",
    "Mobilenum" => "0919123456"
    );
 foreach($params as $key => $value) { 
    $fields .= $key . '=' . $value . '&'; 
 }
 rtrim($fields, '&');
 $post = curl_init();

 curl_setopt($post, CURLOPT_URL, $url);
 curl_setopt($post, CURLOPT_POST, count($params));
 curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
 curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($post, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($post, CURLOPT_SSL_VERIFYHOST, false); 
 curl_setopt($post, CURLOPT_FOLLOWLOCATION, true);  

 curl_setopt($post, CURLOPT_PROXYUSERPWD, PROXY_AUTH);
 curl_setopt($post, CURLOPT_PROXY, PROXY_URL);
 curl_setopt($post, CURLOPT_PROXYPORT, PROXY_PORT);
 curl_setopt($post, CURLOPT_TIMEOUT,6);

 $result = curl_exec($post);

 echo $result;

 curl_close($post);

有什么事吗 提前致谢。

更新

是否有这些原因:

 curl_setopt($post, CURLOPT_PROXYUSERPWD, PROXY_AUTH);
 curl_setopt($post, CURLOPT_PROXY, PROXY_URL);
 curl_setopt($post, CURLOPT_PROXYPORT, PROXY_PORT);

如果是这样,则需要使用正确的参数,否则请删除它们。

-------更新结束---------

有很多事情可能出问题了。 有一种解决方法。

添加以下选项:

curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);

然后获取标题,响应和统计信息

$requestHeaderText = curl_getinfo($ch, CURLINFO_HEADER_OUT); 
$skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE)); 
$responseHeaderText = substr($data,0,$skip);
$response = substr($data,$skip);
$stats = curl_getinfo($ch);

在重定向标题中,您将看到一个“位置”,这是您要重定向的位置。

您可能要尝试curl_setopt($post, CURLOPT_POSTFIELDS, $params); this will change the request curl_setopt($post, CURLOPT_POSTFIELDS, $params); this will change the request Content-Type curl_setopt($post, CURLOPT_POSTFIELDS, $params); this will change the request to multipart / form-data`

通常,在重定向页面上设置cookie。 在响应标题中查找SET-COOKIE。 如果有Cookie,则需要使用CURLOPT_COOKIEJAR

还可以在响应中查找javascript。 有时,重定向是在执行安全检查等时使用JavaScript完成的。

您可能需要更改curl_setopt($post, CURLOPT_FOLLOWLOCATION, true); 虚假。 然后,您将仅获得第一个请求的标头和统计信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM