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

    +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
    function unpackLoginAndPas($signed,$iv, $dateSend){
        global $crypt, $cryptLast,  $defaultDate, $ivsId, $mysqlBaseName, $mysqlBase;
        //получаем текущую дату. 
        if (isset($dateSend) )
          $date = $dateSend;
        else
          $date = $defaultDate;
    
          $query = "SELECT id FROM ivs WHERE val='$iv';" ;
        $query = $mysqlBase->query($query);// or die (compactResult('error','криворукий программист!'));
        //есть ли такой маркер безопасности?
        if ($query->num_rows)//раз есть, то надо послать за другим маркером. Такой уже не годиться. 
            die (compactResult('error','bad iv marker,pls generate new iv'));
        //запоминаем такой маркер безопасности, и больше под ним не пускаем.
        //получаем id автоинкремент
        $myBase = $mysqlBase->query("SHOW TABLE STATUS FROM $mysqlBaseName") or die (compactResult('error','SystemTable not get (')); ;
        $result = false;
        //поиск времени изменения БД.
        $dateSrv = (int)( $date->getTimestamp() / 1000 );
        while($row = $myBase->fetch_assoc()){
          if ($row['Name'] !== "ivs" )
    	continue;
          $ivsId = $row["Auto_increment"];
        }
    
        $userIP = getUserIpAddr();
        $mysqlBase->query("INSERT INTO ivs(val,IP) VALUES('$iv','$userIP')") or die(compactResult('error','криворукий программист!'));
    
        //составляем строку из даты, которая у нас будет ключем. 1 раз в 5 минут она становиться другой.
        $decodeKey = /*формирование строки от даты*/
        $dateLast = $date->add( DateInterval::createFromDateString(' 5 minuts ' ) );
        $decodeKeyLast = /*формирование строки от даты*/
        //var_dump($decodeKey);
        $decodeKey = md5($decodeKey);
        $decodeKeyLast = md5 ( $decodeKeyLast );
        
        mcrypt_generic_init ($crypt,$decodeKey,$iv);
        mcrypt_generic_init ($cryptLast,$decodeKeyLast,$iv);
        //декриптуем
        $encDataLoginAndPass = rtrim (mdecrypt_generic($crypt,$signed));
        $encDataLoginAndPassLast = rtrim (mdecrypt_generic($cryptLast,$signed));
        //если правильный был и ключ(время не истекло) и 
        //var_dump($encDataLoginAndPass);
        $encDataLoginAndPass = json_decode ($encDataLoginAndPass,true)  or ( ($decodeKey = $decodeKeyLast ) and json_decode ($encDataLoginAndPassLast,true) )or die(compactResult('error','Key time out.'));
        //в поле secdata в POST будет лежать массив, декодированный
        mcrypt_generic_init ($crypt,$decodeKey,$iv);
    
        $temp = array_keys($encDataLoginAndPass);
        $encData = array('login'=>$temp[0], 'password'=>end($encDataLoginAndPass));
        $encPost = mdecrypt_generic($crypt, base64_decode( $_POST['secdata'] ) );
        $encData['post'] = json_decode (rtrim($encPost)) or die(compactResult('error','post uncompressed!'));
        //деинит
        mcrypt_generic_deinit ($crypt);
        //раз все прошло успешо, возвращаем массив с логином и паролем, который проверяем дальше. Тут даже использование вместо пароля, его хеша не поможет от хака. будем надеятся на алгоритм шифровки. Хотя есть взять, и знать что тут будет одинаковая информация, то вычислить её по паре перехваченных обращений не составит труда. Надо бы переделать на хеш от логина с паролем. Хотя и это врядли поможет. Надо взять что-то изменяемое. От чего можно будет отталкиваться. Но это надо обдумывать.
        return $encData;
    };

    попытка шифрования в 1-м проекте.
    Человек первый раз писал на php. Оно и видно...

    Dart_Sergius, 17 Апреля 2014

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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if($vOk)
    {
    	if($vOk)
    	{
    	...
    	}
    }

    Дополнительная проверка не повредит.

    any0ne2567, 17 Апреля 2014

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

    +156

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    $html = file_get_contents('http://2ip.ru/'); 
    preg_match_all('#<big id=\"d_clip_button\">(.*?)</big>#', $html, $ip); 
    $ip2 = $ip[1][0]; 
    
    if($pass == $pass2) 
    {$data = file_get_contents("http://$server$domain/$catalog/$files$format?login=$login&pass=$pass&email=$email&name=$name&famil=$famil&skype=$skype&ip=$ip2"); 
    MessageBox("$data", "Ответ с сервера"); 
    }else{ 
    messageDlg("Пароли не совпадают!", mtWarning, MB_OK);}

    Вот такая незамысловатая регистрация на сервере. GET запросом с использованием file_get_contents. Ну и конечно же серверу надо обязательно отправить свой ip.

    any0ne2567, 17 Апреля 2014

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

    +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
    switch ($vs_TmpStr)
    {
    	case "230";
    		$vb_isCompl = true;
    		break;
    	case "11619";
    		$vb_isCalcul = true;
    		break;
    	case "11660";
    		$vb_isSevice = true;
    		break;
    	case "11668";
    		$vb_isCalcul = true;
    		break;
    	case "11670";
    		$vb_isCalcul = true;
    		break;
    	case "11669";
    		$vb_isCalcul = true;
    		break;
    	case "11678";
    		$vb_isSevice = true;
    		break;
    	case "11679";
    		$vb_isSevice = true;
    		break;
    	case "11681";
    		$vb_isSevice = true;
    		break;
    ...
    }

    125-ти строчный switch.

    any0ne2567, 17 Апреля 2014

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

    +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
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    $vs_SourceStr = RETURNCHAR."9003".TABCHAR."0xf8f9fb".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."8014".TABCHAR."0x49372a".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."5005".TABCHAR."0x004389".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."6005".TABCHAR."0x0e4438".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."3005".TABCHAR."0x581e29".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."9006".TABCHAR."0x6d312b".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."1000".TABCHAR."0xccc188".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."7004".TABCHAR."0x999a9f";
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";
    
    		$vs_SourceStr = $vs_SourceStr."9003";
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";
    
    		$vs_SourceStr = $vs_SourceStr."9003".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."8014";
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";
    
    		$vs_SourceStr = $vs_SourceStr."9003".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."8014".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."5005".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."6005".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."3005".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."9006".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."1000".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."7004";
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";
    
    		$vs_SourceStr = $vs_SourceStr."9003".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."8014".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."5005".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."6005".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."3005".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."9006".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."1000".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."7004";
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";
    
    		$vs_SourceStr = $vs_SourceStr."1".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."1".RETURNCHAR;	
    		$vs_SourceStr = $vs_SourceStr."1".RETURNCHAR;	
    		$vs_SourceStr = $vs_SourceStr."2".RETURNCHAR;	
    		$vs_SourceStr = $vs_SourceStr."1".RETURNCHAR;	
    		$vs_SourceStr = $vs_SourceStr."3".RETURNCHAR;	
    		$vs_SourceStr = $vs_SourceStr."1".RETURNCHAR;	
    		$vs_SourceStr = $vs_SourceStr."3".RETURNCHAR;	
    		$vs_SourceStr = $vs_SourceStr."2".RETURNCHAR;	
    		$vs_SourceStr = $vs_SourceStr."0";				
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";
    
    		$vs_SourceStr = $vs_SourceStr."500".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."350".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."280".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."500".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."4165".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."-1".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."-1".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."-1".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."4165".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."4165";
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";
    		
    		$vs_SourceStr = $vs_SourceStr."350".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."230".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."150".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."350".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."500".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."?500".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."1480".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."?200".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."500".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."850";
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";
    		
    		$vs_SourceStr = $vs_SourceStr."120".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."120".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."120".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."120".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."120".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."120".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."500".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."500".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."120".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."500";
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";
    
    		$vs_SourceStr = $vs_SourceStr."".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."11668".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."14634".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."11991".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."11670".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."11669".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."101878".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."101879".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."107384".RETURNCHAR;
    		$vs_SourceStr = $vs_SourceStr."000000";
    		$vs_SourceStr = $vs_SourceStr."<#>EndTOPIC<#>";

    No comments.

    any0ne2567, 17 Апреля 2014

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

    +156

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    <?php
    $fp = fopen('log.php', 'a');
    fwrite($fp, $_GET['Message']." \n");
    fclose($fp);
    ?>
    
    file log.php
    <?PHP header("Content-Type: text/html; charset=CP1251");?>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

    Пишем логи на сервере.

    any0ne2567, 17 Апреля 2014

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

    +131

    1. 1
    Сосево из ширинки, ебля с порога.

    KonardStuard, 16 Апреля 2014

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

    +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
    switch ( count($args) )
    		{
    			case 0:
    				return $obj->$method( );
    			case 1:
    				return $obj->$method( $args[0] );
    			case 2:
    				return $obj->$method( $args[0], $args[1] );
    			case 3:
    				return $obj->$method( $args[0], $args[1], $args[2] );
    			case 4:
    				return $obj->$method( $args[0], $args[1], $args[2], $args[3] );
    			case 5:
    				return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4] );
    			case 6:
    				return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5] );
    			case 7:
    				return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6] );
    			case 8:
    				return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7] );			
    			case 9:
    				return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8] );			
    			case 10:
    				return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9] );			
    			case 11:
    				return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9], $args[10] );			
    			case 12:
    				return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9], $args[10], $args[11]   );			
    		}
    		throw new MWException( __CLASS__.": too many arguments to method called in ".__METHOD__ );

    thekiba, 16 Апреля 2014

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

    +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
    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
    $db = Db::getInstance();
    $result = $db->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'payment_module_settings`;');
    $text = "";
    for($i=2;$i<sizeof($result[0]);$i++)
    {
        if($i == 2)
        {
            $text .= "[general]"."\n";
            $text .= "url = '".$result[0][url]."'"."\n";
        }
        if($i == 3)
        {
            $text .= "[payment]"."\n";
            $text .= "sequritySender = '".$result[0][security_sender]."'"."\n";
        }
        if($i == 4)
        {
            $text .= "transactionChannel = '".$result[0][transaction_Channel]."'"."\n";
        }
        if($i == 5)
        {
            $text .= "transactionMode = '".$result[0][transaction_Mode]."'"."\n";
        }
        if($i == 6)
        {
            $text .= "userLogin = '".$result[0][user_Login]."'"."\n";
        }
        if($i == 7)
        {
            $text .= "userPwd = '".$result[0][user_Pwd]."'"."\n";
        }
        if($i == 8)
        {
            $text .= "paymentType = '".$result[0][payment_Type]."'"."\n";
        }
        if($i == 9)
        {
            $text .= "presentationCurrency = '".$result[0][presentation_Currency]."'"."\n";
        }
        if($i == 10)
        {
            $text .= "[view]"."\n";
            $text .= "src = '".$result[0][src]."'"."\n";
        }
        if($i == 11)
        {
            $text .= "language = '".$result[0][language]."'"."\n";
        }
        if($i == 12)
        {
            $text .= "style = '".$result[0][style]."'"."\n";
        }
       
    }
    
    if($_GET['paymentType'] == 'CC')
    {
      $text .= "brands[] = 'VISA'"."\n";
      $text .= "brands[] = 'MASTER'"."\n";
     
    }
    if($_GET['paymentType'] == 'VA')
    {
      $text .= "brands[] = 'PAYPAL'"."\n";
    }
    
    $text .= "[soap]"."\n";
    $text .= "url = 'http://debugservices.fine-trade.org/PayOnOrderHandling.svc?WSDL'"."\n";
    $text .= "username  = 'extensions'"."\n";
    $text .= "password = 'testExtensions'"."\n";
    $text .= "options[] = false"."\n";
    $text .= "importIfPending = false"."\n";
    
    if (file_exists('LoviitLib/config.ini')) {
        unlink('LoviitLib/config.ini');
    } 
    $myFile = "LoviitLib/testFile.txt";
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh, $text);
    fclose($fh);
    rename("LoviitLib/testFile.txt","LoviitLib/config.ini");

    Преамбула: для конфигурации библиотеки передаётся ассоциативный массив в конструктор. Если передаётся null, то для конфигурации используется файл config.ini с дефолтными настройками, который находится в корне библиотеки.
    Этот код исполняется при каждой инициализации библиотеки (при каждом чекауте).
    Ремарка: после запроса к db результатом является ассоциативный массив.
    И да, это код из модуля для prestashop cms.

    aronsky, 15 Апреля 2014

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

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $hlblock_id = 3;
    		$hlblock = HL\HighloadBlockTable::getById($hlblock_id)->fetch();
    		$entity = HL\HighloadBlockTable::compileEntity($hlblock);
    
    		$main_query = new Entity\Query($entity);
    		$main_query->setSelect(array('*'));
    		$main_query->setFilter(array('=UF_NAME' => $arOLDItem['material']));
    		$result = $main_query->exec();
    		$result = new CDBResult($result);
    		$row = $result->Fetch();

    Bitrix, HIGHLOAD инфоблоки, данная запись равносильна SQL запросу SELECT * FROM %таблица_название_которой_хранится_в_бд_ под_номером_3% WHERE UF_NAME = $arOLDItem['material']

    +зацените супер CamelCase от битрикса

    TBoolean, 15 Апреля 2014

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