你能实现模拟POST提交登录http://bbs.lampbrother.net/ 这个网站吗??

无论你用什么方法都行?只要能写出代码,腾讯面试题啊

阅读 5.5k
1 个回答
<?php

$post_data = http_build_query(array(
    'step' => 2,
    'lgt' => 2,    
    'forward' => '',
    'pwuser' => 'hehe@163.com',
    'pwpwd' => '123456',
    'question' => 0,
    'customquest' => '',
    'answer' => '',
    'hideid' => 0,
    'submit' => '',
    'jumpurl' => 'http://bbs.lampbrother.net/index.php',
));
$login_url = 'http://bbs.lampbrother.net/login.php';
$user_agent = ' Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0';

$cookie_file = dirname(__FILE__).'/cookie.txt';
touch($cookie_file);

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_COOKIESESSION => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
    CURLOPT_VERBOSE => false,
    CURLOPT_COOKIEJAR => $cookie_file,
    CURLOPT_COOKIEFILE => $cookie_file,
    CURLOPT_POSTFIELDS => $post_data,
    CURLOPT_POST => true,
    CURLOPT_USERAGENT => $user_agent,
    CURLOPT_URL => $login_url,
));
$response = curl_exec($ch);
curl_close($ch);

$response = convert2utf8($response);

$login_status = preg_match('#<p[^>]*>您已经顺利登录</p>#u', $response, $match) ? 'success': 'failed';
echo 'login ', $login_status;

/* functions */
function detectEncoding($str) {
    return mb_detect_encoding($str, array('UTF-8', 'CP936', 'BIG5', 'ASCII'));
}

function convert2gbk($str) {
    return convertEncoding($str, 'CP936');
}

function convert2utf8($str) {
    return convertEncoding($str, 'UTF-8');
}

function convertEncoding($str, $to_encoding) {
    if ($to_encoding !== ($encoding = detectEncoding($str))) {
        $str = mb_convert_encoding($str, $to_encoding, $encoding);
    }

    return $str;
}
推荐问题
logo
101 新手上路
子站问答
访问
宣传栏