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

使用PHP CURL将数据发布到外部URL并重定向,php,curl,Php,Curl,这是我的设想。 我有一个外部URL: 现在我必须将数据发布到该URL,假设如下所示: 名字 类型 手机号码 现在,发布后,我必须重定向到 [redirect\u url]位于curl\u getinfo()内部。[redirect\u url]具有以下值: 但是,在回显curl_exec的结果后,它会显示“对象移动到此处”,“此处””重定向到 而不是 这是我的密码: $url = "https://staging.mead.com.ph/login/key=abcde"; $token

这是我的设想。 我有一个外部URL: 现在我必须将数据发布到该URL,假设如下所示:

  • 名字
  • 类型
  • 手机号码
  • 现在,发布后,我必须重定向到 [redirect\u url]位于curl\u getinfo()内部。[redirect\u url]具有以下值:

    但是,在回显curl_exec的结果后,它会显示“对象移动到此处”,“此处””重定向到 而不是

    这是我的密码:

    $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\u setopt($post,CURLOPT\u POSTFIELDS,$params);
    这将把请求
    内容类型
    更改为
    多部分/表单数据`

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

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


    您可能需要更改
    curl\u setopt($post,CURLOPT\u FOLLOWLOCATION,true)设置为false。然后,您将只获得第一个请求的标题和统计信息。

    重定向代码在哪里?很抱歉这个新手问题。但我必须使用标题重定向吗?curl的工作原理是否与表单Post类似,它在发布后会自动重定向?:)谢谢是的,你也可以。嗨,谢谢!在我的标题上,我注意到位置指示为/login/key=abcde。。。也许这就是我被重定向到而不是。。。如何将其重定向到正确的外部URL?:(您的url中必须有输入错误。mead.com.ph正在出售。