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

    +150

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Не так давно одно местное парнокопытное (и гомосексуальное также) существо с пеной у рта нахваливало 
    среду разработки php devel studio. Ради интереса скачал  - что ж?
    Обычный, ничем не примечательный интерпретатор (на дельфях кстати, писаный), ничем не лучше автоита. 
    Скомпилированный бинарник имеет фантастические размеры - около ~3 мб,  при выполнении требует runtime php5ts.dll.
    Понмится мне, Конь с присущим ему пафосом предлагал кодить на ней чуть ли не драйверы.
    
    Так в чем же фишка, товарищи, возможно я что-то проглядел? По мне - полнейшая лажа.

    Конь php-бляди соснули.

    brutushafens, 19 Мая 2014

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

    +156

    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
    $this->_html .= '<script type="text/javascript">id_language = ' . intval($this->defaultLanguage) . ';</script>';
    		if ($ObjAdvancedTopMenuClass)
    			$haveDepend = AdvancedTopMenuClass::menuHaveDepend($ObjAdvancedTopMenuClass->id);
    		$this->_html .= '<form action="' . $this->base_config_url . '" method="post" id="menuform_' . $this->name . '" name="menuform_' . $this->name . '" method="post" enctype="multipart/form-data" class="width3">
        <div id="blocMenuForm">
            ' . ($ObjAdvancedTopMenuClass ? '<input type="hidden" name="id_menu" value="' . intval($ObjAdvancedTopMenuClass->id) . '" /><br /><a href="' . $this->base_config_url . '"><img src="../img/admin/arrow2.gif" />' . $this->l('Back') . '</a><br class="clear" /><br />' : '');
    		$this->_html .= '<label>' . $this->l('Tab type') . '</label>
           <div class="margin-form"><select name="type" id="type_menu">
              <option value="">' . $this->l('Choose') . '</option>
              <option value="1" ' . ($ObjAdvancedTopMenuClass && $ObjAdvancedTopMenuClass->type == 1 ? 'selected="selected"' : '') . '>' . $this->l('CMS') . '</option>
              <option value="2" ' . ($ObjAdvancedTopMenuClass && $ObjAdvancedTopMenuClass->type == 2 ? 'selected="selected"' : '') . '>' . $this->l('Link') . '</option>
              <option value="3" ' . ($ObjAdvancedTopMenuClass && $ObjAdvancedTopMenuClass->type == 3 ? 'selected="selected"' : '') . '>' . $this->l('Category') . '</option>
               <option value="4" ' . ($ObjAdvancedTopMenuClass && $ObjAdvancedTopMenuClass->type == 4 ? 'selected="selected"' : '') . '>' . $this->l('Manufacturer') . '</option>
              <option value="5" ' . ($ObjAdvancedTopMenuClass && $ObjAdvancedTopMenuClass->type == 5 ? 'selected="selected"' : '') . '>' . $this->l('Supplier') . '</option>
              <option value="6" ' . ($ObjAdvancedTopMenuClass && $ObjAdvancedTopMenuClass->type == 6 ? 'selected="selected"' : '') . '>' . $this->l('Search') . '</option>
              <option value="7" ' . ($ObjAdvancedTopMenuClass && $ObjAdvancedTopMenuClass->type == 7 ? 'selected="selected"' : '') . '>' . $this->l('Only image or icon') . '</option>
           </select></div>';
    		$this->_html .= '<script type="text/javascript">$("#type_menu").change(function() {showMenuType($(this),"menu");});</script>';
    		$this->_html .= '<label>' . $this->l('Menu link not clickable') . '</label>
              <div class="margin-form">
              <input type="checkbox" name="clickable" id="menu_clickable" value="1" ' . ($ObjAdvancedTopMenuClass && $ObjAdvancedTopMenuClass->link [$this->defaultLanguage] == '#' ? ' checked=checked' : '') . '  />
              <small>' . $this->l('Add a # in the link field. Do not remove.') . '</small>
              </div>';
    		$this->_html .= '<script type="text/javascript">$("#menu_clickable").click(function() {setUnclickable($(this));});</script>';
    		if ($ObjAdvancedTopMenuClass && in_array($ObjAdvancedTopMenuClass->type, $this->rebuildable_type)) {
    			$this->_html .= '<label>' . $this->l('Rebuild tree') . '</label>
              <div class="margin-form"><label class="t" for="rebuild_on"><img src="../img/admin/enabled.gif" alt="' . $this->l('Yes') . '" title="' . $this->l('Yes') . '" /></label>
                <input type="radio" name="rebuild" id="rebuild_on" value="1" />
                <label class="t" for="rebuild_on"> ' . $this->l('Yes') . '</label>
                <label class="t" for="rebuild_off"><img src="../img/admin/disabled.gif" alt="' . $this->l('No') . '" title="' . $this->l('No') . '" style="margin-left: 10px;" /></label>
                <input type="radio" name="rebuild" id="rebuild_off" value="0" checked=checked />
                <label class="t" for="rebuild_off"> ' . $this->l('No') . '</label><br />' . $this->l('Caution, this may change the appearance of your menu !') . '</div>';
    		}

    А Smarty стоит рядышком и тихо плачет вместе с программистом.
    Модуль для PrestaShop стоимостью 50 евро.

    in8finity, 19 Мая 2014

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

    +166

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    //делаем отступ
    echo ' 
    <table border="0" width="100%" cellspacing="0" cellpadding="10">
           <tr>
            <td align="center">&nbsp;<br>&nbsp;</td>
           </tr>
          </table>
    ';

    таким образом делаются отступы ... facepalm

    govnokoder2, 19 Мая 2014

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

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    $hostInfo = Yii::app()->getRequest()->getHostInfo();
        	$hostInfo = str_replace('http://', "", $hostInfo);
        	$hostInfo = str_replace('www', "", $hostInfo);
        	$hostInfo = str_replace('sitename', "", $hostInfo);
        	$hostInfo = str_replace('.', "", $hostInfo);
        	$hostInfo = preg_replace('/ru|local/', '', $hostInfo);

    Человек до меня получал поддомен третьего уровня

    TRANE73, 19 Мая 2014

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

    +156

    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
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    public function catalog_add() {
            
            if (Route::is_post()) {
                $this->L->view = false;
                $errors = array();
    
                $Company = new Model_Companies();
                $Company->fillFromArray($_POST['companies']);
    
                if (!$Company['cats_id']) {
                    $errors[] = 'Не выбрана категория';
                }
                if (!preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $Company['startdate'])) {
                    $errors[] = 'Неверный формат начала периода размещения';
                }
                if (!preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $Company['enddate'])) {
                    $errors[] = 'Неверный формат конца периода размещения';
                }
                if (!preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $Company['position_start'])) {
                    $errors[] = 'Неверный формат начала действия приоритетной позиции';
                }
                if (!preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $Company['position_end'])) {
                    $errors[] = 'Неверный формат конца действия приоритетной позиции';
                }
    
                //проверка на существования графика работы
                $noSchedule = true;
                foreach ($_POST['schedule'] as $key => $value) {
                    if (isset($value['work'])) {
                        $noSchedule = false;
                        break;
                    }
                }
    
                if ($noSchedule) {
                    $errors[] = 'Не указано ни одного рабочего дня';
                } else {
                    //проверка рабочего времени
                    foreach ($_POST['schedule'] as $key => $value) {
                        if (isset($value['work'])) {
                            if (!preg_match('/^(2[0-3]|[01][0-9]):[0-5][0-9]$/', $value['start']) || !preg_match('/^(2[0-3]|[01][0-9]):[0-5][0-9]$/', $value['end'])) {
                                $errors[] = 'Неверный формат времени работы в ' . strtolower(Model_Schedule::$days[$key]);
                            } else {
                                //проверка грамотности, конец больше начала
                                if (strtotime($value['start']) > strtotime($value['end'])) {
                                    $errors[] = 'Конец работы должен быть позже времени начала в ' . strtolower(Model_Schedule::$days[$key]);
                                } else {
                                    //провека обеда
                                    if (isset($value['lunch'])) {
                                        if (!preg_match('/^(2[0-3]|[01][0-9]):[0-5][0-9]$/', $value['lunch_start']) || !preg_match('/^(2[0-3]|[01][0-9]):[0-5][0-9]$/', $value['lunch_end'])) {
                                            $errors[] = 'Неверный формат времени обеда в ' . strtolower(Model_Schedule::$days[$key]);
                                        } else {
                                            //проверка грамотности границ обеда
                                            if (strtotime($value['lunch_start']) > strtotime($value['lunch_end'])) {
                                                $errors[] = 'Конец обеденного перерыва должен быть позже времени начала в ' . strtolower(Model_Schedule::$days[$key]);
                                            } else {
                                                //проверка что обед вмещается в рабочее время
                                                if ($value['lunch_start'] < $value['start'] || $value['lunch_end'] > $value['end']) {
                                                    $errors[] = 'Обед выходит за рамки указанного рабочего времени в ' . strtolower(Model_Schedule::$days[$key]);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
    
                //todo: сделать проверку на занятость приоритетной позиции в выбраной категории в указанный период
    
                if (!count($errors)) {
                    //если нет ошибок то пишем
                    $Company->save();
    
                    foreach ($_POST['schedule'] as $key => $value) {
                        if (isset($value['work'])) {
                            $Schedule = new Model_Schedule();
                            $Schedule->fillFromArray($value);
                            $Schedule['day'] = $key;
                            $Schedule['companies_id'] = $Company['id'];
                            $Schedule->save();
                        }
                    }
                }
    
                echo json_encode($errors);
            }
        }

    проверки, такие проверки

    Serious_Andy, 17 Мая 2014

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

    +152

    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
    foreach ($line as $cell) { 
        if ($first) {
    	echo "<td id='csv_head' class='td_csv_head" . $i . "'>" 
    	. htmlspecialchars($cell) 
    	. '</br><select class="td_csv_modules' . $i . '" onchange="get_submodules($(\'.td_csv_modules' . $i . '\').val(), ' . $i . ')">' 
    	. $blank_select // </select>
    	. '</br><select class="td_csv_fields' . $i . '"><option value=""></option>'
    	. "</td>";
        } else {
    	echo "<td class='td_csv'>" . htmlspecialchars($cell) . "</td>";
        };
        $i++;
    }

    Нашел в коде коллеги. Кода было много, выкладываю самый вкусный. Момент с id и class у select-ов не опечатка. Подобное всречается абсолютно везде.

    ivanstroilov, 16 Мая 2014

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

    +153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    <?php foreach ($category_1['children'] as $category_2) { ?>
            <?php if ($category_2['category_id'] == $category_id) { ?>
            <option value="<?php echo $category_2['category_id']; ?>" selected="selected">      <?php echo $category_2['name']; ?></option>
            <?php } else { ?>
            <option value="<?php echo $category_2['category_id']; ?>">      <?php echo $category_2['name']; ?></option>
            <?php } ?>
            <?php foreach ($category_2['children'] as $category_3) { ?>
            <?php if ($category_3['category_id'] == $category_id) { ?>
            <option value="<?php echo $category_3['category_id']; ?>" selected="selected">            <?php echo $category_3['name']; ?></option>
            <?php } else { ?>
            <option value="<?php echo $category_3['category_id']; ?>">            <?php echo $category_3['name']; ?></option>
            <?php } ?>

    Код вида поиска из известной модификации CMS Opencart - Maxystore.

    bestaimer, 15 Мая 2014

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

    +155

    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
    {php}
        $this->_tpl_vars['image_set'] = array();
        $this->_tpl_vars['json_string'] = "";
    {/php}
    
    {if $pcollection}
        {foreach name=pcollection key=picture_id item=picture from=$pcollection}
            {php}
                array_push($this->_tpl_vars['image_set'], "{$this->_tpl_vars['urlprefix']}/thumb.php?file=" . str_replace("thumbs","original","media/pictures/{$this->_tpl_vars['album']->getPath()}/{$this->_tpl_vars['picture']->getPath()}")."&size=245x143");
            {/php}
        {/foreach}
    {/if}
    
    {php}
        $this->_tpl_vars['json_string'] = json_encode($this->_tpl_vars['image_set']);
    {/php}
    {$json_string}

    получение объекта в smarty, потом пара фокусов, и вуаля, выплевываем json строку

    expert, 15 Мая 2014

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

    +154

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    function c(){
      //Внимание! Далее идёт индусский код! Слабонервных попрошу уда(л|в)иться...
      require ('config.php');
     $included = get_included_files();
      if(!in_array('config.php',$included)){
       Error(404);
       return;
      }
     ...
     ...
    }

    Стиль и коммент оставил оригинальные, видимо ЭТО кому-то из наших уже попадало до меня.
    Далее код - в натуре полный "хадж".

    virtual_cia, 15 Мая 2014

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

    +151

    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
    <?
    						$arPrimary = array();
    						if(!empty($item['IB_ELEMENT']['PROPERTIES']['MANUFACTURER']['VALUE'])){
    							$arPrimary['ПРОИЗВОДИТЕЛЬ'] = $item['IB_ELEMENT']['PROPERTIES']['MANUFACTURER']['VALUE'];
    						}
    						if(!empty($item['IB_ELEMENT']['PROPERTIES']['MATERIAL']['VALUE'])){
    							$arPrimary['ПРОИЗВОДИТЕЛЬ'] = $item['IB_ELEMENT']['PROPERTIES']['MATERIAL']['VALUE'];
    						}
    						
    						if(!empty($arPrimary)):
    							$c = count($arPrimary); $i = 1;
    						?>
    							<ul class="primary">
    								<?foreach($arPrimary as $k => $v):
    									$last = false;
    									if($i == $c){
    										$last = true;
    									}
    								?>
    									<li<?if($last):?> class="last"<?endif;?>>
    										<span class="label"><?=$k?>:</span>
    										<?=$v?>
    									</li>
    								<?
    								$i++;
    								endforeach;?>
    							</ul>
    						<?endif;?>

    Bitrix же!

    TBoolean, 13 Мая 2014

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