parent
							
								
									008cea271d
								
							
						
					
					
						commit
						43f51dd7c8
					
				@ -4,6 +4,9 @@ ini_set("display_errors", "On");
 | 
			
		||||
 | 
			
		||||
include_once "globals.php";
 | 
			
		||||
 | 
			
		||||
// feltöltési limit 10 percen belül
 | 
			
		||||
define("UPLOAD_LIMIT_10MIN", 10);
 | 
			
		||||
 | 
			
		||||
// könyvtárak
 | 
			
		||||
define("ARTWORKS_DIR", "ARTWORKS");
 | 
			
		||||
define("INCOMING_DIR", ARTWORKS_DIR . DIRECTORY_SEPARATOR . "incoming");
 | 
			
		||||
@ -15,6 +18,22 @@ function only_alpha_numeric($input){
 | 
			
		||||
    return preg_replace("/[^a-zA-Z0-9_]+/", "", $input);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// felhasználó IP címének meghatározása... nem is olyan triviális
 | 
			
		||||
// https://stackoverflow.com/a/2031935
 | 
			
		||||
function get_client_ip(){
 | 
			
		||||
    foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED') as $key){
 | 
			
		||||
        if (array_key_exists($key, $_SERVER) === true){
 | 
			
		||||
            foreach (explode(',', $_SERVER[$key]) as $ip){
 | 
			
		||||
                $ip = trim($ip); // just to be safe
 | 
			
		||||
                if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){
 | 
			
		||||
                    return $ip;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return $_SERVER['REMOTE_ADDR'];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// csatlakozás az adatbázishoz
 | 
			
		||||
function open_sql_connection()
 | 
			
		||||
{
 | 
			
		||||
@ -30,17 +49,31 @@ function incoming_from_uid($uid)
 | 
			
		||||
    return INCOMING_DIR . DIRECTORY_SEPARATOR . $uid;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// feltöltött fájl feldolgozása
 | 
			
		||||
// RET:
 | 
			
		||||
//  -2: MIME-hiba
 | 
			
		||||
//  -3: mérethiba
 | 
			
		||||
// pozitív: egyedi azonosító, a feltöltés sikerült
 | 
			
		||||
/*
 | 
			
		||||
 * feltöltött fájl feldolgozása
 | 
			
		||||
 * RET:
 | 
			
		||||
 *  -1: ismeretlen hiba
 | 
			
		||||
 *  -2: MIME-hiba
 | 
			
		||||
 *  -3: mérethiba
 | 
			
		||||
 *  -3: elérte a feltöltési limitet
 | 
			
		||||
 * string: egyedi azonosító, a feltöltés sikerült
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
define("MIME_ERROR", -2);
 | 
			
		||||
define("SIZE_ERROR", -3);
 | 
			
		||||
define("LIMIT_ERROR", -4);
 | 
			
		||||
 | 
			
		||||
function process_uploaded_file($file_info)
 | 
			
		||||
{
 | 
			
		||||
    // feltöltési limit ellenőrzése
 | 
			
		||||
    global $dbconn;
 | 
			
		||||
    $ip = mysqli_real_escape_string($dbconn, get_client_ip()); // escape, biztos ami biztos
 | 
			
		||||
    $query = "SELECT COUNT(No) FROM server_access WHERE Timestamp > TIMESTAMPADD(MINUTE, -10, CURRENT_TIMESTAMP) AND IP = '$ip';";
 | 
			
		||||
    $ret = (int)mysqli_query($dbconn, $query)->fetch_assoc()["COUNT(No)"];
 | 
			
		||||
    if ($ret === false || $ret >= UPLOAD_LIMIT_10MIN){
 | 
			
		||||
        return LIMIT_ERROR;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $ACCEPTED_MIME_TYPES = ["image/png", "image/jpeg"]; // elfogadott MIME-típusok
 | 
			
		||||
    $MINIMUM_SIZE_BY_DIM = 2000; // minimális oldalméret
 | 
			
		||||
 | 
			
		||||
@ -63,6 +96,14 @@ function process_uploaded_file($file_info)
 | 
			
		||||
    $incoming_filename = incoming_from_uid($tmp_uid);
 | 
			
		||||
    $ret = move_uploaded_file($tmp_filename, $incoming_filename);
 | 
			
		||||
 | 
			
		||||
    // felhasználó IP címének eltárolása a feltöltési limit betartatásához
 | 
			
		||||
    $query = "INSERT INTO server_access (IP, Image_FileName, Timestamp) VALUES('$ip', '$tmp_uid', CURRENT_TIMESTAMP);";
 | 
			
		||||
    $res = mysqli_query($dbconn, $query);
 | 
			
		||||
    // ha valamiért sikertelen, hibával térünk vissza
 | 
			
		||||
    if ($res !== true) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return $tmp_uid;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -126,6 +126,9 @@ function process_upload_response(resp) {
 | 
			
		||||
            case -3:
 | 
			
		||||
                alert("Mérethiba: a kép hosszabb oldalának legalább 2000 pixel szélesnek kell lennie!");
 | 
			
		||||
                break;
 | 
			
		||||
            case -4:
 | 
			
		||||
                alert("Elérted a feltöltési limitet.\nKérlek próbáld újra később!");
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                alert("Valami nem stimmel!\nHa ismételten nem sikerül, kérlek jelezd a hibát!");
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user