我想自动填写一个 html 表单并提交表单并显示结果。我使用了从这里获得的以下代码。
<?php
//create array of data to be posted
$post_data['email'] = 'myemail';
$post_data['pass'] = 'mypassword';
//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
//create cURL connection
$curl_connection =
curl_init('http://m.facebook.com/');
//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//perform our request
$result = curl_exec($curl_connection);
print $result;
//show information regarding the request
echo curl_errno($curl_connection) . '-' .
curl_error($curl_connection);
//close the connection
curl_close($curl_connection);
?>
我使用 Facebook 移动网站和 gmail 来测试这段代码。
我将这些站点的登录页面的url放在curl_init函数中,将登录页面的用户名和密码字段的名称属性的值赋予$post_data数组的键并将此代码保存为my.php文件并将其放在xampp htdocs目录中在本地机器上。
当我浏览 my.php 时,它显示登录页面,其中用户名字段已填写,密码字段未填写。根据代码,预期的结果是,它应该返回成功登录的页面,因为我提供了正确的用户名和密码。curl_errno 也返回 0。这意味着没有发生错误。那为什么我不能得到预期的结果?以及为什么填写了用户名字段但未填写密码字段?