这是按钮的HTML
<form id="loginbox_form" class="okform initialized" method="post" action="https://www.okcupid.com/login">
<div id="login_usernameContainer" class="inputcontainer input empty">
<input id="login_username" name="username" placeholder="Your email or username"><span class="okform-feedback message empty" style="height: 0"></span>
<div class="icon okicon"></div>
</div>
<div id="login_passwordContainer" class="inputcontainer input empty">
<input id="login_password" type="password" name="password" placeholder="Password"><span class="okform-feedback message empty" style="height: 0"></span>
<div class="icon okicon"></div>
</div>
<button type="submit" id="sign_in_button" class="flatbutton">Let’s go</button>
</form>
我正在尝试创建一个尝试登录的简单脚本,然后在登录后获取HTML。
如果帐户信息无效,则现在HTML
中有此字符串您的信息不正确。再试一次。
这是我到目前为止的代码
<?php
$username = 'FAKEUSERNAME';
$password = 'FAKEPASSWORD';
$loginUrl = 'http://www.okcupid.com/login';
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'login_username='.$username.'&login_password='.$password);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec($ch);
$content = curl_exec($ch);
curl_close($ch);
echo $content;
?>
但无论出于何种原因,当我打开我的.php页面时,我只是获得了okcupid.com的登录页面。我只是希望能够查看帐户登录是否失败。
另一个想法是尝试登录页面,然后转到另一个页面,看看该页面是否加载。您登录时只能访问的页面是
答案 0 :(得分:0)
登录数据应设置为cookie,并在下一个请求时将其读回。
curl -c cookies.txt -d "username=uname&password=yourpassword" http://site/login
要设置Cookie,请在后续请求中使用以下代码。
curl -b cookies.txt http://site/newpage
在PHP中,这是使用curl设置cookie的方法。
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName");
已由您完成。
并且为了阅读cookie,您可以使用
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookieFileName");
以下是您更新的登录代码
<?php
$username = 'FAKEUSERNAME';
$password = 'FAKEPASSWORD';
$loginUrl = 'http://www.okcupid.com/login';
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'login_username='.$username.'&login_password='.$password);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec($ch);
$content = curl_exec($ch);
curl_close($ch);
echo $content;
?>
并且,对于登录后的后续请求,代码将如下所示:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL,"http://www.okcupid.com/afterlogin.php");
$content = curl_exec ($ch);
curl_close ($ch);
echo $content;
?>
确保您为cookie文件指定了正确的路径。