1. PHP / Говнокод #23113

    −1

    1. 1
    ($prepayment ? 'Предо' : 'О') . 'плата счета №'

    Когда DRY возведен в абсолют

    _dk, 06 Июня 2017

    Комментарии (2)
  2. PHP / Говнокод #23104

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    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 не проверяется на пустоту

    McLotos, 06 Июня 2017

    Комментарии (10)
  3. PHP / Говнокод #23102

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    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();

    Надежный способ проверки на взлом

    ostin, 05 Июня 2017

    Комментарии (5)
  4. PHP / Говнокод #23077

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    |	НоменклатураПрисоединенныеФайлы.ПутьКФайлу КАК ПутьКФайлу,
    		  |	ПрисоединенныеФайлы.ХранимыйФайл КАК ХранимыйФайл
    		  |ИЗ
    		  |	ВремНоменклатура КАК ВремНоменклатура
    		  |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
    		  |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПрисоединенныеФайлы КАК ПрисоединенныеФайлы
    		  |			ПО НоменклатураПрисоединенныеФайлы.Ссылка = ПрисоединенныеФайлы.ПрисоединенныйФайл
    		  |				И (НоменклатураПрисоединенныеФайлы.ТипХраненияФайла = ЗНАЧЕНИЕ(Перечисление.ТипыХраненияФайлов.ВИнформационнойБазе))
    		  |		ПО (НоменклатураПрисоединенныеФайлы.ВладелецФайла = ВремНоменклатура.Номенклатура)
    		  |			И ((НЕ НоменклатураПрисоединенныеФайлы.ПометкаУдаления))
    		  |ГДЕ
    		  |	((НЕ &ОтбиратьФайлы)
    		  |			ИЛИ &ОтбиратьФайлы
    		  |				И НоменклатураПрисоединенныеФайлы.Ссылка В (&МассивФайлов))
    		  |
    		  |УПОРЯДОЧИТЬ ПО
    		  |	Номенклатура
    		  |;
    		  |
    		  |////////////////////////////////////////////////////////////////////////////////
    		  |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    		  |	ВремНоменклатура.Номенклатура КАК Номенклатура,
    		  |	МАКСИМУМ(ШтрихкодыНоменклатуры.Штрихкод) КАК Штрихкод
    		  |ПОМЕСТИТЬ ВремШтрихкодыДляКаталога
    		  |ИЗ
    		  |	ВремНоменклатура КАК ВремНоменклатура
    		  |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
    		  |		ПО ВремНоменклатура.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
    		  |			И (ШтрихкодыНоменклатуры.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
    		  |
    		  |СГРУППИРОВАТЬ ПО
    		  |	ВремНоменклатура.Номенклатура
    		  |;
    		  |
    		  |////////////////////////////////////////////////////////////////////////////////
    		  |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    		  |	Организации.Ссылка КАК Контрагент,
    		  |	Организации.Наименование,
    		  |	Организации.НаименованиеПолное,
    		  |	Организации.ЮрФизЛицо,
    		  |	Организации.КодПоЕДРПОУ,
    		  |	Организации.КонтактнаяИнформация.(
    		  |		Тип КАК Тип,
    		  |		Вид КАК Вид,
    		  |		Представление КАК Представление,
    		  |		ЗначенияПолей КАК ЗначенияПолей
    		  |	)
    		  |ИЗ
    		  |	Справочник.Организации КАК Организации
    		  |ГДЕ
    		  |	Организации.Ссылка = &ОрганизацияВладелецКаталога";
    
    	ТекстЗапроса = 
    		ТекстЗапроса + Символы.ПС + ";" + Символы.ПС
    		+ "ВЫБРАТЬ
    		  |	ВремНоменклатура.Номенклатура КАК Номенклатура,
    		  | ВремНоменклатура.ФормаКруг как ФормаКруг
    		  |	ВремНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
    		  |	ВремНоменклатура.Родитель КАК Родитель,
    		  |	ВремНоменклатура.Код КАК Код,
    		  |	ВремНоменклатура.Наименование КАК Наименование,
    		  |	ВремНоменклатура.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
    		  |	ВремНоменклатура.Номенклатура.Описание КАК Описание,

    Saldorian, 29 Мая 2017

    Комментарии (4)
  5. PHP / Говнокод #23068

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    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;
         }
     }

    scph77008, 25 Мая 2017

    Комментарии (7)
  6. PHP / Говнокод #23051

    0

    1. 1
    https://web.archive.org/web/20070125181458/http://2ch.ru/s/src/1158095011998.gif

    j123123, 21 Мая 2017

    Комментарии (0)
  7. PHP / Говнокод #23011

    −2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    (is_null($roomCache)) ? 0 : $roomCache->getTotalRooms();
    
    if (is_null($roomCache)) {
        ($roomCache)) ? 0 : $roomCache->getTotalRooms(); 
    }

    Описания не будет, т.к. описать сие не могу.

    Zalex, 11 Мая 2017

    Комментарии (2)
  8. PHP / Говнокод #23010

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    $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, гет запросы не передавались, пришлось делать парсер гета))))

    Gameizeazy, 11 Мая 2017

    Комментарии (12)
  9. PHP / Говнокод #21077

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    //Функция возвращает упорядоченную строку значений параметров 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. Зацените ))

    maxyc, 02 Сентября 2016

    Комментарии (8)
  10. PHP / Говнокод #21031

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    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

    Kilimangaro, 29 Августа 2016

    Комментарии (12)