0
我想自動填寫html表單並提交表單並顯示結果。我用下面的代碼從here得到。如何自動填充並提交html表單並使用curl
<?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.這意味着沒有發生錯誤。那爲什麼我不能得到預期的結果?以及爲什麼密碼字段未填寫,但用戶名字段已填寫?
感謝您的回答。你可以通過展示如何用這些隱藏字段來構建查詢來擴展答案。在上面的代碼中,我使用了post_data數組來保留用戶名和密碼字段的值。但那些隱藏的領域已經有價值。構建查詢時應該使用什麼值?我看到自動完成是關閉這些隱藏的領域。那我可以用查詢填充它們嗎? – lakshman