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

    +162

    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
    function include_wp_head($src)
    {
        $paths = array(
            ".",
            "..",
            "../..",
            "../../..",
            "../../../..",
            "../../../../..",
            "../../../../../..",
            "../../../../../../.."
        );
       
        foreach ($paths as $path) {
            if(file_exists($path . '/' . $src)) {
                return $path . '/' . $src;
            }
        }
    }

    WordPress Form Manager

    Запостил: ddavydov, 01 Марта 2012

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

    • Непорядок, надо сделать через while. А ещё лучше - через рекурсию. Когда на N-ном уровне вложенности вывалится, значит, такого файла нет даже там.
      Ответить
      • это сарказм?

        если отвечать серьезно, то нужно файлы класть строго в определенное место, и оттуда их подгружать, а не каждый раз в рантайме бегать в поисках. Лучше всего - по соглашениям, или же через конфигу.
        И уж явно по абсолютным от некого условного корня путям, а не относительным от текущего, т.к. текущая директория может быть очень неожиданно другая.
        И еще момент - наверное, в качестве разделителя использовать константу; как минимум - кроссплатформенно, а еще и файлосистему не насилуем (в случае, скажем, форточек) переводом разделителей в родные.
        Ответить
        • Вот констант разделителей нам ещё не хватало. Это мало того что ломает таблицы символов в IDE, так ещё и совершенно не нужно - прямой слэш работает на всех основных системах, а полноценную абстракцию путей такими жалкими попытками не реализовать.

          Вот, например, пример пути на OpenVMS:

          NODE"accountname password"::device:[directory.subdirectory]filename.type;ver

          Хоть год протрахайся, толку чуть.
          Ответить
        • Само собой, сарказм, просто что тут ограничиваться полумерами.
          А вас, комрад, кажется укусил радиоактивный капитан очевидность.
          Ответить
    • спёрли идею
      Ответить
    • Лучше уже в таком случае через Гугл делать - зачем мелочится...
      Ответить
    • теперь понятно почему это гогно так тормозит
      Ответить
      • Это не сам WordPress, этот код из расширения Form Manager. Плагин мне прислал приятель, разобраться, почему при сохранении формы отваливается дочерний процесс Apache на сервере.
        Ответить
    • симпотичный
      Ответить
    • показать все, что скрытоvanished
      Ответить

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