На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
  
    > Просто подскажите
      Помогите пожалуйста с такой проблемой вот примерно код



      ExpandedWrap disabled
        if (isset($katalog)){
        include($katalog/$page.tpl)
        }


      Параметр $katalog и $page передаютса через меню так

      ExpandedWrap disabled
        index.php?$katalog=12&page=3

      правильно ли я сделал
        1. научись правильно по русски писать ( одну ошибку исправил )
        2. правильно
          Простите модератор как умею так пишу пока не очень у меня с русским но исправлюсь с временем
            Цитата
            vovikdrg, 4.09.04, 11:13
            Помогите пожалуйста с такой проблемой вот примерно код

            А в чем собственно проблема?
              vovikdrg,
              с точки зрения безопасности - не совсем. Что будет, если какой-нибудь Вася Пупкин подставит такие значения, с помощью которых можно будет получить доступ к секретному файлу?

              Например:
              ExpandedWrap disabled
                 
                index.php?katalog=../..&page=PASSWORDS.txt


              PS. В URL'е параметры пишутся без знака $.
                Цитата
                vovikdrg, 4.09.04, 12:13
                if (isset($katalog)){
                include($katalog/$page.tpl)
                }


                [flood]
                Сразу скажи адрес, где такой код будешь ставить, вдруг какой файл оттуда понадобится :D :D :D
                [/flood]
                  Ну тогда подскажите, народ, как лучше сделать!
                  Мне надо подключить файл с информацией, как мне это лучше сделать?

                  [Corrected by Mastilior]
                  Сообщение отредактировано: Mastilior -
                    vovikdrg,
                    смотря что ты делаешь.

                    Если хочешь, чтобы имена папок и файлов задавались через URL, то проблему безопасности можно решить путем удаления из переменных ".." (родительская папка):
                    ExpandedWrap disabled
                       
                      $link = str_replace("..", "", $link);
                      Mastilior, а поточнее
                        Цитата
                        vovikdrg, 7.09.04, 16:52
                        Mastilior, а поточнее

                        vovikdrg, что тут непонятного? Удаляем все переходы вверх по иерархии каталогов. А вообще, передать адрес в URL, IMHO - не совсем лучшее решение.
                          Mastilior, согласен. Но можно это вполне использовать при mod_rewrite. Допустим:
                          ExpandedWrap disabled
                            RewriteRule ^(.+)/(.+)$ handler.php?dir=$1&file=$2

                          Ещё желательно из папок удалять «/» и «\» - а то dir=/root мне не очень нравится B)
                            Цитата
                            Простите модератор как умею так пишу пока не очень у меня с русским но исправлюсь с временем

                            Знаю иностранные языки: русский и РНР. Читаю и пишу со словарём :-)


                            Цитата

                            Ну тогда подскажите, народ, как лучше сделать!
                            Мне надо подключить файл с информацией, как мне это лучше сделать?

                            Можно создать файл в котором каждому включаемому файлу будет присвоен свой ID и в запросе передавать только этот ID, например:

                            Цитата ids.lst:

                            1 1 5.tpl
                            2 1 6.tpl
                            3 12 3.tpl

                            index.php?id=3 будет вызывать каталог 12 файл 3.tpl

                            вот код:
                            ExpandedWrap disabled
                               
                              if (isset($id)){
                                 $fh = fopen("ids.lst", "r");
                                 while(!feof($fh)) {
                                    $rd = fgets($fh, 1024);
                                    if($rd != "") {
                                       list($rid, $catalog, $page) = split(' ', $rd);
                                       if($rid == $id){
                                          include($catalog/$page);
                                          break;
                                       }
                                    }
                                 }
                                 fclose($fh);
                              }

                            Это просто пример. Да кстати не помню есть ли в РНР бряк, если нету удали его.
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0376 ]   [ 15 queries used ]   [ Generated: 27.04.24, 17:22 GMT ]