| 2 |
* |
* |
| 3 |
* $Revision$ |
* $Revision$ |
| 4 |
* $Log$ |
* $Log$ |
| 5 |
|
* Revision 1.75 2005/03/03 10:13:00 aga4096 |
| 6 |
|
* ・isValidSessionでtimestampを更新するよう修正. |
| 7 |
|
* ・sessionはisValidSessionしない限り1時間でタイムアウトするよう修正. |
| 8 |
|
* ・loginUser, createSessionでタイムアウトしたsessionを削除するよう修正. |
| 9 |
|
* |
| 10 |
* Revision 1.74 2005/02/26 05:11:31 tani |
* Revision 1.74 2005/02/26 05:11:31 tani |
| 11 |
* getGroupItemID追加. |
* getGroupItemID追加. |
| 12 |
* |
* |
| 3049 |
return ret; |
return ret; |
| 3050 |
} |
} |
| 3051 |
|
|
| 3052 |
|
/** 全てのタイムアウトしたセッションを削除. |
| 3053 |
|
*/ |
| 3054 |
|
static void deleteTimeoutSession(){ |
| 3055 |
|
time_t now = time(NULL); |
| 3056 |
|
string sql; |
| 3057 |
|
if( dbtype == DBTYPE_MYSQL ){ |
| 3058 |
|
sql = "DELETE FROM " + dbprefix + "_xnpaccount_session WHERE unix_timestamp(timestamp) < " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
| 3059 |
|
}else if( dbtype == DBTYPE_SQLITE ){ |
| 3060 |
|
sql = "DELETE FROM " + dbprefix + "_xnpaccount_session WHERE timestamp < " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
| 3061 |
|
} |
| 3062 |
|
querySimple( "deleteTimeoutSession", sql ); |
| 3063 |
|
} |
| 3064 |
|
|
| 3065 |
/** |
/** |
| 3066 |
* |
* |
| 3123 |
ret = RES_ERROR; |
ret = RES_ERROR; |
| 3124 |
} |
} |
| 3125 |
|
|
| 3126 |
|
deleteTimeoutSession(); |
| 3127 |
return ret; |
return ret; |
| 3128 |
} |
} |
| 3129 |
|
|
| 3212 |
}else{ |
}else{ |
| 3213 |
ret = RES_ERROR; |
ret = RES_ERROR; |
| 3214 |
} |
} |
| 3215 |
|
deleteTimeoutSession(); |
| 3216 |
return ret; |
return ret; |
| 3217 |
} |
} |
| 3218 |
|
|
| 4875 |
} |
} |
| 4876 |
} |
} |
| 4877 |
|
|
| 4878 |
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + unsignedIntToString( sid ); |
time_t now = time(NULL); |
| 4879 |
|
if( dbtype == DBTYPE_MYSQL ){ |
| 4880 |
|
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + unsignedIntToString( sid ) |
| 4881 |
|
+ " AND unix_timestamp(timestamp) > " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
| 4882 |
|
}else if( dbtype == DBTYPE_SQLITE ){ |
| 4883 |
|
sql = "SELECT * FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + unsignedIntToString( sid ) |
| 4884 |
|
+ " AND timestamp > " + unsignedIntToString(now-SESSION_TIMEOUT_SEC); |
| 4885 |
|
} |
| 4886 |
|
|
| 4887 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 4888 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 4889 |
if( ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS ){ |
| 4913 |
syslog_printf( "isValidSessionID %s", getLastErrorString( ) ); |
syslog_printf( "isValidSessionID %s", getLastErrorString( ) ); |
| 4914 |
ret = false; |
ret = false; |
| 4915 |
} |
} |
| 4916 |
|
if ( ret == true ){ |
| 4917 |
|
// timestampを更新する |
| 4918 |
|
if( dbtype == DBTYPE_MYSQL ){ |
| 4919 |
|
sql = "UPDATE " + dbprefix + "_xnpaccount_session set timestamp=from_unixtime(" + unsignedIntToString(now) |
| 4920 |
|
+ ") WHERE sid=" + unsignedIntToString( sid ); |
| 4921 |
|
}else if( dbtype == DBTYPE_SQLITE ){ |
| 4922 |
|
sql = "UPDATE " + dbprefix + "_xnpaccount_session set timestamp=" + unsignedIntToString(now) |
| 4923 |
|
+ " WHERE sid=" + unsignedIntToString( sid ); |
| 4924 |
|
} |
| 4925 |
|
querySimple("isValidSession", sql); |
| 4926 |
|
} |
| 4927 |
return ret; |
return ret; |
| 4928 |
} |
} |
| 4929 |
|
|