Вход Регистрация
Файл: library/XenForo/Model/Login.php
Строк: 79
<?php

class XenForo_Model_Login extends XenForo_Model
{
    public function 
countLoginAttempts($usernameOrEmail$ipAddress null)
    {
        
$ipAddress XenForo_Helper_Ip::getBinaryIp($ipAddress);

        
$cutOff XenForo_Application::$time 60 15;

        return 
$this->_getDb()->fetchOne('
            SELECT COUNT(*)
            FROM xf_login_attempt
            WHERE login = ?
                AND ip_address = ?
                AND attempt_date > ?
        '
, array($usernameOrEmail$ipAddress$cutOff));
    }

    public function 
requireLoginCaptcha($usernameOrEmail$maxNoCaptcha null$ipAddress null)
    {
        if (
$maxNoCaptcha === null)
        {
            
$maxNoCaptcha 4;
        }

        return (
$this->countLoginAttempts($usernameOrEmail$ipAddress) > $maxNoCaptcha);
    }

    public function 
logLoginAttempt($usernameOrEmail$ipAddress null)
    {
        
$this->_getDb()->insert('xf_login_attempt', array(
            
'login' => utf8_substr($usernameOrEmail060),
            
'ip_address' => XenForo_Helper_Ip::getBinaryIp($ipAddress),
            
'attempt_date' => XenForo_Application::$time
        
));
    }

    public function 
clearLoginAttempts($usernameOrEmail$ipAddress null)
    {
        
$ipAddress XenForo_Helper_Ip::getBinaryIp($ipAddress);

        
$db $this->_getDb();
        
$db->delete('xf_login_attempt',
            
'login = ' $db->quote($usernameOrEmail) . ' AND ip_address = ' $db->quote($ipAddress)
        );
    }

    public function 
cleanUpLoginAttempts()
    {
        
$cutOff XenForo_Application::$time 60 15;

        
$db $this->_getDb();
        
$db->delete('xf_login_attempt''attempt_date < ' $db->quote($cutOff));
    }

    
/**
     * Deprecated as this does not support IPv6. All code should be updated
     * to the "binary" format in XenForo_Helper_Ip.
     *
     * @param null|string $ipAddress
     *
     * @return string
     */
    
public function convertIpToLong($ipAddress null)
    {
        if (
$ipAddress === null)
        {
            
$ipAddress = (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 0);
        }

        if (
is_string($ipAddress) && strpos($ipAddress'.'))
        {
            
$ipAddress ip2long($ipAddress);
        }

        return 
sprintf('%u'$ipAddress);
    }
}
Онлайн: 1
Реклама