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

    +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
    // Функция подключения файлов шаблонов -----------------------------------------------------------------
        function tpl_include($filepath, $title = '', $content = '') {
    
            global $lang, $lang_array;
            $tpl_body = str_replace("\n", '', file_get_contents($filepath));
            $tpl_body = preg_replace('#\{loop (.*?)\}(.*?)\{\/loop\}#i', "\nEOL;\nforeach (\\1 as \$var=>\$val) echo <<<EOL\n\\2\nEOL;\necho <<<EOL\n", $tpl_body);
            $tpl_body = preg_replace('#\{const (.*?)\}#i', "\nEOL;\necho \\1;\necho <<<EOL\n", $tpl_body);
            $to_eval = "echo <<<EOL\n".$tpl_body."\nEOL;\n";
            eval($to_eval);
    
        }
        // -----------------------------------------------------------------------------------------------------

    По следам http://govnokod.ru/5658.
    Шаблонизатор этот жив и кочует из проекта в проект.
    Можно ссылаться на переменные из массива $lang, где хранится локализация и на $title и $content. Вот так - {$title}.
    Можно ссылаться на любые константы. Например, {const ROOT_PATH}.
    Можно делать цикл {loop $array}{/loop}, где внутри доступны переменные {$var} и {$val}.
    Полностью избавляет от шорт-тегов, которые скоро уже и уберут из похапе.
    Работает лишь чуть медленнее include с шорт-тегами (0.8 против 1.2 на 10к прогонов) и, разумеется, быстрее Смарти.
    При необходимости в каком-то проекте в чем-то еще - можно легко добавить.
    В общем - изящное вонючее решение.

    7ion, 23 Июня 2011

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

    +157

    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
    // редиректим адреса без слеша на такие же со слешем
    $uri = $_SERVER['REQUEST_URI'];
    $is_file = false;
    if (	(substr_count($uri,".php")>0) or (substr_count($uri,".html")>0)		) {
    	$is_file = true;
    }
    
    if ($is_file == false) {
    	$len_uri = strlen($uri);
    	// находим последнее вхождение слеша
    	$reverst_str = strrev($uri);
    	//die($reverst_str);
    	$last_slash = strpos($reverst_str,"/");
    	
    	//die($last_slash);
    	if  ($last_slash!==0) {
    		
    		$uri .="/";
    		$status = "301 Found";
    		//header("Status: ".$status);
    		header('HTTP/1.1 301 Moved Permanently');
    		header("Location: http://www.thermostudio.ru"."$uri");
    		exit();
    
    	}
    }

    встретилось в проекте одном жаль автор не подписался, увековечить бы...

    nislova, 23 Июня 2011

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

    +154

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    function getDateFromTime($dataTime){
      $strDate = date('d-m-Y', $dataTime);
      $arrDate = explode('-', $strDate);
    
      return mktime(0, 0, 0, $arrDate[1], $arrDate[0], $arrDate[2]);
    }

    руки-жопа-голова%)

    warider, 23 Июня 2011

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

    +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
    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
    $arrParams = array();
                    $arrParams['table'] = array();
                    $arrParams['limit'] = 20;
                    
                    $arrParams['table']['id'] = 'cmt_summary';
                    $arrParams['table']['class'] = 'comments';
                    $arrParams['table']['rows_id'] = 'cmt_{{comment_id}}';
                    
                    $arrParams['table']['columns'] = array();
                    
                    $arrParams['table']['columns']['comment_id'] = array();
                    $arrParams['table']['columns']['comment_id']['name'] = 'Comment ID';
                    $arrParams['table']['columns']['comment_id']['class'] = 'a';
                    $arrParams['table']['columns']['comment_id']['sort'] = true;
                    $arrParams['table']['columns']['comment_id']['search'] = array('type'=>'int');
                    $arrParams['table']['columns']['comment_id']['row'] = $sRowOutput;
                    
                    $arrParams['table']['columns']['user_name'] = array();
                    $arrParams['table']['columns']['user_name']['name'] = 'Poster Username';
                    $arrParams['table']['columns']['user_name']['class'] = 'a';
                    $arrParams['table']['columns']['user_name']['sort'] = true;
                    $arrParams['table']['columns']['user_name']['search'] = array('type'=>'string');
                    $arrParams['table']['columns']['user_name']['row'] = $sRowOutput;
                    
                    $arrParams['table']['columns']['email'] = array();
                    $arrParams['table']['columns']['email']['name'] = 'Poster Email';
                    $arrParams['table']['columns']['email']['class'] = 'a';
                    $arrParams['table']['columns']['email']['sort'] = true;
                    $arrParams['table']['columns']['email']['search'] = array('type'=>'string');
                    $arrParams['table']['columns']['email']['row'] = $sRowOutput;

    Прошло уже почти 3 месяца как я сижу на проекте, а он не перестаёт меня удивлять :)

    Глядя на эти строки думается что-то подобное было в головах у кодеров:
    - Зачем юзать объекты, в массивы всё нормально ложится и они легче.
    - По фиг что массивы не подхватывает ни одна IDE, Notepad++ всё ещё бесплатный, а большего в PHP и не надо.
    - Зачем XML и XSD? Зачем это усложнение? Ну и что Ext4Yii хороший пример того как можно это сделать? Нам не нужны слабые духом программисты! :)

    kovel, 22 Июня 2011

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

    +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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    // Это у них такой конфиг:
    
    //--------------------------------------------------------------------------------------
    // Определение дирректорий сервера
    	$siteDir = '';
     	$DIR = array(
    	'root' => $_SERVER['DOCUMENT_ROOT'].$siteDir,
    	);
    	$DIR['HOST'] = 'http://'.$_SERVER['HTTP_HOST'];
    	$DIR['media'] = $DIR['root'].'/media/';
    	$DIR['theme'] = $DIR['root'].'/themes/';
    	$DIR['lib'] = $DIR['root'].'/lib/';
    	$DIR['script'] = $DIR['root'].'/scripts/script.';
    
    
    // А это у них такая мвц 
    // при error_reporting(E_ALL) - таааакая знатная жопа
    
    //---------------------------------------------------------------//
    /* Организация простейшего MVC							 		 */
    //---------------------------------------------------------------//
    
    	//Загружаем модель для формированния данных
    	if(file_exists($DIR['script'].$Page.'.php'))
    		require_once($DIR['script'].$Page.'.php');	
    				
    	//Загрузка шаблона для отоброжения данных
    		require_once($DIR['theme'].'default.php');

    Ща сижу на собеседование, попросили сделать пару страничек, используя местные порядки.
    Сижу в шоке.

    asdkhkadhfkha22, 22 Июня 2011

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

    +160

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    <?php 
    function antihack(&$var){   
    if(is_array($var)) array_walk($var, 'antihack');  
    else $var = htmlspecialchars(stripslashes(mysql_real_escape_string($var)), ENT_QUOTES, 'UTF-8');   
    }   
    
    foreach(array('_SERVER', '_GET', '_POST', '_COOKIE', '_REQUEST') as $v){   
    if(!empty(${$v})) array_walk(${$v}, 'antihack');  
    }  
    ?>

    http://homephp.ru/phpcode/index.php?system=bild&stat=173445591-534250613&

    jQuery, 21 Июня 2011

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

    +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
    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
    <?php
    else {
        fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00".chr(10));
        $start=time();
        socket_set_timeout($fp,1);
        $st=fread($fp,1);
        $r=socket_get_status($fp);
        $r=$r["unread_bytes"];
        $st.=fread($fp,$r);
        fclose($fp);
        $st=substr($st,5);
        $address=SubStr($st,0,StrPos($st,chr(0)));
        $address=str_replace(chr(0),"|",$address);
        $st=SubStr($st,StrPos($st,chr(0))+1);
        $name=SubStr($st,0,StrPos($st,chr(0)));
        $st=SubStr($st,StrPos($st,chr(0))+1);
        $map=SubStr($st,0,StrPos($st,chr(0)));
        $st=SubStr($st,StrPos($st,chr(0))+1);
        $st=SubStr($st,StrPos($st,chr(0))+1);
        $st=SubStr($st,StrPos($st,chr(0))+1);
        $current=ord(SubStr($st,0,1));
        $max=ord(SubStr($st,1,1));
        }
    if ($_GET['info'] == "map")
    {
    echo "document.write('$map');"; 
    }
    if ($_GET['info'] == "players")
    {
       if ($current == "0")
       {
          echo "document.write('<font color=red>$current</font>/$max');";
       }
       else
       {
          if($current == $max)
          {
             echo "document.write('<font color=00FF00>$current</font>/$max');";
          }else{
             echo "document.write('$current/$max');";
          }
       }
    }
    if ($_GET['info'] == "map-img")
    {
    echo "document.write('<img width=$width border=0 src=http://image.www.gametracker.com/images/maps/160x120/cs/$map.jpg>');";
    }
    if ($_GET['info'] == "source-map")
    {
    echo "document.write('$name');";
    }
    if ($_GET['info'] == "block1")
    {
    echo "document.write('<table border=0><tr><td align=center><marquee>$name</marquee><br><img width=160px height=120px style=background:url(http://www.agrank.com/images/maps/210_150/_offline.jpg); border=0 src=http://image.www.gametracker.com/images/maps/160x120/cs/$map.jpg><br>Map - $map<br>Players - <script language=JavaScript src=http://game-monitoring.tk/ucoz/cs-info.php?ip=$ip&port=$port&info=players></script><br><br><center><input value=$ip:$port readonly=readonly onclick=f2(this); class=f_linput type=text></center></td></tr></table>');";
    }
    if ($_GET['info'] == "block4")
    {
    }
    ?>

    Мало ли того, что гавнокод, так ещё и SubStr. аха

    substr, 21 Июня 2011

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

    +154

    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
     if (isset($_POST['update'])) {
    			 $kolcen=mysql_real_escape_string($_POST['kolcen']);
    			 $tovar=mysql_real_escape_string($_POST['tovar']);
    			 $descr=mysql_real_escape_string($_POST['descr']);
    			 $price=intval($_POST['price']);
    			 $price2=intval($_POST['price2']);
    			 $price3=intval($_POST['price3']);
    			 $id=intval($_POST['update']); 
    			 $zag1=mysql_real_escape_string($_POST['zag1']);
    			 $zag2=mysql_real_escape_string($_POST['zag2']);
    			 $zag3=mysql_real_escape_string($_POST['zag3']);
    			 
    			  switch($kolcen){ 
    		 case '3':$updatetovar = mysql_query ("UPDATE `tovar3` SET `tovar`='$tovar',`descr`='$descr',`price`='$price',`price2`='$price2',`price3`='$price3' WHERE `id`='$id' and `id`='$serv'");
    		 break; 
    		 case '2': $updatetovar = mysql_query ("UPDATE `tovar2` SET `tovar`='$tovar',`descr`='$descr',`price`='$price',`price2`='$price2' WHERE `id`='$id' and `id`='$serv'");
    		 break; 
    		 case '1':$updatetovar = mysql_query ("UPDATE `tovar` SET `tovar`='$tovar',`descr`='$descr',`price`='$price' WHERE `id`='$id' and `pizzaid`='$service'");
    		 break;
    		 case '2images': $updatetovar = mysql_query ("UPDATE `2images` SET `tovar`='$tovar',`descr`='$descr',`price`='$price',`price2`='$price2',`price3`='$price3',`img`='$img',`zag1`='$zag1',`zag2`='$zag2',`zag3`='$zag3' WHERE `id`='$id' and `id`='$serv'");
    		 break;
    		 }
    ?>

    Народ зацените мой код плиз на предмет говнокода, и если чето не так то дайте совет . Этот код для админки добавления товаров. Есть 4 типа категорий, товар с одной ценой, с двумя, с тремя, и товар с двумя картинками. В зависимости от типа категории делаем запрос к базе

    frie, 21 Июня 2011

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

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    protected function readConfig($configPath) {
        $ini = parse_ini_file($configPath);
        foreach ($ini as $key => $value) {
            $config[$key] = $value;
        }
        return $config;
    }

    xarper, 21 Июня 2011

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

    +150

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    $black = "eval|file_get_contents|mysql_(.*?)|include|require|readfile|show_source|highlight|import_request_variables|extract|parse_str|assert|passthru|exec|system|shell_exec|proc_open|fopen|echo";
    
    if(preg_match("#\<\?(.*?)($black)(.*?)\?\>#i", $template)){
    exit ("1");
    break;
    }

    substr, 20 Июня 2011

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