Develop and Download Open Source Software

Browse CVS Repository

Diff of /xoonips/AL/commonal.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.7 by youi, Fri Nov 26 04:51:47 2004 UTC revision 1.8 by aga, Fri Nov 26 06:36:55 2004 UTC
# Line 2  Line 2 
2   *   *
3   * $Revision$   * $Revision$
4   * $Log$   * $Log$
5     * Revision 1.8  2004/11/26 06:36:55  aga
6     * ・createSession, getSession を作成.
7     *
8   * Revision 1.7  2004/11/26 04:51:47  youi   * Revision 1.7  2004/11/26 04:51:47  youi
9   * dbprefixを定義した.   * dbprefixを定義した.
10   * insertAccountを定義した.   * insertAccountを定義した.
# Line 522  result_t getUid( const char* uname, user Line 525  result_t getUid( const char* uname, user
525    
526  /**  /**
527   *   *
528     * セッションを作成しxoops_vpaccount_sessionに書き込む。 sessionid_tをsessionに返す。
529     *
530     * @param uid xoops_usersのuid
531     * @param remoteHost remote ip (host order)
532     * @param session sessionid_tを受け取るためのポインタ。
533     * @return RES_OK 成功
534     * @return RES_DB_QUERY_ERROR DB問い合わせ中のエラー
535     */
536    static result_t addSession( userid_t uid, unsigned long remoteHost, sessionid_t* session )
537    {
538        result_t ret;
539        string sql = "INSERT INTO " + dbprefix + "_vpaccount_session (uid,remote_host) values (" +
540          unsignedIntToString(uid) + "," + unsignedIntToString((unsigned int)remoteHost) + ")";
541        if ( 0 == mysql_query( mysql, sql.c_str() ) ){
542            *session = (int)mysql_insert_id(mysql);
543            ret = RES_OK;
544        }
545        else {
546            ret = RES_DB_QUERY_ERROR;
547        }
548        return ret;
549    }
550    
551    
552    /**
553     *
554   * ログイン認証とセッション作成   * ログイン認証とセッション作成
555   *   *
556   * @param uname ログイン名   * @param uname ログイン名
# Line 546  result_t loginUser(const char* uname, co Line 575  result_t loginUser(const char* uname, co
575          if( result ){          if( result ){
576              MYSQL_ROW row = mysql_fetch_row(result);              MYSQL_ROW row = mysql_fetch_row(result);
577              if( row ){              if( row ){
578                  // uid -> create session                  userid_t uid = atoi(row[0]);
579                  sql = "INSERT INTO " + dbprefix + "_vpaccount_session (uid,remote_host) values (" + row[0] + ",0)";                  ret = addSession( uid, 0, session );
                 if ( 0 == mysql_query( mysql, sql.c_str() ) ){  
                     *session = (int)mysql_insert_id(mysql);  
                     ret = RES_OK;  
                 }  
                 else {  
                     ret = RES_DB_QUERY_ERROR;  
                 }  
580              }else{              }else{
581                  ret = RES_LOGIN_FAILUE;                  ret = RES_LOGIN_FAILUE;
582              }              }
# Line 580  result_t loginUser(const char* uname, co Line 602  result_t loginUser(const char* uname, co
602  void logoutUser( sessionid_t sid ){  void logoutUser( sessionid_t sid ){
603      result_t ret;      result_t ret;
604      string sql;      string sql;
     sprintf( sidstr,  
605      sql = "DELETE FROM " + dbprefix + "_vpaccount_session WHERE sid=" + intToString((int)sid);      sql = "DELETE FROM " + dbprefix + "_vpaccount_session WHERE sid=" + intToString((int)sid);
606      if ( 0 == mysql_query( mysql, sql.c_str() ) ){      if ( 0 == mysql_query( mysql, sql.c_str() ) ){
607          if ( mysql_affected_rows(mysql) == 1 ){          if ( mysql_affected_rows(mysql) == 1 ){
# Line 602  void logoutUser( sessionid_t sid ){ Line 623  void logoutUser( sessionid_t sid ){
623   * ば,session_tを作成する。   * ば,session_tを作成する。
624   * データベースにセッションと引数の情報を記録する   * データベースにセッションと引数の情報を記録する
625   *   *
626   * @param   * @param sessionid xoopsのsession_id
627   * @return   * @param uid  xoops_usersのuid
628     * @param remoteHost remote ip (host order)
629     * @param session sessionid_tを受け取るためのポインタ。
630     * @return RES_OK
631     * @return RES_ERROR
632     * @return RES_DB_QUERY_ERROR
633   *   *
634   */   */
635  result_t createSession( const char* sessionid, userid_t uid, unsigned long remoteHost, sessionid_t* sessions )  result_t createSession( const char* sessionid, userid_t uid, unsigned long remoteHost, sessionid_t* session )
636  {  {
637        result_t ret;
638        string sql;
639        
640        string escSessionid = addSlashes(sessionid);
641        sql = "SELECT sess_id from " + dbprefix + "_session where sess_id='" + escSessionid + "'";
642        if( 0 == mysql_query( mysql, sql.c_str( ) ) ){
643            MYSQL_RES* result = mysql_store_result( mysql );
644            if( result ){
645                MYSQL_ROW row = mysql_fetch_row(result);
646                if( row ){
647                    ret = addSession( uid, remoteHost, session );
648                }else{
649                    ret = RES_ERROR;
650                }
651                mysql_free_result( result );
652            }else {
653                ret = RES_DB_QUERY_ERROR;
654            }
655        }else{
656            ret = RES_DB_QUERY_ERROR;
657        }
658        
659    
660      return RES_ERROR;      return RES_ERROR;
661  }  }
662    
# Line 615  result_t createSession( const char* sess Line 664  result_t createSession( const char* sess
664   *   *
665   * セッションの詳細をsession_tで取得する.<br>   * セッションの詳細をsession_tで取得する.<br>
666   *   *
667   * @param   * @param sess_id
668     * @param session
669   * @return   * @return
670   *   *
671   */   */
672  result_t getSessionDetail( sessionid_t sess_id, const session_t** session )  result_t getSession( sessionid_t sess_id, const session_t** ppsession )
673  {  {
674        result_t ret;
675        string sql;
676        
677        sql = "SELECT sid, uid, unix_timestamp(timestamp), remote_host from " + dbprefix +
678          "_vpaccount_session where sid=" + unsignedIntToString((unsigned int)sess_id);
679        if( 0 == mysql_query( mysql, sql.c_str( ) ) ){
680            MYSQL_RES* result = mysql_store_result( mysql );
681            if( result ){
682                MYSQL_ROW row = mysql_fetch_row(result);
683                if( row ){
684                    session_t *p = new session();
685                    p->setSessionID(sess_id);
686                    p->setUserID(atoi(row[1]));
687                    p->setDate(atoi(row[2]));
688                    p->setRemoteHost(atoi(row[3]));
689                    *ppsession = p;
690                    ret = RES_OK;
691                }else{
692                    ret = RES_NO_SUCH_SESSION;
693                }
694                mysql_free_result( result );
695            }else {
696                ret = RES_DB_QUERY_ERROR;
697            }
698        }else{
699            ret = RES_DB_QUERY_ERROR;
700        }
701        
702      return RES_ERROR;      return RES_ERROR;
703  }  }
704    

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26