- 1
($prepayment ? 'Предо' : 'О') . 'плата счета №'
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
($prepayment ? 'Предо' : 'О') . 'плата счета №'
Когда DRY возведен в абсолют
0
private function auth($data){
#Проверка данных и авторизация
$login = str_replace(" ", "", mysql_real_escape_string(htmlspecialchars(strip_tags(trim($data['login'], ' /')))));
$pwd = str_replace(" ", "", mysql_real_escape_string(htmlspecialchars(strip_tags(trim($data['password'], ' /')))));
$user = Model_Auth::getUser($login);
if($user===false){
return false;
}else{
if($user['password']==md5(md5($pwd))){
$checksumm = md5($user['login'].$user['password'].$user['rules']);
Model_Auth::updateUser($user['id'],$checksumm);
Model_Auth::updateUserStatus($user['id']);
setcookie("user", $checksumm, time()+3600, '/', $_SERVER['HTTP_HOST']);
if (isset($_SESSION['ref_url'])) {
$ref_url = $_SESSION['ref_url'];
unset($_SESSION['ref_url']);
header('Location:'.$ref_url);
} else {
header('Location:'.$GLOBALS['main_page']);
}
}else{
return false;
}
}
}
А теперь удивитесь - если зайти на сайт и у вас внезапно в куках браузера завалялась пустая переменная user, то вы будете автоматически авторизованы от имени того пользователя, который еще ни разу не заходил в систему потому-что $user не проверяется на пустоту
+4
function check_for_injection($_arr_check) {
$inj = 0;
foreach ($_arr_check as $n=>$v) {
$_text = "SELECT ";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
$_text = " SELECT";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
$_text = "DELETE ";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
$_text = "UPDATE ";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
$_text = "INSERT ";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
$_text = "LOAD ";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
$_text = "DROP ";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
$_text = "INTO ";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
$_text = "OUTFILE ";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
$_text = "CALL ";
if (strpos(strtoupper($v), $_text)!==false) $inj = 1;
}
return $inj;
}
$dd = check_for_injection($_REQUEST);
if ($dd==1) die();
Надежный способ проверки на взлом
0
| НоменклатураПрисоединенныеФайлы.ПутьКФайлу КАК ПутьКФайлу,
| ПрисоединенныеФайлы.ХранимыйФайл КАК ХранимыйФайл
|ИЗ
| ВремНоменклатура КАК ВремНоменклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПрисоединенныеФайлы КАК ПрисоединенныеФайлы
| ПО НоменклатураПрисоединенныеФайлы.Ссылка = ПрисоединенныеФайлы.ПрисоединенныйФайл
| И (НоменклатураПрисоединенныеФайлы.ТипХраненияФайла = ЗНАЧЕНИЕ(Перечисление.ТипыХраненияФайлов.ВИнформационнойБазе))
| ПО (НоменклатураПрисоединенныеФайлы.ВладелецФайла = ВремНоменклатура.Номенклатура)
| И ((НЕ НоменклатураПрисоединенныеФайлы.ПометкаУдаления))
|ГДЕ
| ((НЕ &ОтбиратьФайлы)
| ИЛИ &ОтбиратьФайлы
| И НоменклатураПрисоединенныеФайлы.Ссылка В (&МассивФайлов))
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВремНоменклатура.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ШтрихкодыНоменклатуры.Штрихкод) КАК Штрихкод
|ПОМЕСТИТЬ ВремШтрихкодыДляКаталога
|ИЗ
| ВремНоменклатура КАК ВремНоменклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО ВремНоменклатура.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
| И (ШтрихкодыНоменклатуры.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
|
|СГРУППИРОВАТЬ ПО
| ВремНоменклатура.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| Организации.Ссылка КАК Контрагент,
| Организации.Наименование,
| Организации.НаименованиеПолное,
| Организации.ЮрФизЛицо,
| Организации.КодПоЕДРПОУ,
| Организации.КонтактнаяИнформация.(
| Тип КАК Тип,
| Вид КАК Вид,
| Представление КАК Представление,
| ЗначенияПолей КАК ЗначенияПолей
| )
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.Ссылка = &ОрганизацияВладелецКаталога";
ТекстЗапроса =
ТекстЗапроса + Символы.ПС + ";" + Символы.ПС
+ "ВЫБРАТЬ
| ВремНоменклатура.Номенклатура КАК Номенклатура,
| ВремНоменклатура.ФормаКруг как ФормаКруг
| ВремНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
| ВремНоменклатура.Родитель КАК Родитель,
| ВремНоменклатура.Код КАК Код,
| ВремНоменклатура.Наименование КАК Наименование,
| ВремНоменклатура.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
| ВремНоменклатура.Номенклатура.Описание КАК Описание,
−1
function color_search($color) {
$arColor["COLOR"] = explode(",","aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,snow,springgreen,steelblue,tan,teal,thistle,tomato,turquoise,violet,wheat,white,whitesmoke,yellow,yellowgreen,black,dimgray,gray,darkgray,silver,lightgrey,gainsboro,whitesmoke,white,snow,rosybrown,lightcoral,indianred,brown,firebrick,maroon,darkred,red,salmon,mistyrose,tomato,darksalmon,coral,orangered,lightsalmon,sienna,seashell,saddlebrown,chocolate,peachpuff,sandybrown,linen,peru,bisque,darkorange,antiquewhite,tan,burlywood,blanchedalmond,navajowhite,papayawhip,moccasin,oldlace,wheat,orange,floralwhite,goldenrod,darkgoldenrod,cornsilk,gold,lemonchiffon,khaki,palegoldenrod,darkkhaki,ivory,beige,lightyellow,olive,yellow,olivedrab,yellowgreen,darkolivegreen,greenyellow,lawngreen,chartreuse,honeydew,darkseagreen,lightgreen,palegreen,forestgreen,limegreen,darkgreen,green,lime,seagreen,mediumseagreen,mintcream,springgreen,mediumspringgreen,mediumaquamarine,aquamarine,turquoise,lightseagreen,mediumturquoise,azure,paleturquoise,darkslategray,teal,darkcyan,aqua,cyan,lightcyan,darkturquoise,cadetblue,powderblue,lightblue,deepskyblue,skyblue,lightskyblue,steelblue,aliceblue,slategray,lightslategray,dodgerblue,lightsteelblue,cornflowerblue,royalblue,ghostwhite,lavender,midnightblue,navy,darkblue,mediumblue,blue,darkslateblue,slateblue,mediumslateblue,mediumpurple,blueviolet,indigo,darkorchid,darkviolet,mediumorchid,thistle,plum,violet,purple,darkmagenta,fuchsia,magenta,orchid,mediumvioletred,deeppink,hotpink,lavenderblush,palevioletred,crimson");
if(in_array($color, $arColor["COLOR"])){
return $color;
}
}
0
https://web.archive.org/web/20070125181458/http://2ch.ru/s/src/1158095011998.gif
−2
(is_null($roomCache)) ? 0 : $roomCache->getTotalRooms();
if (is_null($roomCache)) {
($roomCache)) ? 0 : $roomCache->getTotalRooms();
}
Описания не будет, т.к. описать сие не могу.
0
$URi = str_replace("/projects/GCore/", "", $URi);
$U = preg_split('//', $URi, -1, PREG_SPLIT_NO_EMPTY);
$URI = "";
$is_get = 0;
$get_key = "";
$get_is_value = 0;
$value = "";
for( $i = 0; $i < count($U); $i++){
if( $U[$i] == "?" || $is_get == 1){
$char = $U[$i];
if( $char != "?" ){
if( $get_is_value == 0 || $char != "=" || $char != "&" ){
$get_key = $get_key.$char;
}else if( $char == "=" ){
$value = $value.$char;
$get_is_value = 1;
}else if( $char == "&"){
$_GET[$get_key] = $value;
$get_key = "";
$value = "";
$get_is_value = 0;
}
}
$is_get = 1;
}else{
$URI = $URI.$U[$i];
}
}
Была проблема с .htaaccess, гет запросы не передавались, пришлось делать парсер гета))))
+3
//Функция возвращает упорядоченную строку значений параметров POST-запроса
function getReqParams(){
$reqparams = "";
ksort($_POST);
foreach ($_POST as $param => $valuep) {
$reqparams = "$reqparams|$valuep";
}
return substr($reqparams,1);
}
//Извлечение цифровой подписи из заголовков запроса
function getSign(){
$HEADERS = getallheaders();
foreach ($HEADERS as $header => $value) {
if ($header == 'X-Api-Signature') {
$SIGN_REQ = $value;
}
}
return $SIGN_REQ;
}
QIWI Official Documentation
Псс… посоны, у нас тут есть кусок из оф. документации QIWI. Зацените ))
0
public static function getTree($version, $lang = 'en')
{
$pt_root = KbTree::findOne(($version == 'pt2') ?
KbTree::NODE_PT2 : KbTree::NODE_PT3);
$list = $pt_root
->children()
->andWhere(['root' => ($version == 'pt2') ? KbTree::NODE_PT2 : KbTree::NODE_PT3])
->andWhere(['visible' => 1, 'pub' => 1])
->orderBy('lft ASC')
->all();
$tree = [$pt_root->id => []];
$currentLevel = 1;
$levelsIds[$currentLevel] = $pt_root->id;
$dic = [];
foreach($list as $key => $_node)
{
if(isset($_node->level, $_node->id))
{
$dic[$_node->id][] = $_node->getTranslateMessage($lang);
$dic[$_node->id][] = $_node->getFullAlias();
$currentLevel = $_node->level;
switch($_node->level) {
case 2:
$tree[$levelsIds[1]][$_node->id] = [];
break;
case 3:
$tree[$levelsIds[1]][$levelsIds[2]][$_node->id] = [];
break;
case 4:
$tree[$levelsIds[1]][$levelsIds[2]][$levelsIds[3]][$_node->id] = [];
break;
case 5:
$tree[$levelsIds[1]][$levelsIds[2]][$levelsIds[3]][$levelsIds[4]][$_node->id] = [];
break;
case 6:
$tree[$levelsIds[1]][$levelsIds[2]][$levelsIds[3]][$levelsIds[4]][$levelsIds[5]][$_node->id] = [];
break;
}
$levelsIds[$currentLevel] = $_node->id;
}
}
return [$tree[$pt_root->id], $dic];
}
Получение дерева каталогов от PHP middle developer