我无法使用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文件被写入 - 因此不是问题所在。 我已经为此工作了好几天............任何帮助都将不胜感激。
答案 0 :(得分:0)
快速提示:在Chrome中使用您的网络标签,以便您可以查看表单发布到的内容。 例如,此表单不会发布到自身,但会发布到https://www.eyez-on.com/EZMAIN/processLogIn.php
你必须进行2次卷曲通话。第一个到processlogin页面,发布您的凭据。它所采用的变量是电子邮件和密码,然后将信息存储到cookie jar中,并在下一次curl调用中包含cookie jar。