Приехал в универ покушать, покурить, пообщаться, с горского на трамвае добирался полтора часа. В результате не смог защитить лабу по PHP и узнал, что ММ надо было сдать до 1 октября, а после — только лично Бердникову наизусть все лекции в Томском институте теплофизики. Казалось, хуже дела идут только у Чёрного, весь день пишущего на flamp и играющего в клавогонки с дешманского университетского компьютера. Но несмотря на всё это, лично для меня сессия уже сдана и настало время подвести итоги этого семестра. План ничего не сделать самому можно считать успешно выполненным, план ничего не узнать — условно выполненным, план свести к минимуму количество ненужных посещений — проваленным, хотя и не до такой степени, как в прошлые разы. В следующем семестре (возможно, последнем) мы хотим вплотную заняться этим вопросом, а пока, как обычно, предметы в порядке появления: (Далее)
ips_kernel/classDbMysqlClient.php:
//----------------------------------------- // Run the query //----------------------------------------- #I had to switch this around... The query goes first, connection id second. Otherwise it just breaks - KF #$this->query_id = mysql_query($this->connection_id, $the_query ); $this->query_id = mysql_query( $the_query, $this->connection_id );
У кого-нибудь есть возражения к тезису о том, что IPB — блевотная лужа с мочой?
UPD: там ещё вот такое есть:
if ( preg_match_all( "#[^_a-zA-Z](select)[^_a-zA-Z]#s", $_tmp, $matches ) ) { if ( count( $matches ) > 1 ) { $this->throwFatalError( "Вложенные SELECT в запросах запрещены.\nДобавьте \ipsRegistry::DB()->allow_sub_select=1; перед запросом, чтобы разрешить их\n{$the_query}" ); return false; } }
То есть
$articles = ipsRegistry::DB()->query(" SELECT field_1 AS title, field_2 AS content, field_3 AS time, record_dynamic_furl FROM ccs_custom_database_1 WHERE category_id = 5 ORDER BY field_3 DESC LIMIT 3 ");
Это теперь вложенный SELECT, который мы, так и не сумев побороть SQL-инъекции, просто запретили.
Вчера вечером бухал водку. Голяком, потому что за колой было лень идти. Включил самый лучший в мире алкотрек на повтор, и так размазало что пиздец. К несчастью, весь следующий день — лишнее доказательство тому, что этот ваш алкоголь — ёбаный яд. С нормальными веществами как: схавал, поколбасило, отпустило, выпил водички, скушал яблочко, погрустил часок-другой, и как ни в чём не бывало живёшь дальше. Нет блять, обязательно должно жечь желудок, подташнивать, стучать сердце, грязная голова, папа нагрянул в гости, а у меня в раковине до потолка, везде еда и пустые пакеты. Впрочем, не об этом речь. Когда я совсем уже хороший завалился спать, посетила мысль, что Symfony, будучи писанным на питоне, окажется получше Django. Погибче, попродуманнее. По части админки по крайней мере точно. Беспонтовая админка там, всякую лапшу приходится писать типа: (Далее)
Для начала немного о том, как устроен шаблон vBulletin. По сути, это обычная PHP-строка в невидимых двойных кавычках (при этом двойные кавычки самой строки автоматически экранируются). Пример: (Далее)
function phpbb_links_abstract_helper($matches, $letter) { $url = substr($matches[0], strlen('[url]')); $url = substr($url, 0, -strlen('[')); return '[url=' . $url . ']' . $letter . '=' . $matches[1] . '['; } function create_phpbb_links_helper($letter) { return create_function('$matches', 'return phpbb_links_abstract_helper($matches, ' . var_export($letter, true) . ');'); }
Применение такое:
$text = preg_replace_callback('#\[url\]' . preg_quote($vbulletin->options['bburl']) . '.*showthread\.php\?.*t=([0-9]+[^\[]*)\[#i', create_phpbb_links_helper('t'), $text); $text = preg_replace_callback('#\[url\]' . preg_quote($vbulletin->options['bburl']) . '.*showthread\.php\?.*p=([0-9]+[^\[]*)\[#i', create_phpbb_links_helper('p'), $text); $text = preg_replace_callback('#\[url\]' . preg_quote($vbulletin->options['bburl']) . '.*forumdisplay\.php\?.*f=([0-9]+[^\[]*)\[#i', create_phpbb_links_helper('f'), $text);
Помнится, я после третьей сессии хотел вплотную заняться функциональным программированием, но магнитофоны всё испортили. А потом и вовсе из /c/ переселился в /bb/. Я такой смешной, когда обросший 


Есть, к примеру, вот такой код, который работает неправильно: (Далее)
Писать хаки для vBulletin в окошечке 450x150 без подсветки. Тратить по пол-минуты на вставку фразы через веб-интерфейс, а потом обнаружить, что похожая уже есть. Получасовая халтура (оцененная соответствующе) растягивается на несколько дней. Заказчик и его гениальные идеи, конечно, супер, но с этим ничего не поделать. А вот утомительное программирование в браузере (хуже только IDE для фортрана) вполне можно перенести в любимый редактор (Далее)
Дал другу, PHP до этого видевшему, наверное, только на картинках, немного пофрилансить веб-прокси на европейский автоаукцион, потому что самому писать эти бесконечные регулярные выражения заебало невыносимо. Пацан затупил в самом начале, так что, в итоге, делать пришлось всё равно мне. Ну хули, 30 минут, два экрана блевотины — и расходы на сегодняшнюю слабость в виде новодельного винила Black Holes And Revelations должны быть погашены.
Посмотрите на этот URL:
/hitscounter.json?scopeId=C&isSearchRequest=true&minPowerAsArray=25&minPowerAsArray=KW&export=ALSO_EXPORT&ambitCountry=DE
Так и есть: эта ёбаная сука зачем-то разбирает QUERY_STRING в массив, а затем собирает обратно. В конструктор, блядь, не наигрались в детстве что ли? Причём, если приглядеться, можно увидеть, что разбирают они вручную, хотя вообще-то есть parse_str. Я ему уши-то подкрутил: И мгновенно БЭЭМВЭ стало открываться (вот буду бухать, позвонят, а я пошучу: „а вы попробуйте ключом“). Но обидно однако, суперкрутой PHP-фриланс для новичка: ищи баги в почти стандартной библиотеке. А как ещё народ в дело ввести? function getQueryString()
{
return parse_url($this->url, PHP_URL_QUERY);
// ||
// || ЭТОТ КОД
// \||/ НАПИСАЛ
// \/ ПИДОР
if (!empty($this->querystring)) {
foreach ($this->querystring as $name => $value) {
// Encode var name
$name = rawurlencode($name);
if (is_array($value)) {
foreach ($value as $k => $v) {
/* ХУЙНЯ ===========> */$querystring[] = $this->useBrackets ? sprintf('%s[%s]=%s', $name, $k, $v) : ($name . '=' . $v);
}
} elseif (!is_null($value)) {
$querystring[] = $name . '=' . $value;
} else {
$querystring[] = $name;
}
}
$querystring = implode(ini_get('arg_separator.output'), $querystring);
} else {
$querystring = '';
}
return $querystring;
// /\
// /||\
// || ТАМ
// || ГОВНО
}

- vas3k › cron.monthly 5 февраля, 17:21
- anonymous › Яндекс.Игрушки 4 февраля, 15:52
- anonymous › Холодильники Coca-Cola 3 февраля, 03:59
- Sergey Mordvinov › Idealism 3 февраля, 03:06
- anonymous › Взлом домофона «Факториал» 31 января, 20:13
- anonymous › Написание «не» с различными частями речи 30 января, 18:59
- anonymous › Стихи про Ленина 28 января, 17:25
- anonymous › ТДС-6 СТЕРЕО 24 января, 15:47
- Un1oR › Просто возьмём и сдадим 24 января, 12:38
- anonymous › 86 докладов по истории 23 января, 21:21


