我正在为您必须先登录的网站编写一个webcrawler。我已经尝试过关于堆栈溢出的各种建议,但到目前为止还没有运气。我认为问题是POST数据是一个数组,我没有正确初始化它?
POST数据:
用户[电子邮件]名称:myusername
用户[口令]:输入mypassword
提交:登录
他们网站上的HTML:
<form method="post" id="user_sign_in" action="" onsubmit="return checkForm()" accept-charset="UTF-8" _lpchecked="1"><input type="text" name="user[email]" id="user_email"><input type="password" name="user[password]" id="user_password"><input type="submit" value="SIGN IN" name="commit"></form>
这是我尝试过的:
$postdata = http_build_query(
array(
'user[email]' => 'myusername',
'user[password]' => 'mypassword',
'commit' => 'SIGN IN'
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
echo file_get_contents("http://website.com/sign-in", false, $context);