首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用android应用程序连接到Vbulletin论坛

使用android应用程序连接到Vbulletin论坛
EN

Stack Overflow用户
提问于 2011-09-28 22:49:26
回答 2查看 2.4K关注 0票数 0

我正在尝试做一个小的应用程序,连接到一个电子公告论坛,以检索用户面板中未读主题的数量。

我发现了如何从网站上检索信息,但问题是我不知道如何登录论坛。

有人能给我一个建议或至少一个链接来帮助我开始吗?

EN

回答 2

Stack Overflow用户

发布于 2011-09-28 22:51:49

登录网站有几种方式:表单登录、http身份验证、通过AJAX登录等。

您需要调查如何在您的特定网站的情况下登录。

检查http连接(例如,带有Firebug的Firefox可以看到连接),查看当您单击站点上的登录按钮时建立了哪种类型的连接。

票数 0
EN

Stack Overflow用户

发布于 2011-09-30 01:37:39

您需要通过您的应用程序发送一个包含用户名和用户密码的md5散列的_POST请求。用户名字段名为"vb_login_username“,密码字段名为"vb_login_md5password”。一旦你弄清楚了这一点,你就可以创建你自己的自定义登录页面,你的应用程序可以与之对话。这里有一些与我使用的类似的东西。它在成功登录时以JSON格式返回用户信息。

代码语言:javascript
复制
require_once('./global.php');
require_once(DIR . '/includes/functions_login.php');

define("BADLOGIN"              , "You have entered an invalid username or password.");
define("BADLOGIN_STRIKES"      , "You have entered an invalid username or password. You have %s login attempts left, after which you will be unable to login for 15 minutes.");
define("BADLOGIN_STRIKES_ZERO" , "You have entered an invalid username or password and used up your failed login quota. Please wait 15 minutes before trying to login again.");

// ################################ start login #################################
if ($_POST['do'] == 'login') {

    $vbulletin->input->clean_array_gpc('p', array(
        'vb_login_username'        => TYPE_STR,
        'vb_login_password'        => TYPE_STR,
        'vb_login_md5password'     => TYPE_STR,
        'vb_login_md5password_utf' => TYPE_STR,
        'cookieuser'               => TYPE_BOOL,
    ));

    // can the user login?
    $strikes = verify_strike_status($vbulletin->GPC['vb_login_username']);

    // make sure our user info stays as whoever we were (for example, we might be logged in via cookies already)
    $original_userinfo = $vbulletin->userinfo;

    if (!verify_authentication(
        $vbulletin->GPC['vb_login_username'], $vbulletin->GPC['vb_login_password'], 
        $vbulletin->GPC['vb_login_md5password'], $vbulletin->GPC['vb_login_md5password_utf'], 
        $vbulletin->GPC['cookieuser'], true)) 
    {       
        exec_strike_user($vbulletin->userinfo['username']);

        // load original user
        $vbulletin->userinfo = $original_userinfo;

        if ($vbulletin->options['usestrikesystem'])
        {
            if ((5 - $strikes) == 0)
            {
                die(json_encode(array(
                    'hasErrors' => (int) 1,
                    'errorMsg'  => BADLOGIN_STRIKES_ZERO
                ))); 
            }
            else
            {
                die(json_encode(array(
                    'hasErrors' => (int) 1,
                    'errorMsg'  => sprintf(BADLOGIN_STRIKES, 5 - $strikes)
                ))); 
            }
        }
        else
        {
            die(json_encode(array(
                'hasErrors' => (int) 1,
                'errorMsg'  => BADLOGIN
            ))); 
        }
    }

    exec_unstrike_user($vbulletin->GPC['vb_login_username']);

    // create new session
    process_new_login($vbulletin->GPC['logintype'], $vbulletin->GPC['cookieuser'], $vbulletin->GPC['cssprefs']);
    $userinfo = fetch_user($vbulletin->userinfo['userid']);

    // is banned user?
    if ($userinfo['usergroupid'] == 8) {
        process_logout();
    }

    // return userinfo
    die(json_encode(array(
        'success' => (int) 1,
        'user'    => $userinfo
    ))); 
}

希望这篇文章能帮助你入门。顺便说一下,将字段名"cookieuser“设置为true,用户将在下一次请求时被记住。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7585125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档