【问题标题】:Issue with sending POST form data with PHP : cURL使用 PHP 发送 POST 表单数据的问题:cURL
【发布时间】:2020-03-17 22:03:53
【问题描述】:


下面是 2 段代码,其结果应该是相同的(至少我愿意)。此结果包括通过发送表单一键登录网站。
HTML 效果很好,可以让我完美连接。
PHP 让我很难受。 PHP/cURL 运行正确,我的意思是,如果我更改登录名/密码变量,服务器会发回“错误的用户名/密码”,但如果我发送正确的登录名/密码,服务器会进入深思熟虑,永远不会回答我.

你们对这种行为有什么建议吗? (我当然会错过一些东西......)。
谢谢

«AutoConnect.HTM»:

<html>
<script type="text/javascript">
window.onload = function () { document.getElementById('autolog').submit(); }
</script>
<body>
<form id="autolog" action="https://website.com/account/logon" method="post">
  <input name="Login" value="User">
  <input name="Password" value="Pass">
</form>
</body>
</html>

«AutoConnect.PHP»:

<?php
 $url = 'https://website.com/account/logon';
 $postinfo = http_build_query(array(
         'Login'    => 'User',
         'Password' => 'Pass'
         ));
 $client = 'Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)';
 $header = array(
        'Connection: Keep-Alive',
        'Accept: */*',
        'Accept-Language: fr-FR',
        'Content-type: application/x-www-form-urlencoded',
        'Content-Length: '.(strlen($postinfo))
        );
 $options = array(
        CURLOPT_HTTPHEADER     => $header,
        CURLOPT_HEADER         => false,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_USERAGENT      => $client,
        CURLOPT_AUTOREFERER    => true,
        CURLOPT_POST           => 1,
        CURLOPT_POSTFIELDS     => $postinfo,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_URL            => $url
        );
 $ch = curl_init();
 curl_setopt_array($ch,$options);
 $result = curl_exec($ch); 
 curl_close($ch);
 echo $result;
?>

【问题讨论】:

    标签: php forms curl post


    【解决方案1】:

    在网上闲逛了几个小时后,我做到了!
    stackoverflow 上有解决方案,但我错过了一个关键词。
    我尝试连接的服务器是一个带有 ASPXAUTH 的 «ASP» 服务器。
    必须集成 cookie 的使用。 我在这里给你最终的 PHP 代码:

    <?php
    $url   = 'https://website.com/account/logon';
    $post  = http_build_query(array(
             'Login'    => 'User',
             'Password' => 'Pass'
             ));
    $client = 'Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)';
    $ckfile= 'MyCookie.txt'; 
    $options1= array(
            CURLOPT_HEADER         => 0,
            CURLOPT_SSL_VERIFYPEER => false,   // accepts all certificats
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_USERAGENT      => $client,
            CURLOPT_COOKIEJAR      => $ckfile, // cookie needed 
            CURLOPT_RETURNTRANSFER => true,    // returns string
            CURLOPT_FOLLOWLOCATION => true
            );
    $options2= array(
            CURLOPT_COOKIEFILE     => $ckfile, // cookie used
            CURLOPT_POST           => true,
            CURLOPT_POSTFIELDS     => $post    // form datas
            );
    $ch      = curl_init($url);
    curl_setopt_array($ch,$options1);
    $output = curl_exec($ch); 
    curl_setopt_array($ch,$options2);
    $output = curl_exec($ch); 
    echo $output;
    ?>
    

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      • 2021-05-05
      • 2020-04-05
      相关资源
      最近更新 更多