首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PHP CURL将数据发布到外部URL并重定向

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

Stack Overflow用户
提问于 2016-05-03 06:50:29
回答 1查看 1.3K关注 0票数 1

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

  1. 名字
  2. 类型
  3. 移动Num

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

但是,在响应curl_exec的结果之后,它说“对象移动到这里”和"HERE“重定向到https://myservername/login/key=abcde而不是https://staging.mead.com.ph/login/key=abcde

这是我的密码:

代码语言:javascript
运行
复制
$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);

有什么不对的?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-05-03 18:20:53

更新

是否有理由这样做:

代码语言:javascript
运行
复制
 curl_setopt($post, CURLOPT_PROXYUSERPWD, PROXY_AUTH);
 curl_setopt($post, CURLOPT_PROXY, PROXY_URL);
 curl_setopt($post, CURLOPT_PROXYPORT, PROXY_PORT);

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

有很多事情可能会出错。有一种方法可以排除故障。

添加以下选项:

代码语言:javascript
运行
复制
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);

然后获取标题、响应和状态。

代码语言:javascript
运行
复制
$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 requestContent-Typetomultipart/form-data`

通常在重定向页面上设置cookie。在响应头中查找SET-COOKIE。如果有cookie,那么您需要使用CURLOPT_COOKIEJAR

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

您可能希望将curl_setopt($post, CURLOPT_FOLLOWLOCATION, true);更改为false。然后,您将只获得第一个请求的标题和状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36997522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档