Как выбрать программиста для сайта?

Konceptovskiy
На сайте с 31.01.2011
Offline
140
#111
Stek:
Программист лоялен как правило при обоюдном тестирование, когда он тестируется на лояльность, а заказчик тестируется на платежеспособность :D

Вот если вы такой, то это очень здорово :)

---------- Добавлено 16.04.2016 в 11:57 ----------

melkozaur:
Konceptovskiy,
С психами не работаю, сорян.

Ты программист, можешь ответить?

tysson
На сайте с 03.02.2009
Offline
282
#112

Что можно про программиста сказать по такому фрагменту?

// Require specific controller if requested

if ($controller = JRequest::getWord('controller')) {

$path = JPATH_COMPONENT . DS . 'controllers' . DS . $controller . '.php';

if (file_exists($path)) {

require_once $path;

} else {

$controller = '';

}

}

// Create the controller

$classname = 'vm_clicksController' . $controller;

$data = JRequest::get('get');

$product_id = $data['prod_id'];

if (!$product_id) {

exit();

}

$task = $data['task'];

switch ($task) {

case 'sobi':

saveSobiClick($product_id);

break;

case 'saveLog':

saveContactLog($product_id, $data['status']);

break;

default:

saveVmClick($product_id);

break;

}

//Логирование контакта

function saveContactLog($product_id, $status) {

$user =& JFactory::getUser();

$status = ($status == 1) ? 1 : 0;

if ($status) {

modKassaHelper::AddUserContact($user->id, $product_id);

}

modKassaHelper::userContactLog(array(

'object_id' => $product_id,

'user' => $user,

'ou_status_id' => $status));

}

//Вычисляем необходимуя площадь в кв. м.

function getStockSize($db, $product_id) {

$query = "SELECT product_desc FROM #__vm_product WHERE product_id ='{$product_id}'";

$db->setQuery($query);

$product_desc = $db->loadResult();

preg_match("/Необходимая площадь или кол-во паллето мест:<\/strong>(.*?)<br/si", $product_desc, $matches);

if (count($matches) > 1) {

$values = str_replace( 'м2', '', $matches[1]);

//$values = preg_replace( '/[^0-9.\-]/', '', $values);

//$values = explode("-", $values);

preg_match_all('!\d+!', $values, $d_values);

if (count($d_values) > 0) {

return floor(array_sum($d_values[0])/count($d_values[0]));

}

}

return 0;

}

//Вычисляем цену комиссии на основе площади склада

function getStockComission($stockSize) {

require_once(JPATH_COMPONENT . DS . 'comission_calculation.php');

foreach($commission_calculation as $cc) {

if ($stockSize <= $cc['size']) {

return $cc['value'];

}

}

$last = array_pop($commission_calculation);

return $last['value'];

}

function saveVmClick($product_id)

{

header('Content-Type: application/json');

$db = &JFactory::getDBO();

$result = array();

$query = "SELECT id FROM #__vm_clicks WHERE product_id ='{$product_id}' AND created='" . date("Y-m-d") . "'";

$db->setQuery($query);

$id = $db->loadResult();

if (!$id) {

//Create new record

$query = "INSERT INTO #__vm_clicks (`id`, `product_id`, `hits`, `created`)

VALUES (NULL, '{$product_id}', '1', NOW());";

$db->setQuery($query);

$db->query();

} else {

//update record

$query = "UPDATE #__vm_clicks set `hits`=`hits`+1 WHERE id={$id}";

$db->setQuery($query);

$db->query();

}

Смените дизайн.....
C
На сайте с 04.02.2005
Offline
277
#113

Зачем такую простынь?

$data = JRequest::get('get');

$product_id = $data['prod_id'];
if (!$product_id) {
exit();
}

этого достаточно, что усомниться в способностях.

Красавец!!!

$status = ($status == 1) ? 1 : 0;

S
На сайте с 23.05.2004
Offline
316
#114

А чего не так то ?

Если product_id не передали - значит кто то играется с параметрами и правильнее грохнуть скрипт. Воткнуть экзепшен всегда успеется, да и может он там нафиг не нужен.

Ну и со status также, если кто то передал "3" - то тупо перекинем в 0, т.е. скорее всего в выключенное состояние.

Красивым код бывает только на стадии планирования или при жирном клиенте оплачивающим рефакторинг.

Если придираться, то к sql коду, который собран на прямую из GET параметров и может быть не безопасным.


$query = "UPDATE #__vm_clicks set `hits`=`hits`+1 WHERE id={$id}";
$db->setQuery($query);
$db->query();

Код похож на обертку над PDO из за "$db->setQuery($query)" , и наверняка тут можно вторым элементом передать массив значений для запроса, который правильно и будет экранирован уже на уровне драйвера базы.

Это просто подпись.
tysson
На сайте с 03.02.2009
Offline
282
#115
Chukcha:
Зачем такую простынь?

$data = JRequest::get('get');


$product_id = $data['prod_id'];
if (!$product_id) {
exit();
}


этого достаточно, что усомниться в способностях.

Красавец!!!
$status = ($status == 1) ? 1 : 0;

А чего там не так? Можно для тех кто в танке расписать...

C
На сайте с 04.02.2005
Offline
277
#116

Та не вопрос

$data = JRequest::get('get');

Сейчас в data лежат get параметра

$product_id = $data['prod_id'];

Вот здесь от получает product_id

Но!!! его может там и не быть!!!

Поэтому

$product_id = isset($data['prod_id'])?$product_id = $data['prod_id']:0;

Все входные данные должны проверяться на валидность!

2.

$status = ($status == 1) ? 1 : 0;

Ну.. тут возможно я не прав, может имеется несколько статусов и в данном случае важен только status == 1

Но, скорей всего, что status может быть или 0 или 1

В таком случае -

$status = (int) $status;

if (!$product_id) {

exit();

}

tysson
На сайте с 03.02.2009
Offline
282
#117

Господа, просто скажите чего-нибудь понятное! 🤪

C
На сайте с 04.02.2005
Offline
277
#118

Меня такой код раздражает.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#119
tysson:
Господа, просто скажите чего-нибудь понятное! 🤪

Это ж джумла, что вы хотите тут увидать, паттерны проектирования? 🤪

Бывает и хуже.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
SI
На сайте с 03.12.2007
Offline
130
#120
tysson:
Господа, просто скажите чего-нибудь понятное! 🤪

В $product_id может быть SQL-инъекция

https://ru.wikipedia.org/wiki/Внедрение_SQL-кода

http://php.net/manual/ru/security.database.sql-injection.php

-= Онлайн сервисы =-

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий