<?php
// create a new CURL resource
$file_path = '/mail';
define("COOKIE_FILE", "c:\cookie.txt");
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "https://mail.gov.in/iwc/signin");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIESESSION, TRUE);
session_write_close();
$strCookie = 'PHPSESSID=d095af0e30afc021dd3652734009' . $_COOKIE['PHPSESSID'] . '; path=/mail';
curl_setopt( $ch, CURLOPT_COOKIE, $strCookie );
curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE);
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS,'fromLogin=true&domainName=nic.in&username=&password=&button=Sign%20In');
$url = curl_getinfo($ch);
// grab URL and pass it to the browser
$data = curl_exec($ch);
echo $data."<pre>";
echo "<pre>";
print_r($url);
// close CURL resource, and free up system resources
curl_close($ch);
?>
我的代码有什么问题,为什么我无法直接在他们的邮件中登录
答案 0 :(得分:2)
您似乎正在尝试屏幕抓取网络邮件收件箱。要获得帮助,您需要提供更多信息。
但是,PHP提供了直接访问POP3邮箱的可能性:IMAP Functions在用户提供的注释中,似乎有a full-fledged code snippet访问POP3邮箱。
答案 1 :(得分:2)
在http header&amp;中使用curl_setopt($ ch,CURLOPT_COOKIE,$ strCookie)作为cookie。编辑你的代码以获得$ strCookie值,这个phpsession id值将无效..
1. $strCookie = 'PHPSESSID=d095af0e30afc021dd3652734009' . $_COOKIE['PHPSESSID'] . '; path=/mail';
你可以像这样重写你的strcookie
2. $strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/mail';
或者你可以使用CURLOPT_COOKIEFILE&amp; CURLOPT_COOKIEJAR将cookie保存在文件中(没有CURLOPT_COOKIE)
if(!file_exists(COOKIE_FILE)) {
$fh = fopen(COOKIE_FILE, "w");
fwrite($fh,"");
fclose($fh);
}
curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE);
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE);
希望这有用
答案 2 :(得分:1)
您正在设置硬编码会话ID,然后加载COOKIE_FILE。确保已经在cookie文件中没有另一个PHPSESSID cookie。它可能会覆盖您刚刚手动设置的会话ID。
同样,您在POST数据中传递用户名和密码密钥,但实际上并未发送用户名和密码。也许你已经从这篇文章中审查了他们,但值得指出。它应该很可能是“....&amp; username = SOMEUSER&amp; password = SOMEPASSWORD”。
然后您执行curl_getinfo()
,但您尚未进行curl_exec()
调用,因此除了某些CURL内部设置外,没有任何内容可用于获取信息。
您可能想要在输出之前检查$data
是否为FALSE,以防CURL中出现故障:
$data = curl_exec($ch);
$info = curl_getinfo($ch);
if ($data === FALSE) {
print("CURL failed: " . curl_error($ch) . "\n");
}
var_dump($info); // print out full information array from curl
var_dump($data); // print out anything the server may have returned
答案 3 :(得分:0)
可能会检查引用者,CURLOPT_REFERER。
答案 4 :(得分:0)
检查CURLOPT_POSTFIELDS
:登录密码和用户名在哪里?
您设置CURLOPT_COOKIE
,其中包含您提供的Cookie,但curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE);
执行相同的操作。