| 2 |
* |
* |
| 3 |
* $Revision$ |
* $Revision$ |
| 4 |
* $Log$ |
* $Log$ |
| 5 |
|
* Revision 1.6 2004/11/26 04:35:55 aga |
| 6 |
|
* ・loginUser(), logoutUser()を作成. |
| 7 |
|
* |
| 8 |
* Revision 1.5 2004/11/26 01:08:25 aga |
* Revision 1.5 2004/11/26 01:08:25 aga |
| 9 |
* ・addSlashes()作成. |
* ・addSlashes()作成. |
| 10 |
* |
* |
| 25 |
*/ |
*/ |
| 26 |
|
|
| 27 |
#include <stdio.h> |
#include <stdio.h> |
| 28 |
|
#include <stdlib.h> |
| 29 |
#include <string.h> |
#include <string.h> |
| 30 |
#include <mysql.h> |
#include <mysql.h> |
| 31 |
#include <string> |
#include <string> |
| 420 |
* |
* |
| 421 |
* ログイン認証とセッション作成 |
* ログイン認証とセッション作成 |
| 422 |
* |
* |
| 423 |
* @param |
* @param uname ログイン名 |
| 424 |
* @return |
* @param passwd パスワード |
| 425 |
|
* @param session sessionid_tを受け取るためのポインタ。 |
| 426 |
|
* @return RES_OK ログイン成功。sessionにsessionid_tを書き込んだ。 |
| 427 |
|
* @return RES_LOGIN_FAILURE unameまたはpasswdが異常 |
| 428 |
|
* @return RES_DB_QUERY_ERROR DB問い合わせ中のエラー |
| 429 |
* |
* |
| 430 |
*/ |
*/ |
| 431 |
result_t loginUser(const char* uname, const char* passwd, sessionid_t* sessions ) |
result_t loginUser(const char* uname, const char* passwd, sessionid_t* session ) |
| 432 |
{ |
{ |
| 433 |
return RES_ERROR; |
result_t ret; |
| 434 |
|
string sql; |
| 435 |
|
|
| 436 |
|
// uname, passwd -> uid |
| 437 |
|
string escUname = addSlashes( uname ); |
| 438 |
|
string escPasswd = addSlashes( passwd ); |
| 439 |
|
sql = "SELECT uid FROM " + dbprefix + "_users WHERE uname='" + escUname + "' and paswd=md5('" + escPasswd + "')"; |
| 440 |
|
if( 0 == mysql_query( mysql, sql.c_str( ) ) ){ |
| 441 |
|
MYSQL_RES* result = mysql_store_result( mysql ); |
| 442 |
|
if( result ){ |
| 443 |
|
MYSQL_ROW row = mysql_fetch_row(result); |
| 444 |
|
if( row ){ |
| 445 |
|
// uid -> create session |
| 446 |
|
sql = "INSERT INTO " + dbprefix + "_vpaccount_session (uid,remote_host) values (" + row[0] + ",0)"; |
| 447 |
|
if ( 0 == mysql_query( mysql, sql.c_str() ) ){ |
| 448 |
|
*session = (int)mysql_insert_id(mysql); |
| 449 |
|
ret = RES_OK; |
| 450 |
|
} |
| 451 |
|
else { |
| 452 |
|
ret = RES_DB_QUERY_ERROR; |
| 453 |
|
} |
| 454 |
|
}else{ |
| 455 |
|
ret = RES_LOGIN_FAILUE; |
| 456 |
|
} |
| 457 |
|
mysql_free_result( result ); |
| 458 |
|
}else { |
| 459 |
|
ret = RES_DB_QUERY_ERROR; |
| 460 |
|
} |
| 461 |
|
}else{ |
| 462 |
|
ret = RES_DB_QUERY_ERROR; |
| 463 |
|
} |
| 464 |
|
|
| 465 |
|
return ret; |
| 466 |
} |
} |
| 467 |
|
|
| 468 |
/** |
/** |
| 469 |
* |
* |
| 470 |
* ログアウトとセッション終了 |
* ログアウトとセッション終了 |
| 471 |
* |
* |
| 472 |
* @param |
* @param sid session id |
| 473 |
* @return |
* @return なし |
| 474 |
* |
* |
| 475 |
*/ |
*/ |
| 476 |
void logoutUser( sessionid_t sid ){} |
void logoutUser( sessionid_t sid ){ |
| 477 |
|
result_t ret; |
| 478 |
|
string sql; |
| 479 |
|
sprintf( sidstr, |
| 480 |
|
sql = "DELETE FROM " + dbprefix + "_vpaccount_session WHERE sid=" + intToString((int)sid); |
| 481 |
|
if ( 0 == mysql_query( mysql, sql.c_str() ) ){ |
| 482 |
|
if ( mysql_affected_rows(mysql) == 1 ){ |
| 483 |
|
// ログアウトした |
| 484 |
|
} |
| 485 |
|
else { |
| 486 |
|
// sidが無効 |
| 487 |
|
} |
| 488 |
|
} |
| 489 |
|
else { |
| 490 |
|
// DB問い合わせ中のエラー |
| 491 |
|
} |
| 492 |
|
} |
| 493 |
|
|
| 494 |
/** |
/** |
| 495 |
* |
* |