実際に、件名を読んでください。
機能:
ログイン -Gmailにログインします。 標準として返される-true / false
システムに入るとすぐに、コンタクトシートが
ContactList変数にインポートされます
クラス自体:
<?php
class cmgmail
{
var $Header;
var $UserAgent;
var $CookieFile;
var $ContactList;
function cmgmail($CookieFile)
{
$ this ->UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MRSPUTNIK 2, 0, 0, 36 SW)" ;
$ this ->Header [] = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*" ;
$ this ->Header [] = "Accept_encoding: gzip, deflate" ;
$ this ->Header [] = "Accept_language: ru" ;
$ this ->Header [] = "Connection: Keep-Alive" ;
$ this ->Header [] = "Cache-Control: no-cache" ;
$ this ->Header [] = "Content-Type: application/x-www-form-urlencoded" ;
$ this ->CookieFile = $CookieFile;
@unlink( $ this ->CookieFile );
}
function curlRequest($url, $method = 'get' , $post_vars = array(), $refferer = '' )
{
$ch = curl_init( $url );
if ($method == 'post' ) {
curl_setopt ( $ch , CURLOPT_POST , 1);
curl_setopt ( $ch , CURLOPT_POSTFIELDS , http_build_query($post_vars));
}
@curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION, 1);
@curl_setopt ( $ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt ( $ch , CURLOPT_COOKIEJAR, $ this ->CookieFile);
curl_setopt ( $ch , CURLOPT_COOKIEFILE, $ this ->CookieFile);
@curl_setopt ( $ch , CURLOPT_USERAGENT , $ this ->UserAgent );
@curl_setopt ( $ch , CURLOPT_HTTPHEADER , $ this ->Header );
curl_setopt ( $ch , CURLOPT_HEADER, 1);
curl_setopt ( $ch , CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt ( $ch , CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt ( $ch , CURLOPT_TIMEOUT, 25);
$result = curl_exec( $ch );
return $result;
}
function getContactList($content_page)
{
$result = array();
preg_match( '/"cla".*?D\((.+?)\);/is' , $content_page, $all);
if ( !empty($all[1]) )
{
preg_match_all( '/\["ce"(.+?)\]/' , $all[1], $list);
if ( !empty($list[1]) )
{
foreach ( $list[1] as $item )
{
$item = explode( ',' , $item);
if ( !empty($item[4]) )
{
if ( empty($item[2]) ) $item[2] = $item[4];
$item[2] = str_replace( '"' , '' , $item[2]);
$item[4] = str_replace( '"' , '' , $item[4]);
$result[ $item[2] ] = $item[4];
}
}
}
}
return $result;
}
function Login($username, $password)
{
$username = str_replace( '@gmail.com' , '' , $username);
$first = $ this ->curlRequest( 'http://mail.google.com/mail/' , 'get' , false );
$Post = array(
'ltmpl' => 'default' ,
'ltmplcache' => '2' ,
'continue' => 'http://mail.google.com/mail/?' ,
'service' => 'mail' ,
'rm' => 'false' ,
'ltmpl' => 'default' ,
'ltmpl' => 'default' ,
'Email' => $username,
'Passwd' => $password,
'rmShown' => '1' ,
'asts' => '' ,
);
$loginpage = $ this ->curlRequest( 'https://www.google.com/accounts/ServiceLoginAuth?service=mail' , 'post' , $Post, 'https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=1k96igf4806cy<mpl=default<mplcache=2' );
if (preg_match( '/location\.replace\("(.+?)"/i' , $loginpage, $redir)) {
$redir = str_replace( '\x3d' , '=' , $redir[1]);
$redir = str_replace( '\x26' , '&' , $redir);
$redir = str_replace( '&' , '&' , $redir);
$next_login = $ this ->curlRequest($redir);
$next_login = $ this ->curlRequest( 'http://mail.google.com/mail/?ui=1&view=cl&search=contacts&pnl=a' , 'get' , false ,$redir);
$ this ->ContactList = $ this ->getContactList($next_login);
return true ;
} else return false ;
}
}
?>
* This source code was highlighted with Source Code Highlighter .