Example #1
0
    protected function _in_home()
    {
        global $bio, $core, $warning;
        if (!_button()) {
            return;
        }
        $v = $this->__(w('page address key'));
        if ($bio->v('auth_member')) {
            redirect($v->page);
        }
        if (empty($v->address)) {
            $warning->set('LOGIN_ERROR');
        }
        if (_button('recovery')) {
            $sql = 'SELECT bio_id, bio_name, bio_address, bio_recovery
				FROM _bio
				WHERE bio_address = ?
					AND bio_id <> ?
					AND bio_id NOT IN (
						SELECT ban_userid
						FROM _banlist
					)';
            if ($recovery = sql_fieldrow(sql_filter($sql, $v->address, 1))) {
                $email = array('USERNAME' => $recovery->bio_name, 'U_RECOVERY' => _link('my', array('recovery', 'k' => _rainbow_create($recovery->bio_id))), 'U_PROFILE' => _link('-', $recovery->bio_nickname));
                $core->email->init('info', 'bio_recovery', $email);
                $core->email->send($recovery->bio_address);
                $sql = 'UPDATE _bio SET bio_recovery = bio_recovery + 1
					WHERE bio_id = ?';
                sql_query(sql_filter($sql, $recovery->bio_id));
            }
            $this->_stop('RECOVERY_LEGEND');
        }
        if (empty($v->key)) {
            $warning->set('login_fail');
        }
        $v->register = false;
        $v->field = email_format($v->address) ? 'address' : 'name';
        $sql = 'SELECT address_bio
			FROM _bio_address
			WHERE address_name = ?';
        if ($bio_address = sql_field(sql_filter($sql, $v->address), 'address_bio', 0)) {
            $sql = 'SELECT bio_id, bio_key, bio_fails
				FROM _bio
				WHERE bio_id = ?
					AND bio_active = ?';
            if ($_bio = sql_fieldrow(sql_filter($sql, $bio_address, 1))) {
                if (ValidatePassword($v->key, $_bio->bio_key)) {
                    if ($_bio->bio_fails) {
                        $sql = 'UPDATE _bio SET bio_fails = 0
							WHERE bio_id = ?';
                        sql_query(sql_filter($sql, $_bio->bio_id));
                    }
                    $bio->session_create($_bio->bio_id);
                    redirect($v->page);
                }
                if ($_bio->bio_fails == $core->v('account_failcount')) {
                    // TODO: Captcha system if failcount reached
                    // TODO: Notification about blocked account
                    _fatal(508);
                }
                $sql = 'UPDATE _bio SET bio_fails = bio_fails + 1
					WHERE bio_id = ?';
                sql_query(sql_filter($sql, $_bio->bio_id));
                sleep(5);
                for ($i = 1; $i < 32; $i++) {
                    if ($i == 1) {
                        _style('birth_day');
                    }
                    _style('birth_day.row', array('DAY' => $i));
                }
                for ($i = 1; $i < 13; $i++) {
                    if ($i == 1) {
                        _style('birth_month');
                    }
                    _style('birth_month.row', array('MONTH' => $i));
                }
                for ($i = date('Y'); $i > 1900; $i--) {
                    if ($i == date('Y')) {
                        _style('birth_year');
                    }
                    _style('birth_year.row', array('YEAR' => $i));
                }
                _style('error', array('MESSAGE' => 'Los datos ingresados son inv&aacute;lidos, por favor intenta nuevamente.'));
                return;
            }
        } else {
            $v->register = true;
        }
        if ($v->register) {
            $this->_up_home();
        }
        return;
    }
Example #2
0
    protected function _in_home()
    {
        global $bio, $core;
        $v = $this->__(w('page address key'));
        if ($bio->v('auth_member')) {
            redirect($v->page);
        }
        if (empty($v->address)) {
            $this->warning->set('LOGIN_ERROR');
        }
        if (_button('recovery')) {
            $sql = 'SELECT bio_id, bio_name, bio_address, bio_recovery
				FROM _bio
				WHERE bio_address = ?
					AND bio_id <> ?
					AND bio_id NOT IN (
						SELECT ban_userid
						FROM _banlist
					)';
            if ($recovery = sql_fieldrow(sql_filter($sql, $v->address, 1))) {
                $email = array('USERNAME' => $recovery->bio_name, 'U_RECOVERY' => _link('my', array('recovery', 'k' => _rainbow_create($recovery->bio_id))), 'U_PROFILE' => _link('-', $recovery->bio_nickname));
                $core->email->init('info', 'bio_recovery', $email);
                $core->email->send($recovery->bio_address);
                $sql = 'UPDATE _bio SET bio_recovery = bio_recovery + 1
					WHERE bio_id = ?';
                _sql(sql_filter($sql, $recovery->bio_id));
            }
            $this->_stop('RECOVERY_LEGEND');
        }
        if (empty($v->key)) {
            $this->warning->set('login_fail');
        }
        $v->register = false;
        $v->field = is_email($v->address) ? 'address' : 'name';
        $sql = 'SELECT bio_id, bio_key, bio_fails
			FROM _bio
			WHERE bio_?? = ?
				AND bio_blocked = ?';
        if ($_bio = _fieldrow(sql_filter($sql, $v->field, $v->address, 0))) {
            if ($_bio->bio_key === _password($v->key)) {
                if ($_bio->bio_fails) {
                    $sql = 'UPDATE _bio SET bio_fails = 0
						WHERE bio_id = ?';
                    _sql(sql_filter($sql, $_bio->bio_id));
                }
                $bio->session_create($_bio->bio_id);
                redirect($v->page);
            }
            if ($_bio->bio_fails == $core->v('account_failcount')) {
                // TODO: Captcha system if failcount reached
                // TODO: Notification about blocked account
                _fatal(508);
            }
            $sql = 'UPDATE _bio SET bio_fails = bio_fails + 1
				WHERE bio_id = ?';
            _sql(sql_filter($sql, $_bio->bio_id));
            sleep(5);
            $this->warning->set('login_fail');
        } else {
            $v->register = true;
        }
        if ($v->register) {
            $this->_up_home();
        }
        return;
    }