文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>基于MXRT的CGI开发

基于MXRT的CGI开发

时间:2010-06-26  来源:zjzfb

基于MXRT的CGI开发,简化,集成
根据配置文件初始化多个服务器
1. LDAP,实现用户登陆信息的统一
2. 数据库(现已实现PostgreSQL、SQLite、OracleEX的适配)
采用XML/XSLT实现多种终端的适配,至少现在已在www.wawton.com实现B/S模式,同时支持简单的C/S模式和手机客户端(分别是MUIP_WS和MUIP_WS_mobile)
MUIP_WS基于wxWidgets开发,同时支持Windows和Linux系统,同时在Linux系统上采用了动态库导入技术,避免了*nix环境的DLL地狱

习惯了C++开发,并不会比PHP复杂
个人的体会:一切的复杂来自于基础库的缺失

以下的代码来自于www.wawton.com的登陆模块
// Author: zhufei
// Mail:   [email protected]
// MSN:    [email protected]

#include "muip/session.h"

#include "muip/ldap.h"
#include "openssl/aes.h"
#include "mxrt/base64.h"
#include "mxrt/xml_doc.h"
#include "mxrt/xml_node.h"
#include "mxrt/dbtool.h"

int32_t    ShowSSOLoginPage();

int main( int argc, char* argv[] )
{
    int32_t    nRet    =    MXRT_SUCCESS;

    for ( int32_t iOnce = 0; iOnce < 1; ++ iOnce )
    {
        // 初始化Session
        nRet    =    MUIPSession::Instance()->Init( "conf/muip.conf.xml", true );
        if ( nRet != MXRT_SUCCESS )
        {
            MUIP::ErrorDebug( "sso_login", nRet, "config file error", "Home", "/cgi-bin/index.cgi" );
            break;
        }

        // 检查Cookie,并依此进行用户状态判断
        if ( ! MUIPSession::Instance()->IsLogon() )    // 没有登陆
        {
            // 获取用户名/密码数据,如果没有,显示登陆页面
            //TODO
            //ShowSSOLoginPage();

            // 采用LDAP进行用户认证
            MUIPLdap::UserInfo    userInfo;
            nRet    =    MUIPLdap::AuthUser( strUsername, strPassword, userInfo );
            if ( nRet != MXRT_SUCCESS )
            {
                MUIP::ErrorDebug( "sso_login", nRet, "invalid username or password", "login page", "/cgi-bin/sso_login.cgi" );
                break;
            }

            // 创建Session数据
            //TODO

            // 从数据库获取用户数据
            std::string    strUserRank;
            char        bufStmt[MXRT_DFT_BUF_SIZE];
            int            lenStmt    =    0;
            MRecordSet    recordSet;
            lenStmt    =    ::snprintf( bufStmt, sizeof(bufStmt),
                                    "SELECT usr_rank FROM tbl_usr WHERE usr_id=%lld",
                                    userInfo.llnUID
                                    );
            MDBTool::Instance()->Query( bufStmt, lenStmt, &recordSet );
            if ( recordSet.GetRows() > 0 )
            {
                strUserRank.assign( recordSet.GetData(0,0) );
            }
            else
            {
                strUserRank.assign( MCommon::Itoa(MUIP_USER_RANK_GUEST) );
            }

            // 设置Session数据
            //TODO

            MCGI::Instance()->OutputCookies();
            MUIP::RedirectTo( "/cgi-bin/index.cgi" );
        }

        nRet    =    MXRT_SUCCESS;
    }

    MUIPSession::Destroy();

    return nRet;
}

int ShowSSOLoginPage()
{
    //显示用户登陆页面

    return MXRT_SUCCESS;
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载