From e7958819c64c6a5aeb2ee568fe187d3f0389195f Mon Sep 17 00:00:00 2001 From: "Matteo Nastasi (mop)" Date: Thu, 27 Jan 2011 08:35:47 +0100 Subject: [PATCH] the dbase part is moved to another file to be able to use sql or file (new files) --- web/Obj/dbase_base.phh | 77 ++++++++++ web/Obj/dbase_file.phh | 174 +++++++++++++++++++++++ web/Obj/dbase_pgsql.phh | 308 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 559 insertions(+) create mode 100644 web/Obj/dbase_base.phh create mode 100644 web/Obj/dbase_file.phh create mode 100644 web/Obj/dbase_pgsql.phh diff --git a/web/Obj/dbase_base.phh b/web/Obj/dbase_base.phh new file mode 100644 index 0000000..2db3934 --- /dev/null +++ b/web/Obj/dbase_base.phh @@ -0,0 +1,77 @@ +code = $code; + $this->login = $login; + $this->pass = $pass; + $this->email = $email; + $this->type = $type; + } + + static function &LoginDBItemFromRecord($rec) + { + $ret = & new LoginDBItem($rec->code, $rec->login, $rec->pass, + $rec->email, $rec->type); + + return ($ret); + } + + function codeget() + { + return $this->code; + } + + function loginget() + { + return $this->login; + } + + function passget() + { + return $this->pass; + } + + function emailget() + { + return $this->email; + } + + function typeget() + { + return $this->type; + } + +} + +?> \ No newline at end of file diff --git a/web/Obj/dbase_file.phh b/web/Obj/dbase_file.phh new file mode 100644 index 0000000..2fb3178 --- /dev/null +++ b/web/Obj/dbase_file.phh @@ -0,0 +1,174 @@ +item = array( new LoginDBItem(1, "uno", md5("one"), "pippo@pluto.com", USER_FLAG_TY_SUPER), + new LoginDBItem(2, "due", md5("two"), "pippo@pluto.com", USER_FLAG_TY_NORM), + new LoginDBItem(3, "a_b", md5("abb"), "pippo@pluto.com", USER_FLAG_TY_NORM), + new LoginDBItem(4, "tre", md5("three"), "pippo@pluto.com", USER_FLAG_TY_NORM) ); + } + $this->item_n = count($this->item); + log_main("LoginDB create:end"); + } + + function count() + { + return ($this->item_n); + } + + function login_exists($login) + { + log_main("login_exists: ".$login); + + /* check the existence of the nick in the LoginDB */ + for ($i = 0 ; $i < $this->item_n ; $i++) { + if (strcasecmp($this->item[$i]->login, $login) == 0) { + log_main("login[".$i."]: ".$this->item[$i]->login); + return (TRUE); + } + } + return (FALSE); + } + + function getlogin_byidx($idx) + { + if ($idx >= $this->item_n) + return FALSE; + return ($this->item[$idx]->login); + } + + function &getitem_bylogin($login, &$id) + { + GLOBAL $G_false; + + log_main("login_exists: ".$login); + + /* check the existence of the nick in the LoginDB */ + for ($i = 0 ; $i < $this->item_n ; $i++) { + if (strcasecmp($this->item[$i]->login, $login) == 0) { + log_main("login[".$i."]: ".$this->item[$i]->login); + $ret = &$this->item[$i]; + $id = $i; + return ($ret); + } + } + $id = -1; + return ($G_false); + } + + function getmail($login) + { + log_main("getmail"); + + /* check the existence of the nick in the LoginDB */ + for ($i = 0 ; $i < $this->item_n ; $i++) { + if (strcasecmp($this->item[$i]->login, $login) == 0) { + log_main("login[".$i."]: ".$this->item[$i]->login); + return ($this->item[$i]->email); + } + } + return (FALSE); + } + + function gettype($login) + { + log_main("getmail"); + + /* check the existence of the nick in the LoginDB */ + for ($i = 0 ; $i < $this->item_n ; $i++) { + if (strcasecmp($this->item[$i]->login, $login) == 0) { + log_main("login[".$i."]: ".$this->item[$i]->login); + return ($this->item[$i]->type); + } + } + return (FALSE); + } + + function &login_verify($login, $pass) + { + GLOBAL $G_false; + + $ret = &$G_false; + + log_main("login_verify: ".$login); + + /* check the existence of the nick in the LoginDB */ + for ($i = 0 ; $i < $this->item_n ; $i++) { + log_main("login_verify: LOOP"); + if (strcasecmp($this->item[$i]->login, $login) == 0) { + log_main("login[".$i."]: ".$this->item[$i]->login); + + /* if it exists check for a valid challenge */ + if (($a_sem = Challenges::lock_data()) != FALSE) { + + if (($chals = &Challenges::load_data()) != FALSE) { + for ($e = 0 ; $e < $chals->item_n ; $e++) { + + log_main("challenge[".$i."]: ".$chals->item[$e]->login); + if (strcmp($login, $chals->item[$e]->login) == 0) { + log_main("login_verify [".$pass."] with [".md5($chals->item[$e]->token.$this->item[$i]->pass)."]"); + + if (strcmp($pass , md5($chals->item[$e]->token.$this->item[$i]->pass)) == 0) { + log_main("login_verify SUCCESS for ".$login); + + $chals->rem($login); + $ret = &$this->item[$i]; + break; + } + } + } // end for ($e = 0 ... + } + + if ($chals->ismod()) { + Challenges::save_data(&$chals); + } + + Challenges::unlock_data($a_sem); + } + break; + } // if (strcasecmp($this->item[$i]->login, ... + } + + return ($ret); + } +} // End class LoginDB + +?> \ No newline at end of file diff --git a/web/Obj/dbase_pgsql.phh b/web/Obj/dbase_pgsql.phh new file mode 100644 index 0000000..510987f --- /dev/null +++ b/web/Obj/dbase_pgsql.phh @@ -0,0 +1,308 @@ +db = DBConn::$dbcnnx; + + return; + } + function db() + { + return ($this->db); + } +} + +class LoginDB +{ + var $dbconn; + var $item; + var $item_n; + + function LoginDB() + { + GLOBAL $DOCUMENT_ROOT, $G_dbpfx, $G_false; + log_main("LoginDB create:start"); + + $this->dbconn = new DBConn(); + + log_main("LoginDB create:end"); + } + + function login_exists($login) + { + GLOBAL $G_dbpfx; + + /* check the existence of the nick in the LoginDB */ + log_main("login_exists: ".$login); + + $user_sql = sprintf("SELECT * FROM %susers WHERE login = lower('%s');", $G_dbpfx, escsql($login)); + if (($user_pg = pg_query($this->dbconn->db(), $user_sql)) != FALSE) + if (pg_numrows($user_pg) == 1) + return TRUE; + + return FALSE; + } + + function &getrecord_bylogin($login) { + GLOBAL $G_false, $G_dbpfx; + + $user_sql = sprintf("SELECT * FROM %susers WHERE login = lower('%s');", $G_dbpfx, escsql($login)); + if (($user_pg = pg_query($this->dbconn->db(), $user_sql)) == FALSE) + return $ret; + + if (pg_numrows($user_pg) != 1) + return $ret; + + $user_obj = pg_fetch_object($user_pg, 0); + + return ($user_obj); + } + + + + function &login_verify($login, $pass) + { + GLOBAL $G_dbpfx, $G_false; + + $ret = &$G_false; + + log_main("login_verify: ".$login); + + + //O /* check the existence of the nick in the LoginDB */ + //O for ($i = 0 ; $i < $this->item_n ; $i++) { + //O log_main("login_verify: BEGIN"); + + if (($user_obj = $this->getrecord_bylogin($login)) == FALSE) + return $ret; + + log_main("login[".$user_obj->code."]: ".$user_obj->login); + + /* if it exists check for a valid challenge */ + if (($a_sem = Challenges::lock_data()) != FALSE) { + if (($chals = &Challenges::load_data()) != FALSE) { + for ($e = 0 ; $e < $chals->item_n ; $e++) { + + log_main("challenge[".$e."]: ".$chals->item[$e]->login); + if (strcmp($login, $chals->item[$e]->login) == 0) { + log_main("login_verify [".$pass."] with [".md5($chals->item[$e]->token.$user_obj->pass)."]"); + + if (strcmp($pass , md5($chals->item[$e]->token.$user_obj->pass)) == 0) { + log_main("login_verify SUCCESS for ".$login); + + $chals->rem($login); + $ret = LoginDBItem::LoginDBItemFromRecord($user_obj); + return ($ret); + //O break; + } + } + } // end for ($e = 0 ... + } + + if ($chals->ismod()) { + Challenges::save_data(&$chals); + } + + Challenges::unlock_data($a_sem); + } + //O break; + // O } // if (strcasecmp($this->item[$i]->login, ... + //O } + + return ($ret); + } + + function &getitem_bylogin($login, &$id) { + GLOBAL $G_false; + + $ret = &$G_false; + $id = -1; + + log_main("getitem_bylogin: ".$login); + + if (($user_obj = $this->getrecord_bylogin($login)) == FALSE) + return $ret; + + $id = $user_obj->code; + return (LoginDBItem::LoginDBItemFromRecord($user_obj)); + } + + // TODO FOR DB + function getmail($login) + { + log_main("getmail"); + + if (($ret = $this->getrecord_bylogin($login)) == FALSE) + return FALSE; + + return ($ret->email); + } +} // End class LoginDB + + if (0 == 1) { + + + + + + + function count() + { + // sprintf("select count(code) from %sbrisk"); + return ($this->item_n); + } + + function getlogin_byidx($idx) + { + if ($idx >= $this->item_n) + return FALSE; + return ($this->item[$idx]->login); + } + + function &getitem_bylogin($login, &$id) + { + GLOBAL $G_false; + + log_main("login_exists: ".$login); + + /* check the existence of the nick in the LoginDB */ + for ($i = 0 ; $i < $this->item_n ; $i++) { + if (strcasecmp($this->item[$i]->login, $login) == 0) { + log_main("login[".$i."]: ".$this->item[$i]->login); + $ret = &$this->item[$i]; + $id = $i; + return ($ret); + } + } + $id = -1; + return ($G_false); + } + + function getmail($login) + { + log_main("getmail"); + + /* check the existence of the nick in the LoginDB */ + for ($i = 0 ; $i < $this->item_n ; $i++) { + if (strcasecmp($this->item[$i]->login, $login) == 0) { + log_main("login[".$i."]: ".$this->item[$i]->login); + return ($this->item[$i]->email); + } + } + return (FALSE); + } + + function gettype($login) + { + log_main("getmail"); + + /* check the existence of the nick in the LoginDB */ + for ($i = 0 ; $i < $this->item_n ; $i++) { + if (strcasecmp($this->item[$i]->login, $login) == 0) { + log_main("login[".$i."]: ".$this->item[$i]->login); + return ($this->item[$i]->type); + } + } + return (FALSE); + } + + function &login_verify($login, $pass) + { + GLOBAL $G_false; + + $ret = &$G_false; + + log_main("login_verify: ".$login); + + /* check the existence of the nick in the LoginDB */ + for ($i = 0 ; $i < $this->item_n ; $i++) { + log_main("login_verify: LOOP"); + if (strcasecmp($this->item[$i]->login, $login) == 0) { + log_main("login[".$i."]: ".$this->item[$i]->login); + + /* if it exists check for a valid challenge */ + if (($a_sem = Challenges::lock_data()) != FALSE) { + + if (($chals = &Challenges::load_data()) != FALSE) { + for ($e = 0 ; $e < $chals->item_n ; $e++) { + + log_main("challenge[".$i."]: ".$chals->item[$e]->login); + if (strcmp($login, $chals->item[$e]->login) == 0) { + log_main("login_verify [".$pass."] with [".md5($chals->item[$e]->token.$this->item[$i]->pass)."]"); + + if (strcmp($pass , md5($chals->item[$e]->token.$this->item[$i]->pass)) == 0) { + log_main("login_verify SUCCESS for ".$login); + + $chals->rem($login); + $ret = &$this->item[$i]; + break; + } + } + } // end for ($e = 0 ... + } + + if ($chals->ismod()) { + Challenges::save_data(&$chals); + } + + Challenges::unlock_data($a_sem); + } + break; + } // if (strcasecmp($this->item[$i]->login, ... + } + + return ($ret); + } + + } // if (0 == 1) { + + +?> \ No newline at end of file -- 2.17.1