X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=0.2.1%2Finc%2Fmodules%2Fguest%2Fwhat-login.php;h=d2aada311042d21c8794534e77466f5cb85cac0c;hb=7bc25dd08431c94ce9edca131d56c1a36b13c28a;hp=d4591e1368116a0c4dc3aca9853a91aae04c2f2f;hpb=157ee010917df5ca07e6d31b42f67417b2516d74;p=mailer.git diff --git a/0.2.1/inc/modules/guest/what-login.php b/0.2.1/inc/modules/guest/what-login.php index d4591e1368..d2aada3110 100644 --- a/0.2.1/inc/modules/guest/what-login.php +++ b/0.2.1/inc/modules/guest/what-login.php @@ -1,409 +1,409 @@ -= "0.2.8") - { - $LAST = ", last_login"; - } - - // Check login data - $password = ""; - if ($probe_nickname) - { - // Nickname entered - $result = SQL_QUERY_ESC("SELECT userid, password, last_online".$LAST." FROM "._MYSQL_PREFIX."_user_data WHERE nickname='%s' AND status='CONFIRMED' LIMIT 1", - array($UID), __FILE__, __LINE__); - list($UID2, $password, $online, $login) = SQL_FETCHROW($result); - if (!empty($UID2)) $UID = $UID2; - } - else - { - // Direct userid entered - $result = SQL_QUERY_ESC("SELECT userid, password, last_online".$LAST." FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d AND status='CONFIRMED' LIMIT 1", - array(bigintval($UID), $hash), __FILE__, __LINE__); - list($dmy, $password, $online, $login) = SQL_FETCHROW($result); - } - if (SQL_NUMROWS($result) == 1) - { - // Valid data found so let's load the last login data - if (isset($_POST['ok'])) - { - // By default the hash is empty - $hash = ""; - - // Check for old MD5 passwords - if ((strlen($password) == 32) && (md5($_POST['password']) == $password)) - { - // Just set the hash to the password from DB... :) - $hash = $password; - } - else - { - // Encrypt hash for comparsion - $hash = generateHash($_POST['password'], substr($password, 0, -40)); - } - - if ($hash == $password) - { - // New hashed password found so let's generate a new one - $hash = generateHash($_POST['password']); - - // ... and update database - $result_update = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET password='%s' WHERE userid=%d AND status='CONFIRMED' LIMIT 1", - array($hash, $UID), __FILE__, __LINE__); - - // No login bonus by default - $BONUS = false; - - // Probe for last online timemark - $probe = time() - $online; - if (!empty($login)) $probe = time() - $login; - if ((GET_EXT_VERSION("bonus") >= "0.2.2") && ($probe >= $CONFIG['login_timeout'])) - { - // Add login bonus to user's account - $ADD = ", login_bonus=login_bonus+'".$CONFIG['login_bonus']."'"; - $BONUS = true; - - // Subtract login bonus from userid's account or jackpot - if ((GET_EXT_VERSION("bonus") >= "0.3.5") && ($CONFIG['bonus_mode'] != "ADD")) BONUS_POINTS_HANDLER('login_bonus'); - } - - - // Secure lifetime from input form - $l = bigintval($_POST['lifetime']); - $life = "-1"; - if ($l > 0) - { - // Calculate lifetime of cookies - $life = time() + $l; - - // Calculate new hash with the secret key and master salt together - $hash = generatePassString($hash); - - // Update cookies - $login = (@setcookie("userid" , $UID , $life, COOKIE_PATH) - && @setcookie("u_hash" , $hash, $life, COOKIE_PATH) - && @setcookie("lifetime", $l , $life, COOKIE_PATH)); - - // Update global array - $GLOBALS['userid'] = $UID; - $_COOKIE['u_hash'] = $hash; - $_COOKIE['lifetime'] = $l; - } - else - { - // Check for login data - $login = IS_LOGGED_IN(); - } - - if ($login) - { - // Update database records - $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET total_logins=total_logins+1".$ADD." WHERE userid=%d LIMIT 1", - array(bigintval($UID)), __FILE__, __LINE__); - if (SQL_AFFECTEDROWS($link) == 1) - { - // Procedure to checking for login data - if (($BONUS) && (EXT_IS_ACTIVE("bonus"))) - { - // Bonus added (just displaying!) - $URL = URL."/modules.php?module=chk_login&mode=bonus"; - } - else - { - // Bonus not added - $URL = URL."/modules.php?module=chk_login&mode=login"; - } - } - else - { - // Cannot update counter! - $URL = URL."/modules.php?module=".$GLOBALS['module']."&what=login&login=".CODE_CNTR_FAILED; - } - } - else - { - // Cookies not setable! - $URL = URL."/modules.php?module=".$GLOBALS['module']."&what=login&login=".CODE_NO_COOKIES; - } - } - else - { - // Wrong password! - $ERROR = CODE_WRONG_PASS; - } - } - else - { - // Fatal error! - $ERROR = CODE_LOGIN_FAILED; - } - } - else - { - // Other account status? - $result = SQL_QUERY_ESC("SELECT status FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1", - array(bigintval($UID)), __FILE__, __LINE__); - if (SQL_NUMROWS($result) == 1) - { - // Load status - list($status) = SQL_FETCHROW($result); - switch ($status) - { - case "LOCKED": - $ERROR = CODE_ID_LOCKED; - break; - - case "UNCONFIRMED": - $ERROR = CODE_ID_UNCONFIRMED; - break; - - default: - $ERROR = CODE_UNKNOWN_STATUS; - break; - } - } - else - { - // ID not found! - $ERROR = CODE_WRONG_ID; - } - - // Construct URL - $URL = URL."/modules.php?module=".$GLOBALS['module']."&what=login&login=".$ERROR; - } -} - elseif ((!empty($_POST['new_pass'])) && (isset($UID))) -{ - // Compile email when found in address (only secure chars!) - if (!empty($_POST['email'])) $_POST['email'] = str_replace("{DOT}", '.', $_POST['email']); - - // Set ID number when left empty - if (empty($_POST['id'])) $_POST['id'] = "0"; - - // Probe userid/nickname - $probe_nickname = ((EXT_IS_ACTIVE("nickname")) && (("".round($_POST['id'])."") != $_POST['id'])); - if ($probe_nickname) - { - // Nickname entered - $result = SQL_QUERY_ESC("SELECT userid, status FROM "._MYSQL_PREFIX."_user_data WHERE nickname='%s' OR email='%s' LIMIT 1", - array(addslashes($UID), $_POST['email']), __FILE__, __LINE__); - } - else - { - // Direct userid entered - $result = SQL_QUERY_ESC("SELECT userid, status FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d OR email='%s' LIMIT 1", - array(bigintval($UID), $_POST['email']), __FILE__, __LINE__); - } - if (SQL_NUMROWS($result) == 1) - { - // This data is valid, so we create a new pass... :-) - list($UID, $status) = SQL_FETCHROW($result); - - if ($status == "CONFIRMED") - { - // Ooppps, this was missing! ;-) We should update the database... - $NEW_PASS = GEN_PASS(); - $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET password='%s' WHERE userid=%d LIMIT 1", - array(generateHash($NEW_PASS), bigintval($UID)), __FILE__, __LINE__); - - // Prepare data and message for email - $DATA = array($NEW_PASS, getenv('REMOTE_ADDR')); - $msg = LOAD_EMAIL_TEMPLATE("new-pass", "", bigintval($UID)); - - // ... and send it away - SEND_EMAIL(bigintval($UID), GUEST_NEW_PASSWORD, $msg); - - // Output note to user - LOAD_TEMPLATE("admin_settings_saved", false, GUEST_NEW_PASSWORD_SEND); - } - else - { - // Account is locked or unconfirmed - switch ($status) - { - case "LOCKED" : $MSG = CODE_ID_LOCKED; break; - case "UNCONFIRMED": $MSG = CODE_ID_UNCONFIRMED; break; - } - - // Load URL - LOAD_URL(URL."/modules.php?module=".$GLOBALS['module']."&what=login&login=".$MSG); - } - } - else - { - // ID or email is wrong - LOAD_TEMPLATE("admin_settings_saved", false, "".GUEST_WRONG_ID_EMAIL.""); - } -} - else -{ - // Login problems? - if (!empty($_GET['login'])) - { - // Ok, which one now? - $MSG = " -   - - "; - switch ($_GET['login']) - { - case CODE_WRONG_PASS: - $MSG .= LOGIN_WRONG_PASS; - break; - - case CODE_WRONG_ID: - $MSG .= LOGIN_WRONG_ID; - break; - - case CODE_ID_LOCKED: - $MSG .= LOGIN_ID_LOCKED; - break; - - case CODE_ID_UNCONFIRMED: - $MSG .= LOGIN_ID_UNCONFIRMED; - break; - - case CODE_NO_COOKIES: - $MSG .= LOGIN_NO_COOKIES; - break; - - default: - $MSG .= LOGIN_WRONG_ID; - break; - } - $MSG .= " - -   -\n"; - define ('LOGIN_FAILURE_MSG', $MSG); - } - else - { - // No problems, no output - define ('LOGIN_FAILURE_MSG', ""); - } - // Display login form with resend-password form - if (EXT_IS_ACTIVE("nickname")) - { - LOAD_TEMPLATE("guest_nickname_login"); - } - else - { - LOAD_TEMPLATE("guest_login"); - } -} - -// Was an URL constructed? -if (!empty($URL)) -{ - // URL was constructed - if (!empty($FATAL[0])) - { - // Fatal errors! - require_once(PATH."inc/fatal_errors.php"); - } - else - { - // Load URL - LOAD_URL($URL); - } -} - -CLOSE_TABLE(); -// -?> += "0.2.8") + { + $LAST = ", last_login"; + } + + // Check login data + $password = ""; + if ($probe_nickname) + { + // Nickname entered + $result = SQL_QUERY_ESC("SELECT userid, password, last_online".$LAST." FROM "._MYSQL_PREFIX."_user_data WHERE nickname='%s' AND status='CONFIRMED' LIMIT 1", + array($UID), __FILE__, __LINE__); + list($UID2, $password, $online, $login) = SQL_FETCHROW($result); + if (!empty($UID2)) $UID = $UID2; + } + else + { + // Direct userid entered + $result = SQL_QUERY_ESC("SELECT userid, password, last_online".$LAST." FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d AND status='CONFIRMED' LIMIT 1", + array(bigintval($UID), $hash), __FILE__, __LINE__); + list($dmy, $password, $online, $login) = SQL_FETCHROW($result); + } + if (SQL_NUMROWS($result) == 1) + { + // Valid data found so let's load the last login data + if (isset($_POST['ok'])) + { + // By default the hash is empty + $hash = ""; + + // Check for old MD5 passwords + if ((strlen($password) == 32) && (md5($_POST['password']) == $password)) + { + // Just set the hash to the password from DB... :) + $hash = $password; + } + else + { + // Encrypt hash for comparsion + $hash = generateHash($_POST['password'], substr($password, 0, -40)); + } + + if ($hash == $password) + { + // New hashed password found so let's generate a new one + $hash = generateHash($_POST['password']); + + // ... and update database + $result_update = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET password='%s' WHERE userid=%d AND status='CONFIRMED' LIMIT 1", + array($hash, $UID), __FILE__, __LINE__); + + // No login bonus by default + $BONUS = false; + + // Probe for last online timemark + $probe = time() - $online; + if (!empty($login)) $probe = time() - $login; + if ((GET_EXT_VERSION("bonus") >= "0.2.2") && ($probe >= $CONFIG['login_timeout'])) + { + // Add login bonus to user's account + $ADD = ", login_bonus=login_bonus+'".$CONFIG['login_bonus']."'"; + $BONUS = true; + + // Subtract login bonus from userid's account or jackpot + if ((GET_EXT_VERSION("bonus") >= "0.3.5") && ($CONFIG['bonus_mode'] != "ADD")) BONUS_POINTS_HANDLER('login_bonus'); + } + + + // Secure lifetime from input form + $l = bigintval($_POST['lifetime']); + $life = "-1"; + if ($l > 0) + { + // Calculate lifetime of cookies + $life = time() + $l; + + // Calculate new hash with the secret key and master salt together + $hash = generatePassString($hash); + + // Update cookies + $login = (@setcookie("userid" , $UID , $life, COOKIE_PATH) + && @setcookie("u_hash" , $hash, $life, COOKIE_PATH) + && @setcookie("lifetime", $l , $life, COOKIE_PATH)); + + // Update global array + $GLOBALS['userid'] = $UID; + $_COOKIE['u_hash'] = $hash; + $_COOKIE['lifetime'] = $l; + } + else + { + // Check for login data + $login = IS_LOGGED_IN(); + } + + if ($login) + { + // Update database records + $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET total_logins=total_logins+1".$ADD." WHERE userid=%d LIMIT 1", + array(bigintval($UID)), __FILE__, __LINE__); + if (SQL_AFFECTEDROWS($link) == 1) + { + // Procedure to checking for login data + if (($BONUS) && (EXT_IS_ACTIVE("bonus"))) + { + // Bonus added (just displaying!) + $URL = URL."/modules.php?module=chk_login&mode=bonus"; + } + else + { + // Bonus not added + $URL = URL."/modules.php?module=chk_login&mode=login"; + } + } + else + { + // Cannot update counter! + $URL = URL."/modules.php?module=".$GLOBALS['module']."&what=login&login=".CODE_CNTR_FAILED; + } + } + else + { + // Cookies not setable! + $URL = URL."/modules.php?module=".$GLOBALS['module']."&what=login&login=".CODE_NO_COOKIES; + } + } + else + { + // Wrong password! + $ERROR = CODE_WRONG_PASS; + } + } + else + { + // Fatal error! + $ERROR = CODE_LOGIN_FAILED; + } + } + else + { + // Other account status? + $result = SQL_QUERY_ESC("SELECT status FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1", + array(bigintval($UID)), __FILE__, __LINE__); + if (SQL_NUMROWS($result) == 1) + { + // Load status + list($status) = SQL_FETCHROW($result); + switch ($status) + { + case "LOCKED": + $ERROR = CODE_ID_LOCKED; + break; + + case "UNCONFIRMED": + $ERROR = CODE_ID_UNCONFIRMED; + break; + + default: + $ERROR = CODE_UNKNOWN_STATUS; + break; + } + } + else + { + // ID not found! + $ERROR = CODE_WRONG_ID; + } + + // Construct URL + $URL = URL."/modules.php?module=".$GLOBALS['module']."&what=login&login=".$ERROR; + } +} + elseif ((!empty($_POST['new_pass'])) && (isset($UID))) +{ + // Compile email when found in address (only secure chars!) + if (!empty($_POST['email'])) $_POST['email'] = str_replace("{DOT}", '.', $_POST['email']); + + // Set ID number when left empty + if (empty($_POST['id'])) $_POST['id'] = "0"; + + // Probe userid/nickname + $probe_nickname = ((EXT_IS_ACTIVE("nickname")) && (("".round($_POST['id'])."") != $_POST['id'])); + if ($probe_nickname) + { + // Nickname entered + $result = SQL_QUERY_ESC("SELECT userid, status FROM "._MYSQL_PREFIX."_user_data WHERE nickname='%s' OR email='%s' LIMIT 1", + array(addslashes($UID), $_POST['email']), __FILE__, __LINE__); + } + else + { + // Direct userid entered + $result = SQL_QUERY_ESC("SELECT userid, status FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d OR email='%s' LIMIT 1", + array(bigintval($UID), $_POST['email']), __FILE__, __LINE__); + } + if (SQL_NUMROWS($result) == 1) + { + // This data is valid, so we create a new pass... :-) + list($UID, $status) = SQL_FETCHROW($result); + + if ($status == "CONFIRMED") + { + // Ooppps, this was missing! ;-) We should update the database... + $NEW_PASS = GEN_PASS(); + $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET password='%s' WHERE userid=%d LIMIT 1", + array(generateHash($NEW_PASS), bigintval($UID)), __FILE__, __LINE__); + + // Prepare data and message for email + $DATA = array($NEW_PASS, getenv('REMOTE_ADDR')); + $msg = LOAD_EMAIL_TEMPLATE("new-pass", "", bigintval($UID)); + + // ... and send it away + SEND_EMAIL(bigintval($UID), GUEST_NEW_PASSWORD, $msg); + + // Output note to user + LOAD_TEMPLATE("admin_settings_saved", false, GUEST_NEW_PASSWORD_SEND); + } + else + { + // Account is locked or unconfirmed + switch ($status) + { + case "LOCKED" : $MSG = CODE_ID_LOCKED; break; + case "UNCONFIRMED": $MSG = CODE_ID_UNCONFIRMED; break; + } + + // Load URL + LOAD_URL(URL."/modules.php?module=".$GLOBALS['module']."&what=login&login=".$MSG); + } + } + else + { + // ID or email is wrong + LOAD_TEMPLATE("admin_settings_saved", false, "".GUEST_WRONG_ID_EMAIL.""); + } +} + else +{ + // Login problems? + if (!empty($_GET['login'])) + { + // Ok, which one now? + $MSG = " +   + + "; + switch ($_GET['login']) + { + case CODE_WRONG_PASS: + $MSG .= LOGIN_WRONG_PASS; + break; + + case CODE_WRONG_ID: + $MSG .= LOGIN_WRONG_ID; + break; + + case CODE_ID_LOCKED: + $MSG .= LOGIN_ID_LOCKED; + break; + + case CODE_ID_UNCONFIRMED: + $MSG .= LOGIN_ID_UNCONFIRMED; + break; + + case CODE_NO_COOKIES: + $MSG .= LOGIN_NO_COOKIES; + break; + + default: + $MSG .= LOGIN_WRONG_ID; + break; + } + $MSG .= " + +   +\n"; + define ('LOGIN_FAILURE_MSG', $MSG); + } + else + { + // No problems, no output + define ('LOGIN_FAILURE_MSG', ""); + } + // Display login form with resend-password form + if (EXT_IS_ACTIVE("nickname")) + { + LOAD_TEMPLATE("guest_nickname_login"); + } + else + { + LOAD_TEMPLATE("guest_login"); + } +} + +// Was an URL constructed? +if (!empty($URL)) +{ + // URL was constructed + if (!empty($FATAL[0])) + { + // Fatal errors! + require_once(PATH."inc/fatal_errors.php"); + } + else + { + // Load URL + LOAD_URL($URL); + } +} + +CLOSE_TABLE(); +// +?>