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



      Поскольку в нескольких файлах используется одинаковые фрагменты кода, решил вынести это в отдельный файл subs.php (находится в той же папке, что и остальные)

      запускаемый файл index.php содержит тэг frameset

      Как только добавляю include 'subs.php' (даже не используя функции из этого файла), браузер выдаёт пустой экран. при просмотре кода страницы убеждаюсь, что страница сформирована верно:
      ExpandedWrap disabled
        <script type="text/javascript">
         
         
        document.getElementsByTagName('title')[0].innerHTML=
            "Титул сайта";
         
        </script>
         
         
        <frameset framespacing=0 border=0 cols="662,*" frameborder="0">
         <frame name=contents src=TOCFrame.php?lng=ru style='mso-linked-frame:auto' target="main" scrolling="auto">
         <frame name="player" src=player.php?lng=ru style='mso-linked-frame:auto' target="_self" scrolling="auto">
         <noframes>
          <body lang=RU style='tab-interval:36.0pt'>
          <div class=Section1>
          <p class=MsoNormal>Эта страница содержит рамки, однако текущий обозреватель их
            не поддерживает.</p>
          </div>
          </body>
         </noframes>
        </frameset>


      но сами фреймы не загружаются.Веб сервер ошибок не выдаёт.

      файл этот ПОДКЛЮЧАЕТСЯ!!!
      Из него можно вызвать тестовую функцию, и она выведет текст:

      ExpandedWrap disabled
        function test() {echo 'hhh' ;}



      Пробовал даже пустой файл подключать:
      ExpandedWrap disabled
        <?php ?>


      Всё равно выполнение останавливается.

      На всякий случай содержимое файла subs.php:
      ExpandedWrap disabled
        <?php
         
        function ConnectDb() {
            // Connect to database
            //----------------------------------
         
            //echo 'ggggg';
            $link = mysqli_connect($_SERVER['SERVER_NAME'], "login", "parol", "baza");
            
            if (!$link) {
                echo "<p align=center>Error on opening of database:" . PHP_EOL . "</p>";
                
                echo "<h1 align=center>Error №" . mysqli_connect_errno(). ": " .  mysqli_connect_error() . "</h1>" . PHP_EOL;
                exit;
            }
            return $link;
         
        };
         
        function test() {echo 'hhh' ;};
         
        ?>
      Сообщение отредактировано: Alexanbar -
        P S Вставлял include в остальные два файла - там всё работает, как часы.

        Похоже, что в файлах с frameset не работает include?
          А пробовали для начала удалить BOM?
            Цитата Serafim @
            А пробовали для начала удалить BOM?

            А что это такое?
              Я бы для начала заключил все значения атрибутов HTML-тегов в кавычки. Если не поможет, значит ошибка, как обычно, в семнадцатой строке.
                Цитата AVA12 @
                Я бы для начала заключил все значения атрибутов HTML-тегов в кавычки. Если не поможет, значит ошибка, как обычно, в семнадцатой строке.

                Не помогает.

                Сервер выдаёт путь к index.php и всё...

                если в браузере выбрать Просмотр кода, то код правильный, но фреймы не открываются.

                Если убрать строку include, то выдаёт все файлы, какие там есть - рисунки, *.css, *.js и т.д.
                  Именно по-этому и существуют стандарты: https://www.php-fig.org/psr/psr-1/ Где сразу же вторым пунктом идёт: "Files MUST use only UTF-8 without BOM for PHP code." :angry:

                  Цитата Alexanbar @
                  А что это такое?

                  А никто не пробовал для начала погуглить? https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%...%82%D0%BE%D0%B2
                    Цитата Alexanbar @
                    А что это такое?

                    Открыть файл в notepad++, "кодировки"\"преобразовать в utf-8 без BOM".
                      Оказалось, что дело действительно в этом BOMе.

                      Как показал эксперимент, достаточно убрать маркер в том файле, который инклудится.


                      Вообще говоря, не дело, что одни стандарты противоречат другим.
                        Цитата Alexanbar @
                        Оказалось, что дело действительно в этом BOMе.

                        Как показал эксперимент, достаточно убрать маркер в том файле, который инклудится.

                        Вот видишь как замечательно =) Осталось прочитать его весь (ну, например, там чёрным по белому написано не ставить закрывающий "?>") и проблем резко станет ещё меньше ;) Попробуешь следовать заветам мудрых или продолжишь кататься на граблях?)))
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0303 ]   [ 15 queries used ]   [ Generated: 28.03.24, 06:47 GMT ]