Обновить
22.35

Говнокод

Код, за который должно быть стыдно

Сначала показывать
Порог рейтинга
Уровень сложности

Дыры в форуме NetCat

Время на прочтение1 мин
Охват и читатели2.9K
Вы наверное уже слышали о CMS Netcat и даже видели кое-какие примеры кода этой CMS.

С тех пор ребята пообещали исправится и, кроме прочего, год назад пообещали выпустить новый форум через пол года. Воз и ныне там.

Более того, уже как год был найден баг, позволяющий очень просто писать на их форуме от имени любого пользователя. И этот баг до сих пор не был исправлен ни в версиях, что компания продает, не на сайте самой компании.

Вот я и решил поделиться этим багом.

1) Заходим в любую ветку форума, пусть для определенности будет эта.
1,5) Если вы залогинены, нужно выйти
2) Нажимаем Ответ
3) Вводим в поле «Имя пользователя» число.

Все!

Число, которое мы ввели и будет айдишником пользователя, от чьего имени появится сообщение.

Можно представить, какой бардак творится в коде у системы.

UPD. Сейчас форум на сайте компании закрыли. Если в ближайшее время появится патч, можно считать что я добился того, что хотел, публикуя эту статью.

Правильное сглаживание шрифтов в ACID3

Время на прочтение1 мин
Охват и читатели865
Не знаю, может кто уже видел, но меня очень удивило:

Make the Ahem font antialias correctly on Acid3

String nameStr(fullName.get());
m_allowFontSmoothing = (nameStr != "Ahem");


Не ожидал такого от WebKit =(
Ссылка на commit

За что я «люблю» PHP или переназначение переменных)

Время на прочтение1 мин
Охват и читатели1.9K
  1. if(is_numeric($email) && !empty($email)){
  2.     $email = $this->query("SELECT email FROM users WHERE id=".$email);
  3.     if($email && mysql_num_rows($email)>0){
  4.         $email = mysql_fetch_row($email);
  5.     $email = $email[0];
  6.     }
  7. }

Очередной перл выданный индусами.

Время на прочтение1 мин
Охват и читатели3.1K
Попался мне код, писанный одним индусом, а если точнее то мне было лень проверять в C# является ли строка числом с помощью метода TryParse и я решил посмотреть есть ли более «короткий» способ. вот на что я наткнулся

for (int i=0; i<this.textbox1.text.length; i++)
{
  if (char.IsDigit(this.textbox1.text[i])==false)
    // give any error
}


* This source code was highlighted with Source Code Highlighter.


Я конечно понимаю, что это «оптимизированный» метод на основе Replace, но всё равно забавно :).

Причины и следствия

Время на прочтение3 мин
Охват и читатели1.2K
Здесь я хочу поделиться с вами тремя примерами неадекватного кода. И в то же время постараюсь разобрать и классифицировать каждый случай. Тем самым расскажу не только «что такое плохо?», но и «почему?»

Читать дальше →

Rss grabber для DLE жжот

Время на прочтение1 мин
Охват и читатели3.7K
Вот такой интересный код можно встретить в HttpClient'e Rss Grabber'а для DLE

while (true)
{
$this->errormsg = 'Connection failed (' . $errno . ')';
$this->errormsg .= ' ' . $errstr;
$this->debug ($this->errormsg);
if (true)
{
return false;
}
}


мне так и не удалось разгадать тайный смысл этого инопланетного послания .))

Индусские програмисты

Время на прочтение1 мин
Охват и читатели22K
Говорят что программистам из Индии деньги платят за количество строчек кода которые они написали(редко обращая внимание на качество).
Вот пример одной из конструкций:
if ($x == 0) {
// Do 1....
}
elseif ($x!=0) {
// Do 2.....
}
else {
//
// А вот здесь чистые деньги :)
//
}



P.S. В каждой шутке есть дуля шутки.

Введите код, изображенный на картинке

Время на прочтение1 мин
Охват и читатели4.9K
Наткнулся на интересную реализацию капчи.
По привычке стал дергать картинку курсором в опере, каково же было удивление когда изображение оказалось текстом.


Ссылка попала в руки по наводке Alert.

Заглянем в CMS NetCat?

Время на прочтение1 мин
Охват и читатели16K
Вам нравится NetCat? Нам с NickMitin тоже — его реализация достойна призовых мест в шитпараде.

Посмотрим что внутри?
if ($f_Checked && $admin_mode)
{
$IsChecked = $f_Checked + 0;
}

WTF?!..

Хочу еще бреда!

Валидный код

Время на прочтение1 мин
Охват и читатели1.2K
1.
string[] strs = new List<string>().ToArray();* This source code was highlighted with Source Code Highlighter.


2.
class MyClass
{
   int a;
   public MyClass(int a)
   {
      try
      {
         this.a = a;
      }
      catch (Exception ex)
      {
         logger.Error(ex);
      }
   }
}
* This source code was highlighted with Source Code Highlighter.

Ближайшие события

Форматируем дату

Время на прочтение1 мин
Охват и читатели999
Правильная подстановка нуля перед месяцами:

//dt — инициализированный объект Date()
$('declinedate').value = dt.getDate() + '.' + («00»+(dt.getMonth()+1)).substring((«00»+(dt.getMonth()+1)).length-2) + '.' + dt.getYear();

Счетчик количества, скажем новостей.

Время на прочтение1 мин
Охват и читатели803
вот таким способом я считаю количество новостей на сайте:

<?
$previev_amount=mysql_query("SELECT * FROM news;");
while ($previev_amount_inquiry=mysql_fetch_array($previev_amount)){
$amount+=$previev_amount_inquiry['amount'];
}
?>
Общее количество новостей размещенных на сайте: <?echo "$amount";?>

где в столбце amount для каждой записи стоит 1

Вопрос: можно ли это сделать к.л. другим способом или этот способ единственный?

P.S. Это цитата с форума, я всегда поражался изворотливости человеческого ума, но радует что человек понял что что-то не так...

Интересный отрывок скрипта регистрации

Время на прочтение1 мин
Охват и читатели1.2K
Просматривал исходники одного проекта, зарубежный портал с возможностью публикации аудио-видео и т.д., не суть важно. И вот так там реализована регистрация пользователей, вернее — получение id пользователя при его регистрации.
Читать дальше →

Железная логика

Время на прочтение1 мин
Охват и читатели820
if VerifyStructure(avDetails) == TRUE
	bStructure = TRUE
else
	bStructure = FALSE

if VerifyStatement(avDetails) == TRUE
	bStatement = TRUE
else
	bStatement = FALSE


Обе функции по спецификации возвращают строго boolean