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

    +155

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    foreach(mpql(mpqw("SHOW TABLES WHERE Tables_in_{$conf['db']['name']} LIKE \"{$conf['db']['prefix']}{$arg['modpath']}\_%\"")) as $k=>$v){
    	$t = implode("_", array_slice(explode("_", $v["Tables_in_{$conf['db']['name']}"]), 2));
    	if(!array_key_exists($t, (array)$tpl)){
    		$tpl[ $t ] = mpqn(mpqw("SELECT * FROM {$conf['db']['prefix']}{$arg['modpath']}_{$t}"));
    	}
    }// mpre($tpl);

    Тотальный и беспросветный пиздец.

    Запостил: nkarakin, 09 Июня 2013

    Комментарии (50) RSS

    • показать все, что скрытоА как расшифровываются mpql, mpqw, mpqn и mpre?
      Ответить
      • показать все, что скрытоmp — первые буквы из названия CMS. А дальше остаётся только гадать:
        # Обработка результата запроса к базе данных
        function mpql($dbres, $ln = null, $fd = null){
        	$result = array();
        	while($line = @mysql_fetch_array($dbres, 1))
        		$result[] = $line;
        	if ($ln !== null){
        		$result = $result[$ln];
        		if ($fd)
        			$result = $result[$fd];
        	}
        	return $result;
        }
        
        # Запрос к базе данных
        function mpqw($sql, $info = null, $conn = null){
        	$microtime = microtime();
        	$result = @mysql_query($sql, !$conn ? $GLOBALS['conf']['db']['conn'] : $conn);
        //	if (if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}"))
        //	if ($GLOBALS['conf']['modules'][$GLOBALS['conf']['modules']['m']]['access'] >= 4)
        		if (strlen(mysql_error()) && ($GLOBALS['user']['gname'] == $GLOBALS['settings']['admin_grp']))
        			echo "<p>$sql<br><font color=red>".mysql_error()."</font>";
        	$num = count($GLOBALS['conf']['db']['sql']);
        	$GLOBALS['conf']['db']['sql'][$num]['info'] = $info ? $info : $GLOBALS['conf']['db']['info'];
        	$GLOBALS['conf']['db']['sql'][$num]['time'] = substr((substr(microtime(), strpos(microtime(), ' ')) - substr($microtime, strpos($microtime, ' ')) + microtime() - $microtime), 0, 8);
        	$GLOBALS['conf']['db']['sql'][$num]['sql'] = $sql;
        	return($result);
        }
        Ответить
    • показать все, что скрытоХм, минусятор тычет вручную? Почему-то у некоторых постов -7, а у некоторых -13. Низачот.
      Ответить
      • показать все, что скрытоКстати, мы недавно со знакомой обсуждали что-то похожее. Она сейчас работает над тезисом по маниакально депрессивному синдрому и его влиянию на внутренние физиологические состояния. Я не специалист в этой области, просто было интересно узнать: так вот, люди с OCD ввиду того, что не в состоянии адекватно оценить ситуацию (изза нарушеных рецепторных функций, вернее, их связи с сознанием) создают для себя т.н. "прокси". Прокси, это мыслитерльное устройство, своего рода правило, которое позволяет человеку подверженному OCD функционировать примерно похоже на нормальных людей. Например, такой человек не будет уверен в том, что его руки чистые, не смотря на то, что вымыл их с мылом уже десять раз. Но сам ритуал мытья может служить таким прокси. Человек сможет себя т.о убедить, что раз я вымыл руки десять раз, они должны быть чистыми.
        Кризисы синдрома случаются, когда обнаруживается несоответствие между прокси и результатом, который он должен гарантировать. Например, руки были выпачакны масляной краской, и мытье с мылом не помогло.
        К чему я это говорю: "рейтинг" на говнокоде, каким бы примитивным он ни был, это выражение какого-то "коллективного бессознательного", с акцентом на коллективность. Это не говорит ничего о справедливости, только своего рода статистический параметр. Этот самый параметр не характеризует достоверно интересность или полезность сообщения. Попытка форсировать рейтинг в ту или другую сторону, хотя и, скорее всего вызвана другими обстоятельствами, очень во многом похожа на попытку OCD человека удержаться за неработающий прокси. Примерно как религиозный человек, перед лицом опасности, может начать молиться не смотря на то, что у него никогда не было индикации того, что молитвы вообще имеют какое-то значение. Он просто находит утешение в следовании формуляру, безосновательно предполагая положительный эффект.
        Ответить
        • показать все, что скрытонаходит утешение?
          просто этого рака слишком дохуя сердобольных кормит
          перестаньте с ним разговаривать и отвечать на его сраные коменты, школоте самой станет скучно
          ну и заодно стоит вычистить его дерьмо, совсем не сложно в базе обнулить эти голоса, а виртуалов забанить
          Ответить
          • показать все, что скрытоЯ тут неделю уже думаю о схеме, позволяющей бороться с подобными набегами.

            Пока в голове крутится только сеть доверия. Немного попахивает кармой, но не совсем то. Вкратце: оставлять комменарии и коды можно всем, но только после ввода капчи, голосовать нельзя. Чтобы голосовать и писать без капчи, нужен аппрув одного-двух других членов сообщества, обладающего такими правами (с правом отозвать это право, в том числе другими членами сообщества). Таким образом, при регистрации на ГК друга, имеющего аттестат об окончании школы, можно дать ему права полноценного члена сообщества, не заставляя его сидеть в бесполезном карантине. А боты-минусаторы идут лесом, каскады однотипных копипаст разбиваются об ввод нетривиальной капчи.

            Плюсы-минусы комментов на права не влияют. Надо именно залезть в профиль юзера и поставить своё решительное "против", с обязательным обоснованием решения. Права могут восстановить другие члены сообщества.

            Главных нет, саморегуляция.
            Ответить
            • показать все, что скрытоdel
              Ответить
            • показать все, что скрытоВот только не надо инвайтов.
              Ответить
            • показать все, что скрытоДобавлю несколько идей:

              1. С ботами, которые отправляют запросы не браузерами, можно бороться, выдавая на комментирование и на голосование анти-csrf-токены. Не каждый школьник додумается написать бота, который будет парсить html для извлечения токена.

              2. Против мультов, отправляющих запросы с браузера, можно бороться с помощью зомби-кукис, разместив невидимую флэшку. Не каждый додумается чистить LSO перед вводом в бой очередного мульта.

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

              4. Трололо-режим: после детектирования бота его комментарии и голоса видны только ему и его мультам. Вопрос в том, как это реализовать, не прибегая к модераторам.

              5. Режим ограничения частоты голосования и отправки комментариев. Вопрос: см. п. 4.
              Ответить
              • показать все, что скрыто> Не каждый школьник додумается написать бота, который будет парсить html для извлечения токена.

                Я когда-то начинал делать жабовский модуль govnoapi, на который, к сожалению, я давным давно забил. Так вот в нем перед отправкой делался запрос странички для отправки (аля http://govnokod.ru/comments/13065/post?replyTo=180079), откуда брались CSRF и капча.

                > 5. Режим ограничения частоты голосования и отправки комментариев.
                Обходится медленным голосованием без превышения скорости и количеством ботов.
                Ответить
            • показать все, что скрытоРепрессии помогают только когда есть достаточно власти. Например, если есть модерация / администрация активно печется о происходящем.

              Социальная инженерия предпринимала попытки саморегуляции. Некоторые более успешные, но в целом далекие от идеала. Проблема в общем случае в том, что мы толком и не понимаем формальную сторону честностии справедливости. Мы лучше понимаем нормативную часть вопроса, но и тут есть много неразрешимых проблем.

              В любом случае, "идеальным" решением было бы переубеждение. Т.е. человек, который не ведет себя адекватно нормам принятым на ресурсе делает так исходя из каких-то своих представлений о справедливости. По-настоящему исправить ситуацию можно только показав неадеквату, что его представление о справедливости некогерентно. Люди очень редко делают то, что считают несправедливым, и практически никогда - по своей воле.
              Ответить
            • показать все, что скрытоМы это обсуждали с прошлых петушиных набегов и так ни к чему и не пришли.
              Я бы предположил что-то вроде Alter Kämpfer, когда несколько человек с таким статусом проголосуют за временное исключение из партии, суспенженный акк переводится в r/o, последние N (или M) постов скрываются, голоса убираются из статистики.
              Сговор и дальнейшее наведение хаоса возможно, но, кмк, если мы уже все тут друг друга знаем, маловероятно, что кто-то просто сойдёт с ума и устроит такое.
              Вообще, на самом деле, тема очень тонкая и недетерминированная.

              Если вводить допуск, система набигания усложняется, но ничего не мешает, скажем, завести себе десять виртуалов и время от времени пописывать в более-менее разном стиле. Я ставил опыты, с вероятностью в 90% обычный человек не отличит такого. Затем, уже полноправные виртуалы будут аппрувить бесконечное количество новых. Если сделать такое усложнённым (типа, сотни постов, годы на форуме^Wчяти), то будет не особо лучше инвайтов.
              Ответить
              • показать все, что скрытоТа ладно. Я бы вообще не напрягался.
                Наоборот забавно, терпила вайпает руками, старается, а его посты всё-равно никто не читает.
                Ответить
                • показать все, что скрыто> вайпает руками
                  Вот блин. Зачем он это делает руками? Написать на том же питоне скрипт, регистрирующий пачку ботов, и анально карающих всех неугодных ведь совсем несложно... Да и засирать треды аскии-версиями порванных жоп и чорных властелинов можно не вводя капчу - главное не торопить события и делать достаточно большой кулдаун между постами, а время и количество ботов сделают свое чорное дело.

                  Довести ГК до полностью неюзабельного состояния можно было бы за пару вечеров кодинга... Но почему-то так лень этим заниматься...
                  Ответить
                  • показать все, что скрыто>Довести ГК до полностью неюзабельного состояния можно было бы за пару вечеров кодинга...
                    Так всё говно на раз скрывается/раскрывается жс.
                    Только списки ботов пополняй.

                    > Написать на том же питоне скрипт
                    Наверное не знает как. Даже на питоне.
                    Ответить
                    • показать все, что скрыто> Так всё говно на раз скрывается/раскрывается жс.
                      Ну да, против скрипта игнорящего минусы и скрывающего посты по блеклисту не попрешь.

                      Но к сожалению есть еще и деструктивные меры - заминусовать на -20 все треды и дождаться пока сборщик мусора отправит их в небытие...
                      Ответить
              • показать все, что скрытоP.S. Всегда есть возможность забабахать Proof-of-work. Это усложнит и услоупоучит систему, но ни один нобигатор своими школолосилами не прорвётся.
                Ответить
            • показать все, что скрытоЯ тоже долго думал о том, и пришел к выводу, что для столь малочисленных сообществ схемы а-ля SO не будут работать, но вот что будет:

              1. Можно голосовать только "за", минусов нет. Количество плюсов в день ограничено, определяется "стажем" пользователя.

              2. Вместо минусов есть список игнорируемых пользователей, сообщения которых не отображаются. Это, кстати, ведет к тому, что комментарии должны быть плоские, а не деревом, поскольку скрытие поста должно вести за собой скрытие всего дерева под ним. К слову, http://www.codinghorror.com/blog/2012/12/web-discussions-flat-by-design.html

              3. Вышеупомянутый стаж пользователя вычисляется на основании:
              (а) времени пребывания на ресурсе
              (б) количестве уникальных пользователей, поставивших плюсы данному пользователю за определенный период времени.

              Оба компонента подчиняются логарифмическому закону.

              Пример:
              Я зарегистрирован 120 дней, мой стаж по времени log10(120) = 2,08
              Мои сообщения за последний месяц получили положительные оценки от 12 пользователей, мой стаж по оценкам log10(12) = 1,08
              Итого, я могу ставить плюсы другим пользователям floor(2,08 + 1,08) = 3 раза в день.

              Масштабирования можно добиться, меняя основания логарифмов и время отсечения голосов от других пользователей, в остальном все крайне дешево и сердито. Дополнительно необходимо иметь возможность убрать свой голос или переместить на другое сообщение, но только в течение небольшого времени.
              Ответить
              • показать все, что скрытоПозволю себе усомниться.
                Рейтинг в конкретном случае совершенно избыточен. Идея с только плюсами логична, но и минусы служат определённым показателем воли сообщества и регулятором. С таким же успехом можно запретить топить посты.
                Я бы предпочёл вложить усилия в эвристику и детектор атак.
                Ответить
                • >Рейтинг в конкретном случае совершенно избыточен.
                  В моей схеме нет никакого рейтинга.

                  >минусы служат определённым показателем воли сообщества
                  Не воли, а мнения, и оно того не стоит. Если есть желание воевать со школьниками - пожалуйста, а я не хочу тратить время на сложные анализаторы, которые Вася П. из 6го "Б" класса обойдет старательной ручной регистрацией кучи виртуалов. Rocket science для травли тараканов получится.

                  >и регулятором
                  Минусы в данный момент ничего не регулируют, кроме скрытия постов по умолчанию.

                  >Я бы предпочёл вложить усилия в эвристику и детектор атак.
                  А я бы предпочел сделать так, чтобы не было условий для атак. Меня вообще уже в корень заебали сложные и глючные схемы, с которыми в итоге нихуя нельзя сделать.

                  Да и вообще меня все уже заебало. Нихуя не буду делать.
                  Ответить
                  • Кстати, тоже неплохая схема: нет оценок вообще, мнение сообщества выражается текстом. Писать можно только после регистрации. Ботов удаляет админ.

                    Свежо, не так ли?
                    Ответить
                  • > В моей схеме нет никакого рейтинга.
                    > стаж пользователя
                    Возможно, я выбрал немного неудачный термин. Просто всё равно мы делим людей на касты, при этом, больше "кармы" получит птеросня, нежели профессионал с непопулярным мнением.

                    > воевать со школьниками
                    В этом и состоит инженерная задача. Сделать лучше, чем есть сейчас, усложнив жизнь вандалам и недобросовестным пользователям, упростив добропорядочным.

                    > в данный момент ничего не регулируют
                    Ну, почему. Как мера общественного порицания. Отрицательная обратная связь должна быть. В конце концов, полезность в том, что я могу увидеть, сколько людей согласны с моим положительным или негативным отношением. Тут же получается как с покойниками.
                    На форумах часто бывает кнопка "сказать спасибо", но нет кнопки "автор мудила". Сплошная симпа, чмаффки и обожание.
                    Более того, если вандал-питушок считает, что моё мнение некошерно, он тоже должен иметь возможность поставить -1, главное - не дать ему этим сильно портить жизнь.

                    > А я бы предпочел сделать так, чтобы не было условий для атак.
                    Гостевая книга на нороте? Или ещё круче, премодерация комментариев и публикация в статическом html.

                    > мнение сообщества выражается текстом
                    Неидеально, иногда я проглядываю посты по диагонали, раздавая щедрой рукой направо и налево. Писать-отвечать лень, или особо нечего, если тема раскрыта. Скатимся до "+1", "аффтар жги ищо" и "многабукав ничитал".
                    Ответить
                    • это тебе не двач, тут цитирования нет
                      Ответить
                    • >при этом, больше "кармы" получит птеросня, нежели профессионал с непопулярным мнением.
                      Эта карма только для выставления плюсов, а разница будет всего лишь в единицы, и даже не на десятки. Профессионал с непопулярным мнением не пострадает от недостатка плюсов, которые он может ставить другим.

                      >В этом и состоит инженерная задача.
                      Лолнет, я лучше посмотрю видео про котят. Борьба со школьниками - это не инженерная задача, а пустая трата времени.

                      >Сделать лучше, чем есть сейчас, усложнив жизнь вандалам и недобросовестным пользователям, упростив добропорядочным.
                      Чем сложнее схема, тем выше вероятность, что все будет наоборот.

                      >Как мера общественного порицания.
                      Просто пишите "ай-ай-ай".

                      >Сплошная симпа, чмаффки и обожание.
                      Не вижу в этом ничего дурного. Гораздо лучше мышиной возни с троллями.

                      Кстати, я посещаю ГК, потому что тут интересно, а не из-за обратной связи. За обратной связью я ходу на stackexcheange/stackoverflow
                      Ответить
              • Начинается карма дрочерство.
                Я бы доверил уважаемому Люру кнопку нагибатор. Сей человек в полне в меняем. И если уж ион начнет набигать я окончательно разочаруюсь в этом мире. ( и создам новый :)
                Ответить
                • >Начинается карма дрочерство.
                  Заканчивается. Ровно там, где начинаются логирифмы - каждый шаг в стаже будет стоить в 10 раз больших усилий, и после пары шагов это станет совершенно нереальным.
                  Ответить
                  • > после пары шагов это станет совершенно нереальным
                    Скажите это корейским геймерам ;)
                    Ответить
    • показать все, что скрытоа по мне надо оставить всё как есть. Ну набигают и чё ? Я на гк уже достаточно давно фриков было достаточно, но как показывает опыт они все уходят если их не кормить. Предлагаю удалить все посты "полоумного" развернуть заминусованные посты. И больше не кормить. Само сдохнет от голода.

      ГК очень интересный ресурс именно потому что он такой как есть. Не надо из него делать подобие хабра.
      Ответить
    • показать все, что скрытоДа хуй с ним.
      Ответить
    • if($conf['settings']['del_sess']){
      $func = create_function('&$val, $key','$val = strtr(stripslashes($val), array("\\\\"=>"\", \'"\'=>""", "\'"=>"'"));');
      array_walk ($get = $_GET, $func);
      $post = $_POST; $post['pass'] = 'nopass';
      array_walk ($post, $func);
      array_walk ($files = $_FILES, $func);
      array_walk ($server = $_SERVER, $func);
      $request = serialize(array('$_POST'=>$post, '$_GET'=>$get, '$_FILES'=>$files, '$_SERVER'=>$server));
      }

      mysql_query("INSERT INTO {$conf['db']['prefix']}sess_post (sid, url, time, method, post) VALUE ({$sess[0]['id']}, '{$_SERVER['QUERY_STRING']}', ".time().", '{$_SERVER['REQUEST_METHOD']}', '$request')", 'Ложим данные в лог');
      Ответить

    Добавить комментарий