"PHP" / Говнокод #27422 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
<?php

function syoma_verify_spam($comment_post_ID) {
    // NOTE: На telegram этот метод не вызывается

    $content = trim($_POST['comment']);
    if (preg_match('#<a href=#', $content) && !preg_match('#\[code#', $content)) {
        die('Ня, пока.');
    }
    $content = strip_tags(apply_filters('gk_content', $content));
    $content = strtr($content, array(
        'A' => 'А',
        'a' => 'а',
        'B' => 'В',
        'E' => 'Е',
        'e' => 'е',
        '3' => 'З',
        'K' => 'К',
        'k' => 'к',
        'M' => 'М',
        'H' => 'Н',
        'O' => 'О',
        'o' => 'о',
        'P' => 'Р',
        'p' => 'р',
        'C' => 'С',
        'c' => 'с',
        'T' => 'Т',
        'Y' => 'У',
        'y' => 'у',
        'X' => 'Х',
        'x' => 'х',
        'b' => 'ь',
    ));
    $content = mb_strtolower($content);
    if (preg_match('#русня|хуйло|ватник|ватный|пидораш|пидорах#', $content)) {
        die('Рус-ня, пока.');
    }
}

Угадайте, почему фильтрация <a href не в конце функции?

3_dar 3_dar, (Updated )

Комментарии (9, +9)

"PHP" / Говнокод #27390 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  100. 100
class MediaWiki {
// Поля, другие методы

private function performRequest() {
		global $wgTitle;

		$request = $this->context->getRequest();
		$requestTitle = $title = $this->context->getTitle();
		$output = $this->context->getOutput();
		$user = $this->context->getUser();

		if ( $request->getVal( 'printable' ) === 'yes' ) {
			$output->setPrintable();
		}

		$this->getHookRunner()->onBeforeInitialize( $title, null, $output, $user, $request, $this );

		// Invalid titles. T23776: The interwikis must redirect even if the page name is empty.
		if ( $title === null || ( $title->getDBkey() == '' && !$title->isExternal() )
			|| $title->isSpecial( 'Badtitle' )
		) {
			$this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
			try {
				$this->parseTitle();
			} catch ( MalformedTitleException $ex ) {
				throw new BadTitleError( $ex );
			}
			throw new BadTitleError();
		}

                // Check user's permissions to read this page.
		// We have to check here to catch special pages etc.
		// We will check again in Article::view().
		$permissionStatus = PermissionStatus::newEmpty();
		if ( !$this->context->getAuthority()->authorizeRead( 'read', $title, $permissionStatus ) ) {
			// T34276: allowing the skin to generate output with $wgTitle or
			// $this->context->title set to the input title would allow anonymous users to
			// determine whether a page exists, potentially leaking private data. In fact, the
			// curid and oldid request  parameters would allow page titles to be enumerated even
			// when they are not guessable. So we reset the title to Special:Badtitle before the
			// permissions error is displayed.

			// The skin mostly uses $this->context->getTitle() these days, but some extensions
			// still use $wgTitle.
			$badTitle = SpecialPage::getTitleFor( 'Badtitle' );
			$this->context->setTitle( $badTitle );
			$wgTitle = $badTitle;

			throw new PermissionsError( 'read', $permissionStatus );
		}

                // Еще какая-то логика для хандлинга редиректов по заголовкам страниц
}
// ...
}

// ...

class MessageCache implements LoggerAwareInterface {
// ...
public function parse( $text, $title = null, $linestart = true,
		$interface = false, $language = null
	) {
		global $wgTitle;

		if ( $this->mInParser ) {
			return htmlspecialchars( $text );
		}

		$parser = $this->getParser();
		$popts = $this->getParserOptions();
		$popts->setInterfaceMessage( $interface );

		if ( is_string( $language ) ) {
			$language = $this->langFactory->getLanguage( $language );
		}
		$popts->setTargetLanguage( $language );

		if ( !$title || !$title instanceof Title ) {
			$logger = LoggerFactory::getInstance( 'GlobalTitleFail' );
			$logger->info(
				__METHOD__ . ' called with no title set.',
				[ 'exception' => new Exception ]
			);
			$title = $wgTitle;
		}
		// Sometimes $wgTitle isn't set either...
		if ( !$title ) {
			# It's not uncommon having a null $wgTitle in scripts. See r80898
			# Create a ghost title in such case
			$title = Title::makeTitle( NS_SPECIAL, 'Badtitle/title not set in ' . __METHOD__ );
		}

		$this->mInParser = true;
		$res = $parser->parse( $text, $title, $popts, $linestart );
		$this->mInParser = false;

		return $res;
	} // ...
}

Зачем в методах класса вообще использовать глобальные изменяемые состояния, если это нарушает принцип инкапсуляции (для обеспечения чего и была введена абстракция класса в языки)? И сидишь гадаешь, при вызове какого метода у какого объекта у тебя слетела верстка, контент и пр. Это усложняет написание безопасных расширений для системы.

JaneBurt JaneBurt, (Updated )

Комментарии (11, +11)

"PHP" / Говнокод #27358 Ссылка на оригинал

0

  1. 1
  2. 2
https://thestreetjournal.org/2021/04/chinese-authorities-seize-7221-human-penises-on-cargo-ship-from-nigeria/
7221 камерунских шоколадных зайцев пострадало.

PenisDealer PenisDealer, (Updated )

Комментарии (22, +22)

"PHP" / Говнокод #27337 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
public function addMoney($name, $amount, $type)
	{
		$checkExist = $this->checkUserMoney($name);
		$checkExist = ($checkExist != '<b>(Ico)</b> <h11 style=\"color: red\">Произошла ошибка!</h11> <br/>') ? true : false;
		$name_uuid = $this->genUUID($name);
		
		if ($this->version == '1.12.2' AND $this->plugin != 'iconomy')
		{
			if ($checkExist)
			{
				if ($type == 'add')
				{
					$queryText = ($this->plugin == 'economylite') ? "UPDATE `economyliteplayers` SET `balance` = `balance` + '$amount' WHERE `uuid` = '$name_uuid' AND `currency` = 'economylite:coin'"
																  : "UPDATE `{$this->table}` SET `money` = `money` + '$amount' WHERE `player_name` = '$name'";
				} else
				{
					$queryText = ($this->plugin == 'economylite') ? "UPDATE `economyliteplayers` SET `balance` = '$amount' WHERE `uuid` = '$name_uuid' AND `currency` = 'economylite:coin'"
														          : "UPDATE `{$this->table}` SET `money` = '$amount' WHERE `player_name` = '$name'";
				}
			} else
			{
					$queryText = ($this->plugin == 'economylite') ? "INSERT INTO `economyliteplayers` (`uuid`, `balance`, `currency`) VALUES ('$name_uuid', '$amount', 'economylite:coin')"									  
																  : "INSERT INTO `{$this->table}` (`player_uuid`, `player_name`, `money`, `sync_complete`, `last_seen`) VALUES ('$name_uuid', '$name', '$amount', 'true', '0')";
			}
		} else 
		{
			if ($checkExist)
			{
				$queryText = ($type == 'add') ? "UPDATE `{$this->table}` SET `balance` = `balance` + $amount WHERE `username` = '$name'"
											  : "UPDATE `{$this->table}` SET `balance` = $amount WHERE `username` = '$name'";
			} else
			{
				$queryText = "INSERT INTO `{$this->table}` (`username`, `balance`) VALUES ('$name', $amount)";
			}
		}
		echo $queryText;
		$data = siteQuery($queryText, 'query', $this->mysqli);
		$text = ($data != NULL) ? "<b>(Ico)</b> <h11 style=\"color: green\">Игроку $name успешно начисленно: $amount эмеральдов!</h11> <br/>" 
								: '<b>(Ico)</b> <h11 style="color: red">Произошла ошибка!</h11> <br/>';
		
		return $text;
		
	}
public function checkUserMoney($name)
	{
		$name_uuid = $this->genUUID($name);
		
		if ($this->version == '1.12.2' AND $this->plugin != 'iconomy')
		{
			$queryText = ($this->plugin == 'economylite') ? "SELECT `balance` FROM `economyliteplayers` WHERE `uuid` = '{$name_uuid}' AND `currency` = 'economylite:coin'"
														  : "SELECT `money` as 'balance' FROM `{$this->table}` WHERE `player_name` = '{$name}'";
		} else 
		{
			$queryText = "SELECT `balance` FROM `{$this->table}` WHERE `username` = '{$name}'";
		}
		
		$data = siteQuery($queryText, 'assoc', $this->mysqli);
		$text = ($data != NULL) ? "<b>(Ico)</b> <h11 style=\"color: green\">Балланс игрока $name: {$data['balance']} эмеральдов!</h11> <br/>" 
								: '<b>(Ico)</b> <h11 style=\"color: red\">Произошла ошибка!</h11> <br/>';
		
		return $text;
	}

Этот говнокод кодил наш сотрудник https://vk.com/valiev_off, здесь вы можете наблюдать мастерские SQL запросы под тернарным соусом

Dev1lroot Dev1lroot, (Updated )

Комментарии (73, +73)

"PHP" / Говнокод #27332 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
// если пользователь авторизован
if($user->get('id')) { 
    $_SESSION['city-select'] = '';
    // если пользователь авторизован - определяем город
    $profile = $user->getOne('Profile');
    if ($profile) {
        $city = $profile->get('city');
    }
    
    // проходим все города и ищем подходящий
    $cities = $modx->runSnippet('pdoResources', array(
        'parents' => 205,
        'limit'   => 0,
        'includeTVs' => 'setCityForHome',
        'where'   => '{ "template" : "25" }',
        'tpl'     => '@CODE:{"id":"[[+id]]","city":"[[+tv.setCityForHome]]"}',
        'outputSeparator' => ','
    ));
    $redirectTo = 0;
    if($cities) { 
        $cities = $modx->fromJson('['.$cities.']');
        foreach( $cities as $c ) {
            if($c['city'] == $city) {
                $redirectTo = $c['id'];
                break;
            }
        }    
    }
} else {
    // если не авторизован - проверяем сессию
    
    $session = $_SESSION['city-select'];
    
    // если сессия пустая - проверяем, на какой странице находимся
    // если страница города и пустая сессия - записываем в сессию
    if($modx->resource->get('template') == 25) {
        $_SESSION['city-select'] = $modx->resource->get('pagetitle');
        $city = $modx->resource->get('pagetitle');
    } else {
        $city = (!empty($_SESSION['city-select']))? $_SESSION['city-select'] : $city;
    }
}

Сумрачный гений, сука. Строки 11-28 особенно примечательны.

CatScratchFever CatScratchFever, (Updated )

Комментарии (10, +10)

"PHP" / Говнокод #27323 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
function isRegEx($test)
{
    $notThisLine = error_get_last();
    $notThisLine = isset($notThisLine['line']) ? $notThisLine['line'] + 0 : 0;
    while (($lines = rand(1, 100)) == $notThisLine);
    eval(
        str_repeat("\n", $lines) . 
        '@preg_match(\'' . addslashes($test) . '\', \'\');'
    );
    $check = error_get_last();
    $check = isset($check['line']) ? $check['line'] + 0 : 0;
    return $check == $notThisLine;
}

"Test if a regular expression is a valid one in PHP"
https://stackoverflow.com/a/15143479/6702274

kezzyhko kezzyhko, (Updated )

Комментарии (9, +9)

"PHP" / Говнокод #27320 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
$query = "
	SELECT
		`version`, `mods`, `plugins`, `keywords`
	WHERE
		`version` = {$version}";
foreach (explode(",", $mods) as $mod)
{
	$query += "AND `mods` LIKE '{$mod}' OR `mods` LIKE '{$mod},%' OR `mods` LIKE '%,{$mod},%' OR `mods` LIKE '%,{$mod}'";
}
foreach (explode(",", $plugins) as $plugin)
{
	$query += "AND `plugins` LIKE '{$plugin}' OR `plugins` LIKE '{$plugin},%' OR `plugins` LIKE '%,{$plugin},%' OR `plugins` LIKE '%,{$plugin}'";
}

Говнокод чтобы прогнать массив с id записей внутри varchar по массиву с id записей из переменной (id,id,id)

Dev1lroot Dev1lroot, (Updated )

Комментарии (10, +10)

"PHP" / Говнокод #27269 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); 

if($_POST['SESS_PARAM'] && $_POST['SESS_PARAM'] !='' && $_POST['SESS_PARAM_VALUE'] && $_POST['SESS_PARAM_VALUE'] !=''){

	$_SESSION[$_POST['SESS_PARAM']] = $_POST['SESS_PARAM_VALUE'];
	echo 'ok';
}else{
	echo 'error';
}

утверждают что сайт им писали лучшие из лучших

BroadcastAddress BroadcastAddress, (Updated )

Комментарии (143, +143)

"PHP" / Говнокод #27235 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
$txtdd = $DI_Date;
$DI_Date = explode(".",$DI_Date);

$DI_YY = $DI_Date[2];
$DI_LYY = $DI_YY;
$DI_NYY = $DI_YY;
$MY = $DI_Date[1].".".$DI_Date[2];

$DI_MM = $DI_Date[1]-1;
$DI_LMM = $DI_MM-1;
if ($DI_LMM<0) $DI_LMM = 11;
$DI_NMM = $DI_MM+1;
if ($DI_NMM>11) $DI_NMM = 0;

if ($DI_MM==0) $DI_LYY = $DI_YY-1;
if ($DI_MM==11) $DI_NYY = $DI_YY+1;

$DI_DD = 1;

$lastM = $DI_MM;
$yy = $DI_YY;
if ($lastM<1) {
	$lastM = 12+$lastM;
	$yy = $yy - 1;
}
$lastM = $DI_DD.".".$lastM.".".$yy;

$nextM = $DI_MM+2;
$yy = $DI_YY;
if ($nextM>12) {
	$nextM = $nextM-12;
	$yy = $yy + 1;
}
$nextM = $DI_DD.".".$nextM.".".$yy;

$lastY = $DI_DD.".".($DI_MM+1).".".($DI_YY-1);
$nextY = $DI_DD.".".($DI_MM+1).".".($DI_YY+1);

kib0rg kib0rg, (Updated )

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