Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/User/ValidationHash.php
Строк: 73
<?php
namespace ConcreteCoreUser;

use 
Core;
use 
Database;

class 
ValidationHash
{
    
/**
     * Generates a random string.
     *
     * @param int $len
     *
     * @return string
     */
    
protected static function generate($len 64)
    {
        return 
Core::make('helper/validation/identifier')->getString($len);
    }

    
/**
     * Removes old entries for the supplied type.
     *
     * @param int $type
     */
    
protected static function removeExpired($type)
    {
        switch (
$type) {
            case 
UVTYPE_CHANGE_PASSWORD:
                
$lifetime USER_CHANGE_PASSWORD_URL_LIFETIME;
                break;
            case 
UVTYPE_LOGIN_FOREVER:
                
$lifetime USER_FOREVER_COOKIE_LIFETIME;
                break;
            default:
                
$lifetime 5184000// 60 days
                
break;
        }
        
$db Database::connection();
        
$db->executeQuery('DELETE FROM UserValidationHashes WHERE type = ? AND uDateGenerated <= ?', array($typetime() - $lifetime));
    }

    
/**
     * Adds a hash to the lookup table for a user and type, removes any other existing hashes for the same user and type.
     *
     * @param int $uID
     * @param int $type
     * @param bool $singeHashAllowed
     * @param int $hashLength
     *
     * @return string
     */
    
public static function add($uID$type$singeHashAllowed false$hashLength 64)
    {
        
self::removeExpired($type);
        
$hash self::generate($hashLength);
        
$db Database::connection();
        if (
$singeHashAllowed) {
            
$db->executeQuery("DELETE FROM UserValidationHashes WHERE uID = ? AND type = ?", array($uID$type));
        }
        
$db->executeQuery("insert into UserValidationHashes (uID, uHash, uDateGenerated, type) values (?, ?, ?, ?)", array($uID$hashtime(), intval($type)));

        return 
$hash;
    }

    
/**
     * Gets the users id for a given hash and type.
     *
     * @param string $hash
     * @param int $type
     *
     * @return int | false
     */
    
public static function getUserID($hash$type)
    {
        
self::removeExpired($type);
        
$db Database::connection();
        
$uID $db->fetchColumn("SELECT uID FROM UserValidationHashes WHERE uHash = ? AND type = ?", array($hash$type));
        if (
is_numeric($uID) && $uID 0) {
            return 
$uID;
        } else {
            return 
false;
        }
    }
}
Онлайн: 2
Реклама