Automatic unban problem
#1

PHP код:
//----------------------------------------------
    //-------------[CHECK BAN]--------------
    
new
        
retrieveName[MAX_PLAYER_NAME],
        
retrieveBannedBy[MAX_PLAYER_NAME],
        
retrieveReason[50],
        
retrieveBanDate,
        
retrieveDuration,
        
retrieveGCPI[60],
        
retrieveIP[16 1],
        
Query[380]
    ;
    
GetPlayerIp(playeridretrieveIPsizeof(retrieveIP));
    
gpci(playeridretrieveGCPIsizeof(retrieveGCPI));
    
format(Querysizeof(Query), "SELECT * FROM `Bans` WHERE `Name` = '%s' COLLATE NOCASE OR `GPCI` = '%s' OR `IP` = '%s' LIMIT 1"GetPlayerName(playerid), retrieveGCPIretrieveIP);
    
queryresult db_query(DatabaseQuery);
    if(
db_num_rows(queryresult))
    {
        
db_get_field_assoc(queryresult"Name"retrieveNamesizeof(retrieveName));
        
db_get_field_assoc(queryresult"BannerName"retrieveBannedBysizeof(retrieveBannedBy));
        
db_get_field_assoc(queryresult"Reason"retrieveReasonsizeof(retrieveReason));
        
retrieveBanDate db_get_field_assoc_int(queryresult"BANDATE");
        
retrieveDuration db_get_field_assoc_int(queryresult"UNBANDATE");
        if(
gettime() - retrieveDuration > (retrieveDuration retrieveBanDate))
        {
            
format(Querysizeof(Query), "[SERVER]"COL_WHITE" Your ban expired on %s "COL_SEXYGREEN"Welcome back"COL_WHITE" %s!"TimestampToDateTime(retrieveDuration), GetPlayerName(playerid));
            
SendClientMessage(playeridCOLOR_SERVERQuery);
            
format(Querysizeof(Query), "DELETE * FROM `Bans` WHERE `Name` = '%s'"retrieveName);
            
db_query(DatabaseQuery);
        }
        else
        {
            
format(Querysizeof(Query), "\
            "
COL_RED"Username: "COL_WHITE"%s\n\
            "
COL_RED"Banned IP: "COL_WHITE"%s\n\
            "
COL_RED"Admin banned you: "COL_WHITE"%s\n\
            "
COL_RED"Reason of Ban: "COL_WHITE"%s\n\
            "
COL_RED"Date of Ban: "COL_WHITE"%s\n\
            "
COL_RED"Date of Unban: "COL_WHITE"%s"retrieveNameretrieveIPretrieveBannedBy,
             
retrieveReasonTimestampToDateTime(retrieveBanDate), TimestampToDateTime(retrieveDuration));
            
ShowPlayerDialog(playeridDIALOG_BANINFODIALOG_STYLE_MSGBOX""COL_RED"Account BANNED!"Query"Exit""");
            
db_free_result(queryresult);
            return 
1;
        }
    }
    else
    {
    
//----------------------------------------------
    //-------------[Login-Register]--------------
        
pInfo[playerid][USER_LOGGED_IN] = false;
        
format(Querysizeof(Query), "SELECT `Username` FROM `users` WHERE `Username` = '%s' COLLATE NOCASE"DB_Escape(GetPlayerName(playerid)));
        
queryresult db_query(DatabaseQuery);
        if(
db_num_rows(queryresult))
        {
            
format(Querysizeof(Query), ""COL_WHITE"Welcome, this account ("COL_BLUE"%s)"COL_WHITE" is registered\nPlease enter the password to login\n\n"COL_GRIS"If you are not the owner of this account, leave and rejoin with a different nickname"GetPlayerName(playerid), playerid);
            
ShowPlayerDialog(playeriddloginDIALOG_STYLE_PASSWORD""COL_BLUE"Login Panel"Query"Login""Leave");
        }
        else
        {
            
format(Querysizeof(Query), ""COL_WHITE"Welcome, this account ("COL_RED"%s)"COL_WHITE" is not registered\nPlease enter your desired password for this account\n\n"COL_GRIS"Once you are registered, do not share your password with anyone besides yourself!"GetPlayerName(playerid), playerid);
            
ShowPlayerDialog(playeriddregisterDIALOG_STYLE_PASSWORD""COL_BLUE"Register Panel"Query"Register""Leave");
        }
        
db_free_result(queryresult);
    } 
Do not remove the ban
Reply
#2

What exactly are you storing in "UNBANDATE"? Is it a duration or a date? Very confusing.
Reply
#3

bandate example : 1480959291

unbandate example: 1480962891
Reply
#4

Dude, if you store unix time in those fields, what is the next condition for?
PHP код:
if(gettime() - retrieveDuration > (retrieveDuration retrieveBanDate)) 
Should be enough with:
PHP код:
if(gettime() >= retrieveDuration)
{
    
// Remove the ban record from the database.

The gpci is not exact by the way, you might keep banned innocent users with it.
Reply
#5

thanks bro!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)