parent
008cea271d
commit
43f51dd7c8
@ -4,6 +4,9 @@ ini_set("display_errors", "On");
|
|||||||
|
|
||||||
include_once "globals.php";
|
include_once "globals.php";
|
||||||
|
|
||||||
|
// feltöltési limit 10 percen belül
|
||||||
|
define("UPLOAD_LIMIT_10MIN", 10);
|
||||||
|
|
||||||
// könyvtárak
|
// könyvtárak
|
||||||
define("ARTWORKS_DIR", "ARTWORKS");
|
define("ARTWORKS_DIR", "ARTWORKS");
|
||||||
define("INCOMING_DIR", ARTWORKS_DIR . DIRECTORY_SEPARATOR . "incoming");
|
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);
|
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
|
// csatlakozás az adatbázishoz
|
||||||
function open_sql_connection()
|
function open_sql_connection()
|
||||||
{
|
{
|
||||||
@ -30,17 +49,31 @@ function incoming_from_uid($uid)
|
|||||||
return INCOMING_DIR . DIRECTORY_SEPARATOR . $uid;
|
return INCOMING_DIR . DIRECTORY_SEPARATOR . $uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
// feltöltött fájl feldolgozása
|
/*
|
||||||
// RET:
|
* feltöltött fájl feldolgozása
|
||||||
// -2: MIME-hiba
|
* RET:
|
||||||
// -3: mérethiba
|
* -1: ismeretlen hiba
|
||||||
// pozitív: egyedi azonosító, a feltöltés sikerült
|
* -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("MIME_ERROR", -2);
|
||||||
define("SIZE_ERROR", -3);
|
define("SIZE_ERROR", -3);
|
||||||
|
define("LIMIT_ERROR", -4);
|
||||||
|
|
||||||
function process_uploaded_file($file_info)
|
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
|
$ACCEPTED_MIME_TYPES = ["image/png", "image/jpeg"]; // elfogadott MIME-típusok
|
||||||
$MINIMUM_SIZE_BY_DIM = 2000; // minimális oldalméret
|
$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);
|
$incoming_filename = incoming_from_uid($tmp_uid);
|
||||||
$ret = move_uploaded_file($tmp_filename, $incoming_filename);
|
$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;
|
return $tmp_uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,6 +126,9 @@ function process_upload_response(resp) {
|
|||||||
case -3:
|
case -3:
|
||||||
alert("Mérethiba: a kép hosszabb oldalának legalább 2000 pixel szélesnek kell lennie!");
|
alert("Mérethiba: a kép hosszabb oldalának legalább 2000 pixel szélesnek kell lennie!");
|
||||||
break;
|
break;
|
||||||
|
case -4:
|
||||||
|
alert("Elérted a feltöltési limitet.\nKérlek próbáld újra később!");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
alert("Valami nem stimmel!\nHa ismételten nem sikerül, kérlek jelezd a hibát!");
|
alert("Valami nem stimmel!\nHa ismételten nem sikerül, kérlek jelezd a hibát!");
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user