Hardening
This commit is contained in:
@@ -3,16 +3,17 @@ defined($security_key) or exit;
|
||||
ini_set('display_errors', '1');
|
||||
ini_set('display_startup_errors', '1');
|
||||
error_reporting(E_ALL);
|
||||
|
||||
//------------------------------------------
|
||||
// dealers
|
||||
//------------------------------------------
|
||||
|
||||
//Connect to DB
|
||||
$pdo = dbConnect($dbname);
|
||||
|
||||
//CONTENT FROM API (POST)
|
||||
$post_content = json_decode($input,true);
|
||||
|
||||
|
||||
//CHECK IF REQUEST IS FROM DEALERFINDER
|
||||
if(isset($post_content['bounds'])){
|
||||
//++++++++++++++++++++++
|
||||
@@ -194,6 +195,8 @@ elseif(isset($post_content['dealerfinder'])){
|
||||
}
|
||||
|
||||
//CHECK ALL THE POSTED ITEMS
|
||||
//CHECK ALL THE POSTED ITEMS
|
||||
$orderByParts = [];
|
||||
foreach ($post_content as $key => $value){
|
||||
//GET FILTER CRITERIA
|
||||
if ($key !='submit' && $key !='city' && $key !='range' && $key !='lat' && $key !='lng' && $value !='C'){
|
||||
@@ -204,80 +207,75 @@ elseif(isset($post_content['dealerfinder'])){
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 1 then 1 else 0 end';
|
||||
break;
|
||||
|
||||
case '0':
|
||||
$sql .= 'case when d.'.$key.' = 0 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 0 then 1 else 0 end';
|
||||
break;
|
||||
}
|
||||
//------------------------------------
|
||||
break;
|
||||
|
||||
case ($field_question_2 ?? 'showroom_quality'): //showroom_quality
|
||||
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '2':
|
||||
$sql .= 'case when d.'.$key.' = 2 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 2 then 1 else 0 end';
|
||||
break;
|
||||
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 1 then 1 else 0 end';
|
||||
break;
|
||||
|
||||
case '0':
|
||||
$sql .= 'case when d.'.$key.' = 0 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 0 then 1 else 0 end';
|
||||
break;
|
||||
}
|
||||
//------------------------------------
|
||||
break;
|
||||
|
||||
case ($field_question_3 ?? 'showroom_size'): //showroom_size
|
||||
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '2':
|
||||
$sql .= 'case when d.'.$key.' = 2 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 2 then 1 else 0 end';
|
||||
break;
|
||||
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 1 then 1 else 0 end';
|
||||
break;
|
||||
|
||||
case '0':
|
||||
$sql .= 'case when d.'.$key.' = 0 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 0 then 1 else 0 end';
|
||||
break;
|
||||
}
|
||||
//------------------------------------
|
||||
break;
|
||||
|
||||
case ($field_question_4 ?? 'brand_category'): //brand_category
|
||||
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '2':
|
||||
$sql .= 'case when d.'.$key.' = 2 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 2 then 1 else 0 end';
|
||||
break;
|
||||
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 1 then 1 else 0 end';
|
||||
break;
|
||||
|
||||
case '0':
|
||||
$sql .= 'case when d.'.$key.' = 0 then 1 else 0 end +';
|
||||
$orderByParts[] = 'case when d.'.$key.' = 0 then 1 else 0 end';
|
||||
break;
|
||||
}
|
||||
//------------------------------------
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Replace LAST J
|
||||
$sql = removeTrailingElement($sql, ',');
|
||||
//REPLACE LAST + with DESC
|
||||
$sql = removeTrailingElement($sql, '+').' desc limit 0,4';
|
||||
// Build the final ORDER BY clause
|
||||
if (!empty($orderByParts)) {
|
||||
// If we have filter criteria, order by the sum of matching criteria descending
|
||||
$sql .= '(' . implode(' + ', $orderByParts) . ') desc limit 0,4';
|
||||
} else {
|
||||
// If no criteria (all "C" values), just order by name or some default
|
||||
$sql .= 'd.name asc limit 0,4';
|
||||
}
|
||||
|
||||
//Prepare statement
|
||||
$stmt = $pdo->prepare($sql);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user