无法通过curl进行身份验证

时间:2014-07-09 15:59:57

标签: php curl forms-authentication

我无法使用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 个答案:

答案 0 :(得分:0)

快速提示:在Chrome中使用您的网络标签,以便您可以查看表单发布到的内容。 例如,此表单不会发布到自身,但会发布到https://www.eyez-on.com/EZMAIN/processLogIn.php

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