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

    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
    // http://www.compiler.su/prodolzhenie-tsikla-i-vykhod-iz-nego.php
    // В PHP выход из вложенного цикла выглядит, на мой взгляд, значительно элегантнее. После «break» указывается количество вложенных циклов, которые должен «покинуть» оператор «break». В приведённом примере, который аналогичен приведённому выше для Java, «break» должен «пересечь» две фигурные скобки «}», чтобы оказаться за пределами двух циклов.
    
    for($i=0; $i < $Imax; ++$i)
    {
       // ...
       for($j=0; $j < $Jmax; ++$j)
       {
          // ...
          if(условие) 
              break 2;
          // ...
       }
       // ...
    }

    Интересно, а почему б нечто подобное не сделать для функций? Ну например есть функция a() которая вызывает функцию b() которая вызывает функцию c(), которая вызывает функцию d(), и например в функции d() чтоб сделать особый return_3, который бы вернул управление на три уровня вниз, сразу в функцию a()? Хотя не, хуйня, надо ведь еще знать, какой там тип возвращается в функцию a() из функции b().
    То ли дело ассемблер. Можно тупо отмотать стек в нужное место

    j123123, 16 Февраля 2018

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

    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
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    <?php
    error_reporting(0);
    ini_set('display_errors', '0');
    mb_internal_encoding('UTF-8');
    header('Access-Control-Allow-Origin: *');
    function str_replace_first($from, $to, $subject){
    $from='/'.preg_quote($from, '/i').'/';
    return preg_replace($from, $to, $subject, 1);
    }
    require_once('morphy/src/common.php');
    $opts=array(
    'storage'=>PHPMORPHY_STORAGE_MEM,
    'predict_by_suffix'=>true, 
    'predict_by_db'=>true,
    'graminfo_as_text'=>true
    );
    $dir='morphy/dicts';
    $lang='ru_RU';
    try{
    $morphy=new phpMorphy($dir, $lang, $opts);
    }catch(phpMorphy_Exception $e){
    die('Error occurred while creating phpMorphy instance: '.PHP_EOL.$e);
    }
    $morphy->getDefaultGrammemsProvider()->excludeGroups('С', 'род');
    $wanal=array();
    $wanal['p']=explode(' : ', file_get_contents('wanal_p.txt'));
    $wanal['s']=explode(' : ', file_get_contents('wanal_s.txt'));
    $wanal['g']=explode(' : ', file_get_contents('wanal_g.txt'));
    shuffle($wanal['p']);
    shuffle($wanal['s']);
    shuffle($wanal['g']);
    $current_wanal=$wanal;
    $string=trim($_GET['q']);
    $modified_comment=$string;
    preg_match_all('/(\w+)/u', str_replace('_', '', $string), $matches);
    $words=$matches[1];
    foreach($words as $word){
    if(mb_strtoupper($word)=='НАХУЙ' || mb_strtoupper($word)=='ХУЙ' || mb_strtoupper($word)=='ТУТ'){
    continue;
    }
    $info=$morphy->getGramInfo(mb_strtoupper($word));
    $type='';
    if(trim($info[0][0]['pos'])=='П'){
    $type='p';
    }
    if(trim($info[0][0]['pos'])=='С'){
    $type='s';
    }
    if(trim($info[0][0]['pos'])=='Г' || trim($info[0][0]['pos'])=='ИНФИНИТИВ'){
    $type='g';
    }
    if($type!=''){
    $replacement=trim($current_wanal[$type][array_rand($wanal[$type])]);
    if($replacement!=''){
    $casted=$morphy->castFormByPattern(mb_strtoupper($replacement), mb_strtoupper($word), null, true);
    if(count($casted)>0){
    $replacement=reset($casted);
    if(md5(mb_substr($word, 0, 1))==md5(mb_strtolower(mb_substr($word, 0, 1)))){
    $replacement=mb_strtolower($replacement);
    } elseif(md5(mb_strtoupper($word))==md5($word)){
    $replacement=mb_strtoupper($replacement);
    } elseif(md5(mb_substr($word, 0, 1))==md5(mb_strtoupper(mb_substr($word, 0, 1)))){
    $replacement=mb_convert_case(mb_strtolower($replacement), MB_CASE_TITLE);
    }
    $modified_comment=str_replace_first($word, $replacement, $modified_comment);
    $base=$morphy->getBaseForm(mb_strtoupper($word));
    if($base){
    $wanal[$type][]=mb_strtoupper($base[0]);
    $wanal[$type]=array_filter(array_unique($wanal[$type]));
    }
    }
    }
    }
    }
    file_put_contents('wanal_p.txt', implode(' : ', $wanal['p']));
    file_put_contents('wanal_s.txt', implode(' : ', $wanal['s']));
    file_put_contents('wanal_g.txt', implode(' : ', $wanal['g']));
    echo $modified_comment;
    ?>

    Какой-то такой модификатор чужих комментариев на основе ещё более ранних комментариев.

    g0_1494089148657, 14 Февраля 2018

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    //@todo наговнокодим-ка сюда весь список, чтобы не лезть в БД
    $langs = array(
                'php' => 'php',
    ....
                'ассемблер' => 'avrasm',
                'ассемблер' => 'avrasm',
    );

    Наговнокодил так, шо даже в IDE не открывал

    https://github.com/wiistriker/govnokod_legacy/blob/master/service/bbcode.php#L666

    inho, 13 Февраля 2018

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

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    if (file_exists(__DIR__ . '/ban.php')) {
        $ban_ips = include __DIR__ . '/ban.php';
        if (isset($_SERVER['REMOTE_ADDR']) && in_array($_SERVER['REMOTE_ADDR'], $ban_ips)) {
            //$log_file = systemConfig::$pathToTemp . '/banned/' . date('Ymd') . '.txt';
            //file_put_contents($log_file, date('H:i:s') . ': ' . $_SERVER['REMOTE_ADDR'] . "\r\n", FILE_APPEND);
            header('HTTP/1.1 500 Internal Server Error');
            exit;
        }
    }

    Vistefan
    Ты как-то писал что у тебя на работе не открывается ГК c 500й ошибкой?
    Вот ответ на твой вопрос.

    inho, 12 Февраля 2018

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

    0

    1. 1
    2. 2
    3. 3
    if (stripos($user->getEmail(), '@mailinator.com') !== false) {
         $validator->setError('text', 'System health check error');
    }

    ААААААААААААААААААААААААААААААААААААААА ЭТО ШЕДЕВР

    https://github.com/wiistriker/govnokod_legacy/blob/9f1b89379a64f87a275f9d932128870a8292fb1e/modules/comments/controllers/commentsPostController.php#L66

    inho, 12 Февраля 2018

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

    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
    <?php
    
    $user_data = array(
        'name' => 'Vasya',
        //'comment' => 'Hello, <p>Some HTML</p>', // GOOD
        'comment' => '<!--<script>', // BAD
    );
    
    ?>
    
    <!DOCTYPE html>
    <html>
        <head></head>
        <body>
            <script>
                var data = <?php echo json_encode($user_data); ?>;
    
                window.onload = function () {
                    document.body.appendChild(document.createTextNode(data.name + " says: " + data.comment));
                };
            </script>
        </body>
    </html>

    https://habrahabr.ru/post/348558/

    Интересная херотень.
    Кто сможет подобрать строку, чтобы выполнить произвольный код?

    3_dar, 12 Февраля 2018

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

    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
    switch ($city) {
    			case $city == 'Москва':
    				$tel['work'] = '+7 (495) www-ww-22';
    				$tel['entire'] = '8 (800) xxx-xx-49';
    				break;
    			case $city == 'Нижний-Новгород':
    				$tel['work'] = '+7 (495) zzz-zz-02';
    				$tel['entire'] = '8 (800) zzz-zz-02';
    				break;
    			case $city == 'Ростов-на-Дону':
    				$tel['work'] = '+7 (495) zzz-zz-03';
    				$tel['entire'] = '8 (800) zzz-zz-03';
    				break;
    			case $city == 'Казань':
    				$tel['work'] = '+7 (495) zzz-zz-04';
    				$tel['entire'] = '8 (800) zzz-zz-04';
    				break;
    			case $city == 'Тюмень':
    				$tel['work'] = '+7 (495) zzz-zz-05';
    				$tel['entire'] = '8 (800) zzz-zz-05';
    				break;

    Мало того, что странное использование case, так это ещё повторяется для 28 городов.
    Одинаковые части номеров заменил на zzz-zz

    Int, 06 Февраля 2018

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

    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
    public static function Exception($message, $info = []) {
    			ob_clean();
    			?>
    			<!-- Пичалька какая-то произошла! Мы в грустяшке и огорчульке. -->
    			<center>
    				<div style="width: 600px; height: 140px; border: 1px #DDDDDD solid;">
    					<img style="width: 134px; margin: 14px; float: left;" src="/images/error-big.png">
    					<div style="display: table-cell; vertical-align: middle; height: 155px;">
    						<h4>
    							<?= $message; ?>
    						</h4>
    					</div>
    				</div>
    			</center>
    			<?
    			exit();
    		}

    Днище-кодинг.

    DAVIDhaker, 02 Февраля 2018

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

    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
    function PrepareGetList(
    		&$arIblockElementFields,
    		&$arJoinProps,
    		&$bOnlyCount,
    		&$bDistinct,
    
    		&$arSelectFields,
    		&$sSelect,
    		&$arAddSelectFields,
    
    		&$arFilter,
    		&$sWhere,
    		&$sSectionWhere,
    		&$arAddWhereFields,
    
    		&$arGroupBy,
    		&$sGroupBy,
    
    		&$arOrder,
    		&$arSqlOrder,
    		&$arAddOrderByFields,
    
    		&$arIBlockFilter,
    		&$arIBlockMultProps,
    		&$arIBlockConvProps,
    		&$arIBlockAllProps,
    		&$arIBlockNumProps,
    		&$arIBlockLongProps
    		)
    	{

    Метод из ядра битрикса

    aat, 01 Февраля 2018

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

    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
    <?php
    ${++${[]}}=([].[])[+![]+![]+![]];$${[]}++;${++${[]}}=${+![]};$${[]}++;
    ++${[].[]};${++${[].[]}}=$${[]};${++${[].[]}}=$${[]};${${[].[]}}++;
    ${${[].[]}}++;${${[].[]}}++;${${[].[]}}++;${${[].[]}}++;
    ${++${[].[]}}=([].[])[+![]+![]];${[].[].[]}=${+![]+![]}.${+![]+![]+![]}.
    ${+![]+![]+![]+![]};$${[]}++;${[].[]}=+![]+![]+![]+![]+![];
    ${${[].[]}+![]+![]}=$${[]};$${[]}++;${${[].[]}+${[].[]}+${[].[]}}=$${[]};
    $${[]}++;$${[]}++;$${[]}++;$${[]}++;$${[]}++;$${[]}++;$${[]}++;
    ${${[].[]}+${[].[]}+![]+![]}=$${[]};$${[]}++;${+![]+![]+![]+![]}=$${[]};
    ${${[].[]}+![]+![]+![]+![]}=$${[]};$${[]}++;${${[].[]}+![]}=$${[]};$${[]}++;
    ${${[].[]}+${[].[]}+![]+![]+![]}=$${[]};${++${[]}}=([].[])[+![]+![]];${[]}++;
    ${++${[]}}=([].[])[+![]+![]+![]];${[]}++;${[]}++;${++${[]}}=${[].[].[]}
    (${[].[]}+${[].[]});${[]}++;${++${[]}}=([].[])[+![]+![]+![]+![]];
    ${++${[]}}=${[].[].[]}(${[].[]}+${[].[]}+${[].[]}+${[].[]}+${[].[]}+${[].[]}
    +![]+![]);${[]}++;${[]}++;${++${[]}}=${+![]+![]+![]};$${[]}++;$${[]}++;
    $${[]}++;$${[]}++;${[]}=+![];${+!![]}=${${[]}++}.${${[]}++}.${${[]}++}.
    ${${[]}++}.${${[]}++}.${${[]}++}.${${[]}++}.${${[]}++}.${${[]}++}.${${[]}++}.
    ${${[]}++}.${${[]}++}.${${[]}++}.${${[]}++}.${${[]}++};${[]}=+![];
    $${[]}=${+![]+![]};$${[]}++;${++${[]}}=${+![]+![]+![]};${++${[]}}=$${[].[]};
    $${[]}++;$${[]}++;$${[]}++;$${[]}++;$${[]}++;$${[]}++;$${[]}++;$${[]}++;
    ${++${[]}}=${${[].[]}+![]};${++${[]}}=${+![]+![]};$${[]}++;$${[]}++;
    ${++${[]}}=${${[].[]}+${[].[]}+${[].[]}};$${[]}++;${[]}=+![];
    ${+![]}=${${[]}++}.${${[]}++}.${${[]}++}.${${[]}++}.${${[]}++}.${${[]}++};
    ${[]}=+![];${+![]}(${+!![]});

    HACTEHbKA, 31 Января 2018

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