Dodana omejitev klikov/minuto pri izpolnjevanju dolocene ankete (zaenkrat 100)
This commit is contained in:
parent
65c97fa7af
commit
dfc8b403b3
69
function.php
69
function.php
@ -248,13 +248,6 @@ if ($admin_type > -1) {
|
||||
}
|
||||
|
||||
|
||||
// Sledenje spremembam (tracker)
|
||||
// deluje tudi v adminu...
|
||||
/*if ($global_user_id != 0) {
|
||||
sisplet_query("INSERT INTO user_tracker (uid, timestamp, what) VALUES ('$global_user_id', '" . time() . "', '" . $_SERVER["REQUEST_URI"] . "')");
|
||||
}*/
|
||||
|
||||
|
||||
// Preverimo ce je spremenljivka countable (zaradi ogromno warningov v kodi, kjer se counta prazno spremenljivko)
|
||||
if (!function_exists('is_countable')) {
|
||||
function is_countable($var) {
|
||||
@ -263,12 +256,21 @@ if (!function_exists('is_countable')) {
|
||||
}
|
||||
|
||||
|
||||
// Preverimo klike na minuto pri izpolnjevanju anekte da se ne zapolni sql
|
||||
if(!checkClicksPerMinute()){
|
||||
|
||||
http_response_code(425);
|
||||
echo '<h1>Service Unavailable.</h1>';
|
||||
|
||||
die();
|
||||
}
|
||||
|
||||
|
||||
// Preverimo tip hierarhije
|
||||
$hierarhija_type = preveriTipHierarhije();
|
||||
|
||||
|
||||
|
||||
|
||||
/******* SPLOSNE FUNKCIJE *******/
|
||||
|
||||
// Skrajsa string, in ga odreze lepo za besedo in ne kar vmes :)
|
||||
@ -1143,4 +1145,55 @@ function root_dir($file = null)
|
||||
return __DIR__ .'/'. $file;
|
||||
}
|
||||
|
||||
|
||||
// Pri izpolnjevanju ankete preverimo stevilo klikov na minuto - ce jih je prevec, respondenta zavrnemo, drugace se lahko sql zafila in streznik ni vec odziven
|
||||
function checkClicksPerMinute(){
|
||||
|
||||
// Stevilo klikov/minuto na anketo (izpolnjevanje), ki jih se pustimo preden zablokiramo dostop
|
||||
$click_minute_limit = 100;
|
||||
|
||||
// Preverimo ce gre za izpolnjevanje ankete
|
||||
if($_SERVER["SCRIPT_NAME"] != '/main/survey/index.php')
|
||||
return true;
|
||||
|
||||
// Preverimo ce gre za prvi prihod na doloceno stran ankete in ne na prvo stran
|
||||
if(isset($_GET['grupa']))
|
||||
return true;
|
||||
|
||||
// Preverimo ce je id ankete ustrezno nastavljen
|
||||
if(!isset($_GET['anketa']) || $_GET['anketa'] <= 0)
|
||||
return true;
|
||||
|
||||
|
||||
$click_time = time();
|
||||
|
||||
$sql = sisplet_query("SELECT click_count, click_time FROM srv_clicks WHERE ank_id='".$_GET['anketa']."'");
|
||||
if (mysqli_num_rows($sql) > 0) {
|
||||
|
||||
list($click_count, $first_click_time) = mysqli_fetch_array($sql);
|
||||
|
||||
// Ce nismo znotraj minute vse resetiramo in pustimo naprej
|
||||
if($click_time - $first_click_time > 60){
|
||||
$sqlI = sisplet_query("UPDATE srv_clicks SET click_count='1', click_time='".$click_time."' WHERE ank_id='".$_GET['anketa']."'");
|
||||
return true;
|
||||
}
|
||||
|
||||
// Click count je ok - pustimo naprej
|
||||
if($click_count < $click_minute_limit){
|
||||
$sqlI = sisplet_query("UPDATE srv_clicks SET click_count=click_count+1 WHERE ank_id='".$_GET['anketa']."'");
|
||||
return true;
|
||||
}
|
||||
// Click count je previsok - ZAVRNEMO
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else{
|
||||
$sqlI = sisplet_query("INSERT INTO srv_clicks (ank_id, click_count, click_time) VALUES ('".$_GET['anketa']."', '1', '".$click_time."')");
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
?>
|
@ -9294,3 +9294,14 @@ UPDATE misc SET value='20.09.16' WHERE what="version";
|
||||
INSERT INTO srv_help (help, what) VALUES ('Upload omejitev', 'srv_upload_limit');
|
||||
|
||||
UPDATE misc SET value='20.09.18' WHERE what="version";
|
||||
|
||||
## Tabela dostopov do izpolnjevanja - preverjanje stevila klikov na minuto
|
||||
CREATE TABLE srv_clicks (
|
||||
ank_id INT(11) NOT NULL,
|
||||
click_count SMALLINT NOT NULL DEFAULT 0,
|
||||
click_time INT(11) NOT NULL,
|
||||
PRIMARY KEY (ank_id),
|
||||
CONSTRAINT fk_srv_clicks_ank_id FOREIGN KEY (ank_id) REFERENCES srv_anketa (id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
UPDATE misc SET value='20.09.21' WHERE what="version";
|
||||
|
Loading…
x
Reference in New Issue
Block a user