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

    −37

    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
    $url = $_GET['url'];
      $url = rtrim($url, '/');
      $url = explode('/', $url);
      require 'controllers/'.$url[0].'.php';
      $controller = new $url[0];
      if(isset($url[2])) {
       $controller->$url[1]($url[2]);
      }
      else {
       if(isset($url[1])) {
        $controller->$url[1]();
       }
      }

    Запостил: dev400, 19 Февраля 2016

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

    • Бля я же эту хуйню у же на тостере видел.
      Ответить
    • Русаков
      Ответить
    • Жаль, что "\0" в require не прерывает строку с именем файла...
      Ответить
      • Пофиксили ядовитый ноль или как?
        Ответить
        • Надо будет в дебаггере или под strace глянуть. require "foo.txt\000bar.txt" говорит, что не нашло файл "foo.txt". Странно как-то.
          Ответить
          • Я не про это место а вообще в пхп
            Ответить
            • Да вот хуй знает. Судя по тому, что "foo.txt\000bar.txt" выводится как "foo.txt" - не везде пофиксили.
              Ответить
        • #define CHECK_NULL_PATH(p, l) (strlen(p) != l)
          
          if (!filename || CHECK_NULL_PATH(filename, filename_length)) {
              return NULL;
          }
          Таки пофиксили. Любой файл с ноликами в имени автоматом считается не найденным...
          Ответить

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