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

    +158

    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
    do
            {
                    do
                            {
                                    if ($myrow_cats["category_id"] == $myrow_oldtovar_1["id"])
                                            {
                                                    printf("<tr><td class='newcat_author'><input name='old_id_cat[]' type='checkbox' value='%s' checked >
                                                    %s</td></tr>",
                                                    $myrow_oldtovar_1["id"],$myrow_oldtovar_1["rubrikatitle"]);
                                            }
                                    else
                                            {
                                                    printf("<tr><td class='newcat_author'><input name='old_id_cat[]' type='checkbox' value='%s' >%s</td></tr>",
                                                    $myrow_oldtovar_1["id"],$myrow_oldtovar_1["rubrikatitle"]);
                                            }       
                            }
                    while($myrow_oldtovar_1 = mysql_fetch_array($result_oldtovar_1));
            }
    while ( $myrow_cats = mysql_fetch_array($result_cats) );

    qbasic, 08 Февраля 2011

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

    +161

    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
    # Добавление пользователя
    	if ($_GET['action'] == "add_user" OR $_POST['action'] == "add_user"){
    		#Проверяем достаточно ли прав на добавление пользователя
    		$pal = 15;
    		if (access_level() < $pal) {
    			echo "Извените, у вас недостаточно прав для данной операции<br>";
    			echo "Ваш уровень ".access_level()." а доступ возможен только с ".$pal."<br>";
    		}
    		else{
    		echo "Уровень доступа - $pal<br>";
    		echo "<form action=\"index.php\" method=\"post\">\n";
    		echo "<select name=type><option value=1>support<option value=2>installer</select><br>";
    		echo "Логин ( первая буква имени + фамилия (en))  <input type=\"text\" name=\"add_username\"><Br> passwd <input type=\"password\" name=\"add_passwd\"><Br>\n access_level <input type=text name=access_level><br>\n";
    		echo "Полное имя (Фамилия, Имя, [Отчество]) <input type=\"text\" name=\"add_full_name\"><br>";
    		echo "Телефон (только 10 цифр, без +7, 8 и т.п.) <input type=\"text\" name=\"add_phone\"><Br>";
    		echo "<input type=\"hidden\" name=\"action\" value=\"add_user\">\n";
    		echo "<input type=\"submit\" name=\"submit\" value=\"add\"><br>\n</form>";
    
    		$add_name=mysql_real_escape_string($_POST['add_username']);
    		$add_pass=mysql_real_escape_string($_POST['add_passwd']);
    		$add_full_name=mysql_real_escape_string($_POST['add_full_name']);
    		$add_phone=mysql_real_escape_string($_POST['add_phone']);
    		$add_access_level=mysql_real_escape_string($_POST['access_level']);
    		$add_pass = md5($add_pass);
    		if($_POST['type'] == "1"){
    			echo $add_name."-".$add_pass."-".$add_access_level."<br>";
    			$sql = 'INSERT INTO `switches`.`creators` (`id`, `name`, `passwd`, `access_level`, `descr`, `creator`, `create_date`) VALUES (\'\', \''.$add_name.'\', \''.$add_pass.'\', \''.$add_access_level.'\', \'\', \''.$_SESSION['user_id'].'\', NOW());';
    			mysql_query($sql,$dbutm);
    			echo "<br>Пользователь добавлен.<Br>";
    		}
    		elseif($_POST['type'] == "2"){
    			$sql = 'INSERT INTO `switches`.`installers` (`id`, `name`, `full_name`, `passwd`, `access_level`, `descr`, `creator`, `create_date`, `phone`) VALUES (\'\', \''.$add_name.'\', \''.$add_full_name.'\', \''.$add_pass.'\', \''.$add_access_level.'\', \'\', \''.$_SESSION['user_id'].'\', NOW(), \''.$add_phone.'\');';
    			mysql_query($sql,$dbutm);
    			echo "<br>Монтажник добавлен.<Br>";
    		}
    	}
    }

    Система биллинга. Начинаю нервничать...

    Gogogo, 08 Февраля 2011

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

    +160

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if ($this->Session->check('_userJustRegistered')) {
    	switch (($tmpJR = $this->Session->read('_userJustRegistered'))) {
    		case 'confirmed':
    			$this->Session->delete('_userJustRegistered');
    			break;
    		case 'not_confirmed_first':
    			$this->Session->write('_userJustRegistered', 'not_confirmed');
    			break;
    	}
    }

    Кусочек многоступенчатой системы по определению статуса юзера.

    quall, 08 Февраля 2011

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

    +161

    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
    // Функция для проверки входнях данных и присвоения входных данных переменым
    // $pattern задаёт регулярное выражение
    // $key ключ в массивах $_POST[] или $_GET[]
    // $firts и $second порядок их просмотра
    // $second не обязательный параметр
    // $die_if_not_match задаёт поведение при не соответствии входных данных регулярному выражению
    // $die_if_not_set задаёт поведение при отсутствии входных данных
    // по умолчания при не совпаденини или отсутствии входных данных функция не возвращаяет ничего
    function inchk($pattern, $key, $first, $second = '' ,$die_if_not_match = '0',$die_if_not_set = '0' ){
    	if(!$pattern){
    		die("Шаблон для inchk() не задан");
    	}elseif(!$key){
    		die("Ключ для inchk() не задан");
    	}
    	elseif(!$first){
    		die("Источник данных inchk() не задан");
    	}elseif($first and $second){
    		if($first == "post" or $first == "p"){
    			if($_POST[$key] != ''){
    				if(preg_match($pattern, $_POST[$key])){
    					return $_POST[$key];
    				}else{
    					if($die_if_not_match){ die('недопустимый формат $_POST[\''.$key.'\']'); }
    				}
    			}elseif($_GET[$key] != ''){
    				if(preg_match($pattern, $_GET[$key])){
    					return $_GET[$key];
    				}else{
    					if($die_if_not_match){ die('недопустимый формат $_GET[\''.$key.'\']'); }
    				}
    			}else{
    				if($die_if_not_set){ die('$_POST[\''.$key.'\'] или $_GET[\''.$key.'\'] не задан'); }
    			}
    		}
    		elseif($first == "get" or $first == "g"){
    			if($_GET[$key] != ''){
    				if(preg_match($pattern, $_GET[$key])){
    					return $_GET[$key];
    				}else{
    					if($die_if_not_match){ die('недопустимый формат $_GET[\''.$key.'\']'); }
    				}
    			}elseif($_POST[$key] != ''){
    				if(preg_match($pattern, $_POST[$key])){
    					return $_POST[$key];
    				}else{
    					if($die_if_not_match){ die('недопустимый формат $_POST[\''.$key.'\']'); }
    				}			
    			}else{
    				if($die_if_not_set){ die('$_GET[\''.$key.'\'] или $_POST[\''.$key.'\'] не задан'); }
    			}
    		}else{
    			die("Источник данных inchk() задан не верно");
    		}
    
    	}elseif($first == "get" or $first == "g"){
    		if($_GET[$key] != ''){
    			if(preg_match($pattern, $_GET[$key])){
    				return $_GET[$key];
    			}else{
    				if($die_if_not_match){ die('недопустимый формат $_GET[\''.$key.'\']'); }
    			}
    		}else{
    			if($die_if_not_set){ die('$_GET[\''.$key.'\'] не задан'); }		
    		}
    	}elseif($first == "post" or $first == "p"){
    		if($_POST[$key] != ''){
    			if(preg_match($pattern, $_POST[$key])){
    				return $_POST[$key];
    			}else{
    				if($die_if_not_match){ die('недопустимый формат $_POST[\''.$key.'\']'); }
    			}
    		}else{
    			if($die_if_not_set){ die('$_POST[\''.$key.'\'] не задан'); }		
    		}
    	}elseif($first){
    		die("Источник данных inchk() задан не верно");
    	}else{
    		die("Источник данных inchk() не задан");
    	}
    
    }

    OH, SH*T! Казалось бы, зачем?

    Gogogo, 08 Февраля 2011

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

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    public function getUserDeliveryList($deliverySettings) {
    	$obligatoryFieldsList = array('type', 'periods', 'freq');
    	foreach ($obligatoryFieldsList as $v){
    		if (!isset($deliverySettings[$v])){
    			return false;
    		} else {
    			$$v = $deliverySettings[$v];
    		}
    	}
    //	...
    }

    Обратил внимание после того, как в тексте метода обнаружил некоторое количество undefined (по мнению IDE) переменных.

    quall, 08 Февраля 2011

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

    +165

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    if ($arResult["CurrentStep"] == 1)
    	include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step1.php");
    elseif ($arResult["CurrentStep"] == 2)
    	include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step2.php");
    elseif ($arResult["CurrentStep"] == 3)
    	include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step3.php");
    elseif ($arResult["CurrentStep"] == 4)
    	include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step4.php");
    elseif ($arResult["CurrentStep"] == 5)
    	include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step5.php");
    elseif ($arResult["CurrentStep"] >= 6)
    	include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/step6.php");

    Из проекта на битриксе.

    hdkeeper, 08 Февраля 2011

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

    +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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    function price($cost)
    {
       if($cost > 0)
       {
          $tmp = explode('.', $cost);
          $cost = $tmp[0];
    
          if($cost >= 1000 && $cost <= 9999)
          {
             $cost = substr($cost, 0, 1)." ".substr($cost, 1);
          }
          elseif($cost >= 10000 && $cost <= 99999)
          {
             $cost = substr($cost, 0, 2)." ".substr($cost, 2);
          }
          elseif($cost >= 100000 && $cost <= 999999)
          {
             $cost = substr($cost, 0, 3)." ".substr($cost, 3);
          }
          $cost .= ' руб.';
       }
       else $cost = '';
    
       return $cost;
    }

    Вывод цены в форматированном виде) Ну да, зачем использовать автоформат по локализации, лучше поговнокодить)

    greevex, 08 Февраля 2011

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

    +161

    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
    <?php
    
    //////////....................................
    
    	static function Request($module="__global",$action='__global',$route=null){
    		if(!$route && !empty(self::$route)) $route=self::$route;
            else $route=self::setRoute(APP_ModuleContext::getContext());
            $action=strtolower($action);
    		$module=strtolower($module);
    
    		$ro=array();
            if(!empty($route['allow'][$module])){
    			$ro=$route['allow'][$module];
                $dis=!empty($route['disallow'][$module])?$route['disallow'][$module]:array();
    			if(!empty($dis) && $dis['__global']===true) return new throw APP_Exceptions_PluginBox("Плагины для модуля '$module' отключены");
    			 
    			 if(empty($ro['__global'])) $ro['__global']=array();
    			 if(empty($ro[$action])) $ro[$action]=array();
    			 $ro=array_merge($ro['__global'],$ro[$action]);
                 if(!empty($ro)){
    				 $ro=array_unique($ro);
                     if(!empty($dis)){
    					 if(empty($dis['__global'])) $dis['__global']=array();
    					 if(empty($dis[$action])) $dis[$action]=array();
    					 $dis=array_merge($dis['__global'],$dis[$action]);
    					 if(!empty($dis)){
                            $dis=array_unique($dis);
    						$ro=array_diff($ro,$dis);
    					 }
    				 }
    				 if(!empty($ro)){
                        $res=array();
    		 	        foreach($ro as $plugin){
                            $res[$plugin]=self::getContents($plugin);
    			        }
    			        return $res;
    				 }else return new throw APP_Exceptions_PluginBox("Все плагины были отключены для '$module - $action'");
    			 }else return new throw APP_Exceptions_PluginBox("Нет плагинов для запроса '$module - $action'");
    		}
    		
    		return false;
    	}
    
    /////////////..........................................
    ?>

    Роутеры роутят

    Zho, 07 Февраля 2011

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

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    $arTime = localtime();
    //формируем ядро номера заказа, которое будем подцеплять к разным префиксам
    
    $orderNumberCore = str_pad($arTime[4]+1, 2, "0", STR_PAD_LEFT).str_pad($arTime[3], 2, "0", STR_PAD_LEFT).str_pad($arTime[2], 2, "0", STR_PAD_LEFT).str_pad($arTime[1], 2, "0", STR_PAD_LEFT).str_pad($arTime[0], 2, "0", STR_PAD_LEFT);

    Формируется номер заказав интернет-магазине из даты/времени. Но при этом не учитывается год.

    $orderNumberCore -- это дата в формате dmhis.

    kost, 07 Февраля 2011

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

    +163

    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
    <?
    class Thread {
    <...>
    	function Thread($proc_id) {
    		$this->db=new ezSQL_mssql(s_login, s_password, s_db_name_threads, s_host);
    		$this->proc_id=$proc_id;
    		$this->timeout=500;
    		$this->last_busy=0;
    		$this->notactive_num=0;
    		$query="INSERT INTO threads(proc_id, last_beat) VALUES('".$this->proc_id."','".(time()+60)."');";
    		$this->db->query($query);
    	}
    	static function Create($url,$proc_id) {
    		$t = new Thread($proc_id);
    		
    		//### execute thread
    		//NB!!!
    		//BE CAREFUL WITH LOG PATHS, IF YOU MISS OR MISSPEL THE PATH, IT IS HARDLY POSSIBLE TO DEBUG
    		//IF YOU MISSPELL THE PATH YOU CAN FACE THE PROBLEM OF THREADS SIMPLY DO NOT START OR DO NOT LOG WITHOUT ANY NOTIFICATION
    		//USE YOUR OWN PATHS FOR PHP, LOGS AND COMMAND LINE COMMANDS AD PARAMETERS FOR YOUR SPECIFIC OS, WINDOWS EXAMPLE IS BELOW
    		//start /B will execute background process in windows, > symbol will store the output of current process into log file
    		//you can call threads from another server via http request etc.
    		pclose(popen("start /B \"$proc_id\" C:\php\php.exe D:\wwwroot\\newimport\elko\import_ignitor_thread.php > D:\globalimport\logs\\".$proc_id.".txt $proc_id","r"));		
    		
    		//give some time to start the thread
    		Sleeper(1000);
    		return $t;
    	}
    	
    	//check is Thread active or not
    	//check active, busy, last beat etc.
    	//you can put here your own business logic how thread should be checked for statused etc.
    	function isActive () {
        if($this->state==3){
    			return false;
    		}elseif ($this->last_busy==1){
    			return true;
    		}
    		$cur_time=time();
    		if($cur_time>$this->last_beat){
    			$result=$this->db->get_var("SELECT last_beat FROM threads WHERE proc_id=".$this->proc_id);
    			$this->state=$this->db->get_var("SELECT state FROM threads WHERE proc_id=".$this->proc_id);
    			if($cur_time<$result){
    				return true;
    			}
    		}else{
    			return true;
    		}
    		return true;
    	}
    	
    	//check is Thread is busy or not, in order to give a new task/job
    	//it is similat to the previous procedure
    	function isBusy() {
    		//$this->tell("ping"); - this could be implemented in the future
    		$cur_time=time();
    		if($cur_time>$this->last_beat or $this->last_busy==0){
    			$result=$this->db->get_var("SELECT busy FROM threads WHERE proc_id=".$this->proc_id);
    			$this->last_busy=$result;
    			if($result==1){
    				return true;
    			}else{
    				return false;
    			}
    		}else{
    			return false;
    		}
    	}
    	
    	//tells a command to the thread
    	function tell($thought, $params = NULL) {
    		$param=base64_encode(serialize($params));
    		$query="INSERT INTO cmd(proc_id, cmd, param) VALUES('".$this->proc_id."','".$thought."','".$param."');";
    		$this->db->query($query);
    	}
    }

    'многопоточность'

    xXx_totalwar, 07 Февраля 2011

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