代码之家  ›  专栏  ›  技术社区  ›  user2760152

无法使用curl进行身份验证

  •  0
  • user2760152  · 技术社区  · 11 年前

    我无法使用curl验证: https://www.eyez-on.com/EZMAIN/login.php 这是我的代码(基于问题 Login to remote site with PHP cURL ):

    <?php
    
    
    echo date('l jS \of F Y h:i:s A');
    echo "<br>";
    
    //username and password of account
    $username = trim($values["email@domain.com"]);
    $password = trim($values["mypassword"]);
    
    
    
    //login form action url
    $url="https://www.eyez-on.com/EZMAIN/login.php"; 
    $postinfo = "email=".$username."&password=".$password;
    
    $cookie_file_path = "/cookie/cookie.txt";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_NOBODY, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
    //set the cookie the site has for certain features, this is optional
    curl_setopt($ch, CURLOPT_COOKIE, "cookiename=0");
    curl_setopt($ch, CURLOPT_USERAGENT,
        "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
    curl_exec($ch);
    
    //page with the content I want to grab
    curl_setopt($ch, CURLOPT_URL, "https://www.eyez-on.com/EZMAIN/account.php");
    //do stuff with the info with DomDocument() etc
    
    $html = curl_exec($ch);
    
    echo $html;
    
    curl_close($ch);
    
    ?>
    

    我想知道问题是否在于登录页面表单具有GET方法。 以下是登录页面的源代码片段:

        <form action="" method="get" id="login">
            <fieldset>
                <legend>Login</legend>
                <ul>
                    <li>
                        <label for="email"><span class="required">User Account</span></label>
                        <input id="email" name="email" class="text required email" type="text" />
                        <label for="email" class="error">This must be a valid email address</label>
                    </li>
    
                    <li>
                        <label for="password"><span class="required">Password</span></label>
                        <input name="password" type="password" class="text required" id="password" minlength="4" maxlength="20" />
                    </li>
    
    
                </ul>
            </fieldset>
    
            <fieldset class="submit">
                                    <input type="submit" class="button" value="Login..." />
            </fieldset>
    
            <div class="clear"></div>
        </form>
    

    我的最终目标是登录后,转到我的一个帐户页面,获取一些数据并用这些数据创建一个php变量。 cookie目录是每个人都可以读/写的,cookie.txt文件是可以写的,所以这不是问题。 我已经为此工作了好几天。。。。。。。。。。。。任何帮助都将不胜感激。

    1 回复  |  直到 9 年前
        1
  •  0
  •   tkon99    11 年前

    快速提示:使用chrome中的网络选项卡,这样您就可以看到表单要发布的内容。 例如,此表单不发布到自身,但它发布到 https://www.eyez-on.com/EZMAIN/processLogIn.php

    你必须打两个卷曲电话。第一个进入processlogin页面,发布您的凭据。它使用的变量是电子邮件和密码,然后将信息存储到cookie jar中,并在下次curl调用中包含cookie jar。