1. Список говнокодов пользователя sectus

    Всего: 10

  2. PHP / Говнокод #8740

    +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
    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
    function &_static($name = null, $value = null, $unsetVal = false) {
      static $data = array();
      $null = null;
      if (is_array($name)) {
        $data = $name;
        return $null;
      }
      $state = 0;
      $args = array($name, $value, $unsetVal);
      while (count($args)) {
        $arg = array_shift($args);
        switch ($state) {
          case 0:
            if ($arg === null) {
              $state = 8;
            }
            elseif ($arg !== null) {
              $state = 1;
            }
            else {
              throw new \InvalidArgumentException();
            }
            break;
    
          case 1:
            if ($arg === null) {
              $state = 5;
            }
            elseif ($arg !== null) {
              $state = 2;
            }
            else {
              throw new \InvalidArgumentException();
            }
            break;
    
          case 2:
            if ($arg === true) {
              $data[$name] = $value; // $name, $value, true - overwrite saved value and return reference on it.
              return $data[$name];
            }
            elseif ($arg === false) {
              if (!array_key_exists($name, $data)) {
                $data[$name] = $value;
              }
              return $data[$name]; // $name, $value, false - save value if not exist, return reference on stored value.
            }
            else {
              throw new \InvalidArgumentException();
            }
    
          case 5:
            if ($arg === false) {
              if (!array_key_exists($name, $data)) {
                $data[$name] = $value; // $name, null, false, - initialize var if not exist, return reference on stored value.
              }
              return $data[$name];
            }
            elseif ($arg === true) {
              $data[$name] = $value; // $name, $value, true - overwrite saved value and return reference on it.
              return $data[$name]; // $name, null, true - overwrite saved value and return reference on it.
            }
            else {
              throw new \InvalidArgumentException();
            }
            break;
    
          case 8:
            if ($arg === null) {
              continue;
            }
            if ($arg === true) {
              $data = array(); // null, null, true - unset all
              break 2;
            }
            elseif ($arg === false) {
              return $data; // null, null, false - return all
            }
            else {
              throw new \InvalidArgumentException();
            }
    
          default:
            throw new \RuntimeException('Unknown state.');
        }
      }
      return $null;
    }

    Как сделать глобальные переменные своими руками?
    Как сделать ветвление когда под рукой не оказалось if, зато есть while и switch?

    sectus, 05 Декабря 2011

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

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    } catch (PDOException $e)
                {
                print_r($e->__toString());
                die();
                }

    sectus, 23 Ноября 2011

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

    +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
    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
    <?php
    function import_var($name,$source,$type,$maxlen=0) {
    	$retarr=array();
    	if(is_array($name)) { // если нужно обработать массив с именами
    		foreach($name as $v) {
    			$retarr[$v] = import_var($v,$source,$type,$maxlen);
    			// рекурсивно запускаем себя же
    		}
    	if(sizeof($retarr)>0) return $retarr; // возвращаем массив
    	}
    	// если нужно обработать одну переменную
    	switch($source) {
    		case 'G':
    			if (isset($_GET[$name])) {
    				$var=$_GET[$name];  // из GET
    			}
    		break;
    		case 'P':
    			if (isset($_POST[$name])) {
    				$var=$_POST[$name];  // из POST
    			}
    		break;
    		case 'C':
    			if (isset($_COOKIE[$name])) {
    				$var=$_COOKIE[$name];  // из Cookie
    			}
    		break;
    	}
    
    	if(!isset($var)) return false; // если переменная существует
    
    	if(is_array($var)) return false; // и если это не массив...
    
    	if(get_magic_quotes_gpc()) $var = stripslashes($var);
    	// убираем лишние бэкслэши
    
    	if(empty($var)) return false; // если переменная пуста
    
    	if ($maxlen>0) $var = substr($var,0,$maxlen); //обрубаем лишнее
    
    	switch($type) { // теперь обрабатываем в соответствии с типом
    		case 'INT' : // число integer
    			return is_integer($var) ? $var : intval($var);
    		break;
    		case 'NUM' : // число integer или float
    			return is_numeric($var) ? $var : false;
    		break;
    		case 'HTML' : // текст, в котором могут содержаться тэги
    			return trim(htmlspecialchars($var));
    		break;
    		case 'SQL' : // строка, которая попадет в SQL-запрос
    			return mysql_real_escape_string(htmlspecialchars($var));
    		break;
    		case 'MAIL'	: // email-адрес
    			return preg_match('/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{2,4}$/',$var) ? $var : false;
    		break;
    		case 'ALPHA' : // только буквенные символы
    			return preg_match("/^[а-яА-ЯёЁa-zA-Z]+$/",$var) ? $var : false;
    		break;
    		case 'ALPHANUM' : // числовые и буквенные символы
    			return preg_match("/^[а-яА-ЯёЁa-zA-Z0-9]+$/",$var) ? $var : false;
    		break;
    		case 'MD5' : // md5-хэш
    			return preg_match("/^[a-fA-F0-9]{32}+$/",$var) ? $var : false;
    		break;
    		case 'SHA1' : // sha1-хэш
    			return preg_match("/^[a-fA-F0-9]{40}+$/",$var) ? $var : false;
    		break;
    		case 'BOOL': // булева величина
    			return ($var=="1" || $var=="true" || $var=="on") ? true : false;
    		break;
    	}
    }
    ?>

    http://raz0r.name/releases/funkciya-dlya-obrabotki-vxodyashhix-dannyx/

    sectus, 09 Сентября 2011

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

    +167

    1. 1
    2. 2
    if ($val != (int) $val) 
        throw new Exception('нецелое число');

    Сознаюсь в содеянном. Был не в себе.

    sectus, 02 Сентября 2011

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

    +172

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    //Взятые из разных файлов варианты обращений к файлу конфигураций характеризуют о гибкости подхода к разработке приложения
    require_once '../../../config.php';
    require_once("../config.php");
    require_once("../../../../config.php");
    require_once(dirname(dirname(__FILE__)) . '/config.php');
    require('../config.php');
    require_once(dirname(__FILE__) . '/../../config.php');
    require_once(dirname(dirname(dirname(dirname(__FILE__)))) . '/config.php'); //included from messagelib (how to fix?)

    Предлагаю обратить внимание на http://moodle.org/ -- это Система Управления Обучением.

    Продукт поражает своей архитектурой. Предлагаю взглянуть одним глазком.

    sectus, 28 Марта 2011

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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    function get_current_screen() {
    	global $current_screen;
    
    	if ( !isset($current_screen) )
    		return null;
    
    	return $current_screen;
    }

    Да и вообще, что это за мода использовать такое количество глобальных переменных как использовано в WP?

    sectus, 25 Февраля 2011

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

    +164

    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
    function maybe_unserialize( $original ) {
    	if ( is_serialized( $original ) ) // don't attempt to unserialize data that wasn't serialized going in
    		return @unserialize( $original );
    	return $original;
    }
    
    function maybe_serialize( $data ) {
    	if ( is_array( $data ) || is_object( $data ) )
    		return serialize( $data );
    
    	if ( is_serialized( $data ) )
    		return serialize( $data );
    
    	return $data;
    }

    Мне нравится подход, есть в этом что-то занятное... : )

    WP

    sectus, 25 Февраля 2011

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

    +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
    <?php
    echo "<table border=\"1\">";
    echo "<tr><td>" .$_SERVER['argv'] ."</td><td>argv</td></tr>";
    echo "<tr><td>" .$_SERVER['argc'] ."</td><td>argc</td></tr>";
    echo "<tr><td>" .$_SERVER['GATEWAY_INTERFACE'] ."</td><td>GATEWAY_INTERFACE</td></tr>";
    echo "<tr><td>" .$_SERVER['SERVER_ADDR'] ."</td><td>SERVER_ADDR</td></tr>";
    echo "<tr><td>" .$_SERVER['SERVER_NAME'] ."</td><td>SERVER_NAME</td></tr>";
    echo "<tr><td>" .$_SERVER['SERVER_SOFTWARE'] ."</td><td>SERVER_SOFTWARE</td></tr>";
    echo "<tr><td>" .$_SERVER['SERVER_PROTOCOL'] ."</td><td>SERVER_PROTOCOL</td></tr>";
    echo "<tr><td>" .$_SERVER['REQUEST_METHOD'] ."</td><td>REQUEST_METHOD</td></tr>";
    echo "<tr><td>" .$_SERVER['REQUEST_TIME'] ."</td><td>REQUEST_TIME</td></tr>";
    echo "<tr><td>" .$_SERVER['QUERY_STRING'] ."</td><td>QUERY_STRING</td></tr>";
    echo "<tr><td>" .$_SERVER['DOCUMENT_ROOT'] ."</td><td>DOCUMENT_ROOT</td></tr>";
    echo "<tr><td>" .$_SERVER['HTTP_ACCEPT'] ."</td><td>HTTP_ACCEPT</td></tr>";
    echo "<tr><td>" .$_SERVER['HTTP_ACCEPT_CHARSET'] ."</td><td>HTTP_ACCEPT_CHARSET</td></tr>";
    echo "<tr><td>" .$_SERVER['HTTP_ACCEPT_ENCODING'] ."</td><td>HTTP_ACCEPT_ENCODING</td></tr>";
    echo "<tr><td>" .$_SERVER['HTTP_ACCEPT_LANGUAGE'] ."</td><td>HTTP_ACCEPT_LANGUAGE</td></tr>";
    echo "<tr><td>" .$_SERVER['HTTP_CONNECTION'] ."</td><td>HTTP_CONNECTION</td></tr>";
    echo "<tr><td>" .$_SERVER['HTTP_HOST'] ."</td><td>HTTP_HOST</td></tr>";
    echo "<tr><td>" .$_SERVER['HTTP_REFERER'] ."</td><td>HTTP_REFERER</td></tr>";
    echo "<tr><td>" .$_SERVER['HTTP_USER_AGENT'] ."</td><td>HTTP_USER_AGENT</td></tr>";
    echo "<tr><td>" .$_SERVER['HTTPS'] ."</td><td>HTTPS</td></tr>";
    echo "<tr><td>" .$_SERVER['REMOTE_ADDR'] ."</td><td>REMOTE_ADDR</td></tr>";
    echo "<tr><td>" .$_SERVER['REMOTE_HOST'] ."</td><td>REMOTE_HOST</td></tr>";
    echo "<tr><td>" .$_SERVER['REMOTE_PORT'] ."</td><td>REMOTE_PORT</td></tr>";
    echo "<tr><td>" .$_SERVER['SCRIPT_FILENAME'] ."</td><td>SCRIPT_FILENAME</td></tr>";
    echo "<tr><td>" .$_SERVER['SERVER_ADMIN'] ."</td><td>SERVER_ADMIN</td></tr>";
    echo "<tr><td>" .$_SERVER['SERVER_PORT'] ."</td><td>SERVER_PORT</td></tr>";
    echo "<tr><td>" .$_SERVER['SERVER_SIGNATURE'] ."</td><td>SERVER_SIGNATURE</td></tr>";
    echo "<tr><td>" .$_SERVER['PATH_TRANSLATED'] ."</td><td>PATH_TRANSLATED</td></tr>";
    echo "<tr><td>" .$_SERVER['SCRIPT_NAME'] ."</td><td>SCRIPT_NAME</td></tr>";
    echo "<tr><td>" .$_SERVER['REQUEST_URI'] ."</td><td>REQUEST_URI</td></tr>";
    echo "<tr><td>" .$_SERVER['PHP_AUTH_DIGEST'] ."</td><td>PHP_AUTH_DIGEST</td></tr>";
    echo "<tr><td>" .$_SERVER['PHP_AUTH_USER'] ."</td><td>PHP_AUTH_USER</td></tr>";
    echo "<tr><td>" .$_SERVER['PHP_AUTH_PW'] ."</td><td>PHP_AUTH_PW</td></tr>";
    echo "<tr><td>" .$_SERVER['AUTH_TYPE'] ."</td><td>AUTH_TYPE</td></tr>";
    echo "</table>"
    ?>

    http://www.php.net/manual/en/reserved.variables.server.php#91080

    Много полезного написано в комментариях в мануале PHP, но есть там и полный бред.

    sectus, 09 Декабря 2010

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

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    //Global definitions
    //Joomla framework path definitions
    $parts = explode( DS, JPATH_BASE );
    
    //Defines
    define( 'JPATH_ROOT',			implode( DS, $parts ) );

    Joomla! 1.5.21
    Файл: includes/defines.php

    sectus, 11 Октября 2010

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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    // credits. To remove, see configuration file
    $img2 = imagecreatetruecolor($width, $height + ($show_credits ? 12 : 0));
    $foreground = imagecolorallocate($img2, $foreground_color[0], $foreground_color[1], $foreground_color[2]);
    $background = imagecolorallocate($img2, $background_color[0], $background_color[1], $background_color[2]);
    imagefilledrectangle($img2, 0, 0, $width - 1, $height - 1, $background);
    imagefilledrectangle($img2, 0, $height, $width - 1, $height + 12, $foreground);
    $credits = empty($credits) ? $_SERVER['HTTP_HOST'] : $credits;
    imagestring($img2, 2, $width / 2 - imagefontwidth(2) * strlen($credits) / 2, $height - 2, $credits, $background);

    Чтобы не показывать credits надо нарисовать их за границей изображения.
    http://www.captcha.ru/kcaptcha/

    sectus, 09 Августа 2010

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