- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Программист лоялен как правило при обоюдном тестирование, когда он тестируется на лояльность, а заказчик тестируется на платежеспособность :D
Вот если вы такой, то это очень здорово :)
---------- Добавлено 16.04.2016 в 11:57 ----------
Konceptovskiy,
С психами не работаю, сорян.
Ты программист, можешь ответить?
Что можно про программиста сказать по такому фрагменту?
// 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();
}
Зачем такую простынь?
этого достаточно, что усомниться в способностях.
Красавец!!!
$status = ($status == 1) ? 1 : 0;
А чего не так то ?
Если product_id не передали - значит кто то играется с параметрами и правильнее грохнуть скрипт. Воткнуть экзепшен всегда успеется, да и может он там нафиг не нужен.
Ну и со status также, если кто то передал "3" - то тупо перекинем в 0, т.е. скорее всего в выключенное состояние.
Красивым код бывает только на стадии планирования или при жирном клиенте оплачивающим рефакторинг.
Если придираться, то к sql коду, который собран на прямую из GET параметров и может быть не безопасным.
Код похож на обертку над PDO из за "$db->setQuery($query)" , и наверняка тут можно вторым элементом передать массив значений для запроса, который правильно и будет экранирован уже на уровне драйвера базы.
Зачем такую простынь?
этого достаточно, что усомниться в способностях.
Красавец!!!
$status = ($status == 1) ? 1 : 0;
А чего там не так? Можно для тех кто в танке расписать...
Та не вопрос
$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();
}
Господа, просто скажите чего-нибудь понятное! 🤪
Меня такой код раздражает.
Господа, просто скажите чего-нибудь понятное! 🤪
Это ж джумла, что вы хотите тут увидать, паттерны проектирования? 🤪
Бывает и хуже.
Господа, просто скажите чего-нибудь понятное! 🤪
В $product_id может быть SQL-инъекция
https://ru.wikipedia.org/wiki/Внедрение_SQL-кода
http://php.net/manual/ru/security.database.sql-injection.php