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

    +232

    1. 1
    echo "Для разлагинивания почистите куки браузером.<br>";

    Взяли новичка на испытательный срок. При нажатии на кнопку "Выход" наблюдаю данную надпись.

    Говногость, 09 Февраля 2011

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

    +164

    1. 1
    $update = !empty($id) and $id > 0;

    Вопреки ожиданиям автора, выражение $id > 0 вообще никогда не принимается во внимание.
    /* Ознакомьтесь с приоритетом операций */
    Сначала отработает $update = !empty($id)
    потом значение из $update будет сравниваться с $id > 0 и результат сравнения никуда не попадёт.

    Рекомендация: используйте && вместо оператора "and".

    zabuhailo, 09 Февраля 2011

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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    <?php
        function is_get($id) {
            return (count(array_unique(str_split($id))) == 1);
        }
    ?>

    Гет или не гет?)

    hidespb, 09 Февраля 2011

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

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    <?php
    //////////
    static function AddKeyDis($meta_key,$meta_dis=null){
    	   if(is_array($meta_key)){
                                   return self::$result=array("meta_key"=>$meta_key['meta_key'],"meta_dis"=>$meta_key['meta_dis']);
    	   }elseif($meta_dis!==null){
    	             return self::$result=array("meta_key"=>$meta_key,"meta_dis"=>$meta_dis);
    	   }
    	   return null;
       }
    //////////
    ?>

    эх =)

    Zho, 09 Февраля 2011

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

    +160

    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
    <?php
    
    class UserSessionComponent extends Component {
    	//...
    	protected function loginByUserId($user_id, $is_autologin = false) {
    		$list = $this->_loadComponents($this->components, array('UserAuth'));
    		$userAuth = $list['UserAuth'];
    		$userAuth->startup($this->controller); # !!! WORKFLOW VIOLATION !!!
    		$method = $is_autologin ? 'autologin' : 'login';
    		if ($userAuth->$method($user_id)) {
    			return $this->controller->Session->read('User.data');
    		}
    	}
    	//...
    }
    
    class UserAuthComponent extends BaseMagicComponent {
    	protected $loginType = 'explicit';
    
    	//...
    
    	public function autologin($params = array()) {
    		$this->loginType = 'implicit';
    		return $this->_login($params);
    	}
    
    	public function login($params = array()) {
    		$this->loginType = 'explicit';
    		return $this->_login($params);
    	}
    
    	//...
    	protected function _login($params = array()) {
    		switch (true) {
    			case (is_array($params) && isset($params['user']) && isset($params['password'])):
    				$result = $this->loginByUserAndPassword($params['user'], $params['password']);
    				break;
    			case (is_numeric($params) && $params > 0):
    				$result = $this->loginUser($params);
    				break;
    			default:
    				if (empty($params)) {
    					$result = false;
    				} else {
    					$result = $this->loginUser($params);
    				}
    		}
    		// ...
    	}
    
    	// ...
    	public function loginUser($user) {
    		switch (true) {
    			case is_object($user):
    				if (isset($user->data)) {
    					$a_user = $user->data;
    				} else {
    					return false;
    				}
    				break;
    			case (is_numeric($user) && ($user > 0)):
    				if (!($a_user = $this->User->findById($user))) {
    					return false;
    				}
    				break;
    			case (is_array($user) && (isset($user['User']['id']))):
    				$a_user = $user;
    				break;
    			default:
    				return false;
    		}
    		// ...
    		CFL::using('log');
    		if (empty($GLOBALS['loginIsLogged'])) {
    			$loginLog = new cflLoginTrackingLogger();
    			if ($this->loginType == 'implicit') {
    				$loginLog->implicit_login(array('user_id' => $a_user['User']['id']));
    			} else {
    				$loginLog->explicit_login(array('user_id' => $a_user['User']['id']));
    			}
    			$GLOBALS['loginIsLogged'] = true;
    		}
    		// ...
    	}
    }

    Сорри за много-много кода, еле-еле вписался в лимит. Но пришлось запостить все. Логическая цепочка совершенно потрясающая (смотрим с самого верхнего метода и идем дальше к самому нижнему методу). Тут у нас кода просто по колено: сумасшедший пахлава-код, использование глобальной переменной флага, особое извращенное использование конструкции switch, фактическое дублирование этого самого switch в двух последних методах, нейминг переменных и методов...
    Казалось бы, как все это вообще могло быть написано? Но использование компонента с говорящим именем BaseMagic все ставит на свои места.

    quall, 09 Февраля 2011

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

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    // функция с именем is_url, передаваемые ей перем.: $url.  
    function is_url($url)
    {  
      // если ничего не ввели, иначе:  
      if($url == "") return 0;  
      // если не соответствует стандарту, возвращаем ошибку.  
      if(!(ereg("\.", $url) && ereg("http://", $url) && ereg("/", str_replace("http://" , "", $url)))) return 0;  
      else return 1;  
    }

    Проверка URL на валидность (http://www.snippy.ru/snippet/213/)

    zamknulo, 09 Февраля 2011

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

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    function changeType(what) {
                    if (what == "forward") {
                            if (document.forms[0].elements['forward_list'].disabled == true) {
                                    document.forms[0].elements['forward_list'].disabled = false;
                            } else {
                                    document.forms[0].elements['forward_list'].disabled = true;
                            }
                    }
            }

    Есть замечательная ispCP и форма для настройки форвардинга е-мэйлов. Тут описывается поведение чек-бокса для включения формы.

    Mr_Alone, 09 Февраля 2011

    Комментарии (15)
  8. 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)
  9. 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)
  10. 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)