"PHP" / Говнокод #3856 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
function checkvar($array)
{
	$good=true;
	for($i=0;$i<count($arr);$i++)
	{
		$array[$i]=stripslashes(strtolower(str_replace("\n", "<BR>", str_replace("\r", "\n", str_replace("\r\n", "\n", $arr[$i])))));
		if(strlen($array[$i])===0) $good=false;
	}
	return $good;
}
...
$messagevars = array($_POST["var1"], $_POST["var2"], $_POST["var3"], $_POST["var4"], $_POST["var5"], $_POST["var6"], $_POST["var7"], $_POST["var8"], $_POST["var9"], $_POST["var10"], $_POST["var11"], $_POST["var12"], $_POST["var13"], $_POST["var14"], $_POST["var15"], $_POST["var16"], $_POST["var17"]);
if(checkvar($messagevars)===true)
{
	file_put_contents(ROOT_DIR."/".$logname.".txt", $messagevars[0]."\n".$messagevars[1]."\n".$messagevars[2]."\n".$messagevars[3]."\n".$messagevars[4]."\n".$messagevars[5]."\n".$messagevars[6]."\n".$messagevars[7]."\n".$messagevars[8]."\n".$messagevars[9]."\n".$messagevars[10]."\n".$messagevars[11]."\n".$messagevars[12]."\n".$messagevars[13]."\n".$messagevars[14]."\n".$messagevars[15]."\n".$messagevars[16]);
}

Made in china?!

Запостил: XyHb XyHb, (Updated )

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

    • Лурка не разбирается в программинге и отростков оного, разве что в дваче. А у нас тут на виду разные были, определяем с 1-го взгляда!
      Ответить
        • страйкер тогда был молодой, охочий до экспериментов со зрелыми женщинами на конюшне
          Ответить
        • там еще и русские ники были

          Потом раки стали делать клонов типа заменяя "o" на "о" и Страйко их запретил
          Ответить
  • nl2br() — неведомая функция.

    И почему только 17 вариантов? Нужно 100500.
    Ответить
      • Не, любая настоящая крестоблядь тебе пояснит, что i++ может быть непирфомансно, если тип i — какой-то класс, и нужно писать только ++i.
        Ответить
          • i++ по семантике копирует текущее состояние, инкрементирует себя и возвращает копию. В итоге у тебя лишнее копирование и потом ещё освобождение.

            ++i семантически инкрементирует себя и возвращает ссылку на себя. Никаких копий.

            Понятное дело никто за этим не следит, но если ты сделаешь по другому, тебя долго будут хуями покрывать те, кто ожидал принятого поведения, а получил хуйню.
            Ответить
            • Понятно
              Потому что i++ начала должно выполнить выражение, а потом инкрементнутся. Если выражение поменяет состояние, то инкрементнуться должно старое состояние, и отсюлда копия

              В случае же ++i сначала увеличивается, а потом попадает в выражение
              Ответить
            • Интересно, а что будет находится в int, который передают в operator++(int)? Какой вообще долбоёб придумал этот костыль?
              Ответить
              • http://eel.is/c++draft/over.inc
                >>> When the postfix increment is called as a result of using the ++ operator, the int argument will have value zero.
                >>> 116) Calling operator++ explicitly, as in expressions like a.operator++(2), has no special properties: The argument to operator++ is 2.
                Ответить
                • То есть получается лишний оверхед, чтобы ноль в стек положить?
                  Ответить
                  • Во-первых, оператор скорее всего будет заинлайнен, и никаких нулей там не будет.
                    Во-вторых, не в стек, а в «rdx».
                    В-третьих, даже если не будет заинлайнен —операция обнуления регистра сейчас настолько оптимизирована, что процессор её даже выполнять не будет: https://easyperf.net/blog/2018/04/22/What-optimizations-you-can-expect-from-CPU («Zero Idiom»).
                    Ответить
                    • Я еще даже не пошел по ссылке, но уже подумал, что раз регистров в современном проце куда больше чем в его ISA, то наверняка он заалоцирует новый регистр, а старый потом почистит в фоне если нужно или просто перезапишет.

                      >mov eax, 0 is not recognized:
                      именно по-этому я за
                      sub eax, eax

                      (напомните, почему последние сорок лет все именно так обнуляют регистры?)
                      Ответить
                      • Лучше xor eax,eax, потому что он не трогает флаг переноса.

                        mov eax,0 требует хранить четыре байта нулей прямо в коде. А mov rax,0 (единственная инструкция в x86/64 с 64-битным immediate) потребует 8 байтов нулей.
                        Ответить
                        • ты, находясь в здравом уме и рассудке, действительно предлагаешь нам покодить на низкоуровневом языке, состоящем чуть более чем нацело, из мнемоник?
                          Ответить
              • Они синтаксис с двухместных операторов вроде +, -, *, / скопировали что ли, только второй аргумент не используется?

                А унарный плюс и унарный минус можно перегрузить?
                Ответить
        • Если тип i — какой-то класс, поведение будет зависеть от того, кто как написал перегрузку соотв. операторов.

          Никакой встроенной семантики там нет, т.е. в самой "функции" надо писать
          int operator++(int) {
            int tmp = shit;
            shit = shit + 1;
            return tmp;
          }
          Ответить
          • Кстати, о перегрузках. Ещё интересно, что операторы && и || в случае перегрузки теряют свою ленивость, и вернуть её никак нельзя. Т. е. в выражении (a && b) значение b будет вычисляться всегда, если для этих аргументов оператор перегружен.
            Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8