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

    −3

    1. 1
    2. 2
    А кто-то на говнокоде искал уязвимости? 
    Или тут настолько всё охуенно написано, что не подкопаться?

    huesto, 23 Января 2017

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

    −5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if (false !== strpos($status['tag'], 'otlozh')) {
        if (!$_POST['otlozh_date']) $err[] = "Нет даты, до которой отложить";
        else {
            $task = new ConnectionTicket($task_id);
            if ($task->setDateFn($_POST['otlozh_date'])) $tag .= " до {$_POST['otlozh_date']}";
        }
    }

    pahhan, 22 Января 2017

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

    0

    1. 1
    <div ...><?php echo 'Blalblabla'; ?></div>

    Можно было бы сказать, что это остатки старого кода, что тут раньше тут была переменная и т.д. Но такое повторяется 9 раз в файле. Неужто всюду забыли сделать правильно?

    gorsash, 22 Января 2017

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

    +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
    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
    namespace app\controllers;
    
    
    use app\models\auth\OrdersModel;
    use yii\helpers\Url;
    use yii\data\Pagination;
    use yii\base\Configurable;
    use yii\web\Linkable;
    use yii\base\Object;
    use Yii;
    require(__DIR__ . '/../models/OrdersModel.php');
    
    class OrdersController extends \app\common\controllers\CabinetBaseController
    {
    	
    	
        public function actionIndex()
        {
            $obj = new OrdersModel();
            $orders = $obj->get_orders(\Yii::$app->user->identity->id);
    
            if(isset($_GET) && !empty($_GET))
                $this->ProductsToCart($_GET['products_data']);
    
          for($i=0;$i<count($orders);$i++){
              if($orders[$i]["status"]==0 )
                  $orders[$i]["status"]="<p style='color: #197b30'>Новый</p>";
              else if($orders[$i]["status"]==1)
                  $orders[$i]["status"]="<p style='color: #000'>Принят</p>";
              else if($orders[$i]["status"]==2)
                  $orders[$i]["status"]="<p style='color: #197b30'>Выполнен</p>";
              else if($orders[$i]["status"]==3)
                  $orders[$i]["status"]="<p style='color: #fe0000'>Удален</p>";
              else if($orders[$i]["status"]==4)
                  $orders[$i]["status"]="<p style='color: #000'>Скопмлектован</p>";
              else if($orders[$i]["status"]==5)
                  $orders[$i]["status"]="<p style='color: #000'>На доставке</p>";
              else if($orders[$i]["status"]==6)
                  $orders[$i]["status"]="<p style='color: #fe0000'>Отменен</p>";
              else if($orders[$i]["status"]==7)
                  $orders[$i]["status"]= "<p style='color: #cec818'>Ожидание оплаты</p>";
    
              $orders[$i]['date']=substr($orders[$i]['date'], 0, strrpos($orders[$i]['date'], ' '));
              $orders[$i]['products_info']=$obj->get_orders_products($orders[$i]['id']);
    
          }
            for($j=0;$j<count($orders);$j++)
                for($k=0;$k<count($orders[$j]['products_info'])-1;$k++)
                    $orders[$j]['products_info'][$k]['product_name'].=", ";
    
    
            $active_order=$obj->GetActiveOrder(Yii::$app->user->identity->id);
    
    
    
            return $this->render('index', [
                "orders" => $orders,
                "active" =>$active_order
            ]);
    
    
        }
    
        public  function ProductsToCart($products){
    
            $time=getdate();
            $orders= new OrdersModel();
            $data['products']=$products;
    
            $data['user_name']=Yii::$app->user->identity->name;
            $data['user_email']=Yii::$app->user->identity->email;
            $data['time']=$time['year'].'-'.$time['mon'].'-'.$time['mday'].' '.$time['hours'].':'.$time['minutes'].':'.$time['seconds'];
            $orders->products_to_cart($data);
            header("Location:". Yii::$app->homeUrl."/cart");
    
        }
    
    }

    На реальном проекте

    C3-PO, 21 Января 2017

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

    +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
    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
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    <?php 
    /* 
    * 
    * @author (Макс) Freedom <by_freedom@bk.ru> 
    * ICQ 286-0-666 
    * 
    */ 
    class func { 
    // низ сайта 
    public static function foot() { 
    global $dbs, $lang, $start_time; 
    echo '<footer class="footer"> 
    <div class="container"> 
    <p class="text-muted"><center>(c) by Freedom</center></p> 
    <center><script type="text/javascript" src="http://mobtop.ru/c/105071.js"></script><noscript><a href="http://mobtop.ru/in/105071"><img src="http://mobtop.ru/105071.gif" alt="MobTop.Ru - рейтинг мобильных сайтов"/></a></noscript> <a href="http://statok.net/go/10579"><img src="http://statok.net/imageOther/10579" alt="Statok.net" /></a></center></div></footer></div><script type="text/javascript"> (function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter31930361 = new Ya.Metrika({ id:31930361, clickmap:true, trackLinks:true, accurateTrackBounce:true }); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks"); </script> <noscript><div><img src="https://mc.yandex.ru/watch/31930361" style="position:absolute; left:-9999px;" alt="" /></div></noscript>'; 
    ?> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    <script>window.jQuery || document.write('<script src="/design/assets/js/vendor/jquery.min.js"><\/script>')</script> 
    <script src="/design/js/bootstrap.min.js"></script> 
    <script src="/design/assets/js/ie10-viewport-bug-workaround.js"></script></body></html> 
    <? 
    } 
    // верх сайта 
    public static function head($title){ 
    global $dbs, $ip, $user, $_COOKIE, $lang, $aut; 
    echo '<!DOCTYPE html> 
    <html lang="ru"> 
      <head> 
        <meta charset="utf-8"> 
        <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
        <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <meta name="description" content="Бесплатный хостинг файлов без ожидания скачивания и капчи. Превью изображений, медиафайлов, документов и архивов. wapfile.su — быстрый и удобный файлообменник."><meta name="keywords" content="файлообменник, бесплатный файлообменник, хороший файлообменник, быстрый файлообменник, хостинг файлов, файловый хостинг, хранение файлов, обмен файлами, хостинг картинок, фотохостинг, видеохостинг, аудиохостинг, файловый обменник, разместить файл, разместить фото, просмотр файлов, превью">
    <title>'.$title.'</title>'; 
    ?> 
    <link href="/design/css/bootstrap.min.css" rel="stylesheet"> 
    <link href="/design/style.css" rel="stylesheet"> 
    <script src="/design/assets/js/ie8-responsive-file-warning.js"></script> 
    <script src="/design/assets/js/ie-emulation-modes-warning.js"></script> 
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> 
    </head> 
    <body> 
    <nav class="navbar navbar-default"> 
    <div class="container"> 
    <div class="navbar-header"> 
    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 
    <span class="sr-only">Toggle navigation</span> 
    <span class="icon-bar"></span> 
    <span class="icon-bar"></span> 
    <span class="icon-bar"></span> 
    </button> 
    <a class="navbar-brand" href="/">WAPFILE.SU</a> 
    </div> 
    <? 
    echo '<div id="navbar" class="navbar-collapse collapse"> 
    <ul class="nav navbar-nav"> 
    <li><a href="/">'.$lang['home'].'</a></li> 
    <li><a href="/plugin/imp.php">'.$lang['import'].'</a></li> 
    <li><a href="/info/contact.php">'.$lang['contact'].'</a></li> 
    <li><a href="/info/faq.php">'.$lang['info'].'</a></li> 
    <li><a href="/info/stat.php">'.$lang['statistics'].'</a></li> 
    <li><a href="/wapfile.apk">Приложение для Android</a></li>'; 
    if ($aut == true) { 
    echo '<li><a href="/cpanel/"><b>Cpanel</b></a></li>'; 
    } 
    echo '<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown"> Language <b class="caret"></b></a> 
    <ul class="dropdown-menu"> 
    <li><a href="/plugin/language.php?lang=ru">Русский</a></li> 
    <li><a href="/plugin/language.php?lang=en">English</a></li> 
    <li><a href="/plugin/language.php?lang=ua">Українська</a></li> 
    </ul></li> 
    </ul> 
    </div><!--/.navbar-collapse --> 
    </div> 
    </nav>'; 
    } 
    // подсветка ссылок 
    public static function url_replace($url) { 
    if (!isset($url[4])) { 
    $target = (strpos($url[1], homeurl) === false) ? ' target="_blank" rel="nofollow"' : '';
    $title = (mb_strlen($url[3]) > 80) ? mb_substr($url[3], 0, 70, 'UTF-8').'...' : $url[3]; 
    return '<a href="'.$url[1].'"'.$target.'>'.check(rawurldecode(html_entity_decode($title, ENT_QUOTES, 'utf-8'))).'</a>'; 
    } else { 
    $target = (strpos($url[4], homeurl) === false) ? ' target="_blank" rel="nofollow"' : '';
    $title = (mb_strlen($url[4]) > 80) ? mb_substr($url[4], 0, 70, 'UTF-8').'...' : $url[4]; 
    return '<a href="'.$url[4].'"'.$target.'>'.check(rawurldecode(html_entity_decode($title, ENT_QUOTES, 'utf-8'))).'</a>'; 
    } 
    } 
    public static function links($msg){ 
    $msg = preg_replace_callback('~\[url=((https?|ftp)://.+?)\](.+?)\[/url\]|((https?|ftp)://[0-9a-zа-яё/.;?=\(\)\_\-&%#]+)~ui', 'url_replace', $msg); 
    return $msg; 
    } 
    // Вывод текста 
    public static function out($var){ 
    return nl2br(self::links($var)); 
    } 
    } //  и еще десяток похожего

    - а ты умеешь в ооп?

    eskrano, 19 Января 2017

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

    −1

    1. 1
    http://gvforum.ru

    "gv" - это сокращение для "говно"?

    guestinho, 19 Января 2017

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

    +4

    1. 1
    https://pp.vk.me/c837229/v837229013/20b6f/_LHj3Bf3UVs.jpg

    eskrano, 19 Января 2017

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

    +1

    1. 1
    https://myrusakov.ru/php-finderror.html

    Итак, подведём итог. Основным инструментом поиска ошибок является оператор echo (либо функция print_r(), если переменная является массивом). Всё, что нужно, это просто смотреть на необходимую переменную на каждом шаге алгоритма.
    ------
    7700 курс стоит

    barop, 18 Января 2017

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

    −1

    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
    // Ищет путь до $needle в многомерном массиве $haystack
        // Если задано поле $field_name, то проверяется не только значение, но и совпадение поля в котором находится значение
        // Структура результата зависит от параметра tree:
        // False - default, возвращается массив содержащий список корней массива, в которых встречается значение
        // True - вовращается в виде дерева (исходной структуры), только с нодами которые содержат искомое значение
        function recursive_array_search_all($needle, $haystack, $field_name = TRUE, $params = ['tree' => false])
        {
            foreach($haystack as $current_key => $value)
            {
                $last = (($needle == $value) && (($field_name == $current_key) || ($field_name === TRUE)));
    
                if($last OR (is_array($value) && ($path = recursive_array_search_all($needle, $value, $field_name, [])))) {
                    if ($last) {
                        $returned[$current_key] = $value;
                    } else {
                        $returned[$current_key] = $path;
                    }
                }
            }
    
            if(isset($params['tree']) && ($params['tree'] != true)) {
                foreach($returned as $root => $arr) {
                    $roots[] = $root;
                }
                $returned = $roots;
            }
    
            if (!empty($returned))
            {
                return $returned;
            }
    
            return false;
        }

    akselmj, 18 Января 2017

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

    −1

    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
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    class EncoderCommand extends CConsoleCommand {
    	public function actionStart()
    	{
    		if (file_exists($this->getLockFile())) { throw new RuntimeException('Encoder already started!'); return false; }
    		if (!touch($this->getLockFile())) { throw new RuntimeException('Can not create lock file '.$this->getLockFile()); return false; }
    		Yii::setPathOfAlias('webroot', dirname(dirname(dirname(__FILE__))));
    		if (file_exists($this->getLogFile()))
    			unlink($this->getLogFile());
    		foreach (EncodingQueue::model()->findAll('phase != :lastPhase', array(':lastPhase' => EncodingQueue::ENCODED)) as $task) {
    			// exec('php '.Yii::getPathOfAlias('application').'/yiic.php encoder process '.$task->id, $output);
    			// echo implode(PHP_EOL, $output);
    			$this->process($task);
    		}
    		unlink($this->getLockFile());
    	}
    	public function process(EncodingQueue $task) {
    		
    		// ещё не скачано
    		if ($task->phase < EncodingQueue::DOWNLOADED) {
    			$task->phase = EncodingQueue::DOWNLOADING;
    			$task->save();
    			if (!empty($task->remote_source_file) && !file_exists(Yii::getPathOfAlias('webroot').$task->source_file)) {
    				echo 'Downloading to '.$task->source_file.' ...'.PHP_EOL;
    				file_put_contents($this->getLogFile(), null);
    				
    				$cmd = 'curl -o '.escapeshellarg(Yii::getPathOfAlias('webroot').$task->source_file).' '.escapeshellarg($task->remote_source_file).' 1>'.$this->getLogFile().' 2>&1  &';
    				exec($cmd, $output);
    				echo implode(PHP_EOL, $output);
    				$i = 0;
    				while (true) {
    					$c = file_get_contents($this->getLogFile());
    					$f = explode("\r", $c);
    					if (count($f) > 0) {
    						$s = trim($f[count($f) - 1]);
    						if (substr($c, -1) == "\n")
    							break;
    						sscanf($s, '%3d', $progress);
    						$task->progress = $progress;
    						$task->save();
    						echo '...'.$progress.'%'.PHP_EOL;
    					}
    					sleep(1);
    				}
    			}
    			$task->progress = -1;
    			$task->phase = EncodingQueue::DOWNLOADED;
    			$task->save();
    		}
    		// ещё не перекодировано
    		if ($task->phase < EncodingQueue::ENCODED) {
    			$task->phase = EncodingQueue::ENCODING;
    			$task->save();
    			if (!empty($task->ffmpeg_options)) {
    				echo 'Encoding to '.$task->target_file.' ...'.PHP_EOL;
    				file_put_contents($this->getLogFile(), null);
    				$cmd = 'ffmpeg -y -i '.escapeshellarg(Yii::getPathOfAlias('webroot').$task->source_file).' '.$task->ffmpeg_options.' '.escapeshellarg(Yii::getPathOfAlias('webroot').$task->target_file).' 1>'.$this->getLogFile().' 2>&1 &';
    				exec($cmd, $output);
    				echo implode(PHP_EOL, $output);
    				$i = 0;
    				while (true) {
    					$c = file_get_contents($this->getLogFile());
    					if (!empty($c)) {
    						preg_match('~Duration: (.*?), start:~', $c, $matches);
    						$duration = $this->timeToSeconds($matches[1]);
    						preg_match_all('~time=(.*?) bitrate~', $c, $matches); 
    						$last = array_pop($matches);
    						if (is_array($last)) $last = array_pop($last);
    						$curTime = $this->timeToSeconds($last);
    						$progress = 100*$curTime/$duration;
    						$task->progress = $progress;
    						$task->save();
    						echo '...'.$progress.'%'.PHP_EOL;
    						if (preg_match('~video:[0-9]+kB audio:[0-9]+kB~u', $c))
    							break;
    					}
    					sleep(1);
    				}
    			} else {
    				echo 'Copying '.Yii::getPathOfAlias('webroot').$task->source_file.' to '.Yii::getPathOfAlias('webroot').$task->target_file.' ...'.PHP_EOL;
    				copy(Yii::getPathOfAlias('webroot').$task->source_file, Yii::getPathOfAlias('webroot').$task->target_file);
    			}
    			$task->progress = -1;
    			$task->phase = EncodingQueue::ENCODED;
    			$task->save();
    		}
    	}
    	public function getLockFile($postfix = null) { return Yii::getPathOfAlias('application').'/runtime/encoder'.($postfix != null ? '.'.$postfix : null).'.lock'; }
    	public function getLogFile($postfix = null) { return Yii::getPathOfAlias('application').'/runtime/encoder'.($postfix != null ? '.'.$postfix : null).'.log'; }
    	/**
    	 * Translates string like "00:04:12.17" into "252.17"
    	 */
    	protected function timeToSeconds($rawDuration) {
    		$ar = array_reverse(explode(':', $rawDuration));
    		$duration = floatval($ar[0]);
    		if (!empty($ar[1])) $duration += intval($ar[1]) * 60;
    		if (!empty($ar[2])) $duration += intval($ar[2]) * 60 * 60;
    		return $duration;
    	}
    }

    Еще один "огрызок" из прошлого. Перекодировщик видео с ютуба, работал в несколько потоков и вполне стабильно держал небольшую нагрузку.

    dacave, 18 Января 2017

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