سلام بعضی از دوستان سوال پرسیدن که چطور میشه صفحه ای بسازیم و از اونجا تو گوگل لاین کنیم؟ راه حل استفاده از cURL هست. با استفاده از cURL میتونید مثل یک مرورگر درخواست های http بفرستید. در واقع این Library مثل یک مرورگر عمل میکنه.

در مثال پایین با بکارگیری cURL میتونیم این کار رو انجام بدیم ، در ضمن این کد تست شده و بدرستی کار میکنه.

<?php
$USERNAME = 'mail@gmail.com';
$PASSWORD = 'passwd';
$COOKIEFILE = 'cookies.txt';

$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'COOKIEJAR');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'COOKIEJAR');
curl_setopt($ch, CURLOPT_HEADER, 0);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);

curl_setopt($ch, CURLOPT_URL, 
  'https://accounts.google.com/ServiceLogin?service=mail&continue=https://mail.google.com/mail/');
$data = curl_exec($ch);

$formFields = getFormFields($data);

$formFields['Email']  = $USERNAME;
$formFields['Passwd'] = $PASSWORD;
unset($formFields['PersistentCookie']);

$post_string = '';
foreach($formFields as $key => $value) {
    $post_string .= $key . '=' . urlencode($value) . '&';
}

$post_string = substr($post_string, 0, -1);

curl_setopt($ch, CURLOPT_URL, 'https://accounts.google.com/ServiceLoginAuth');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);

$result = curl_exec($ch);
if (strpos($result, 'Loading standard view') === false) {
    die("Login failed");
} else {
    curl_setopt($ch, CURLOPT_URL, 'https://gmail.com');
    curl_setopt($ch, CURLOPT_POST, 0);
    curl_setopt($ch, CURLOPT_POSTFIELDS, null);

    $result = curl_exec($ch);
	die('Successfully logged in');
    //var_dump($result);
}

function getFormFields($data)
{
    if (preg_match('/(<form.*?id=.?gaia_loginform.*?<\/form>)/is', $data, $matches)) {
        $inputs = getInputs($matches[1]);

        return $inputs;
    } else {
        die('didnt find login form');
    }
}

function getInputs($form)
{
    $inputs = array();

    $elements = preg_match_all('/(<input[^>]+>)/is', $form, $matches);

    if ($elements > 0) {
        for($i = 0; $i < $elements; $i++) {
            $el = preg_replace('/\s{2,}/', ' ', $matches[1][$i]);

            if (preg_match('/name=(?:["\'])?([^"\'\s]*)/i', $el, $name)) {
                $name  = $name[1];
                $value = '';

                if (preg_match('/value=(?:["\'])?([^"\'\s]*)/i', $el, $value)) {
                    $value = $value[1];
                }

                $inputs[$name] = $value;
            }
        }
    }

    return $inputs;
}

نکته: برای فعال کردن cURL  فایل php.ini که در مسیر نصب php وجود داره رو با یه ویرایشگر متن باز کنید و کد

;extension=php_curl.dll

رو با حذف سمیکالن( ; ) از ابتدای اون از حالت کامنت خارج کرده و در نهایت فایل رو ذخیره کنید.

موفق باشید.