За последние 24 часа нас посетили 26679 программистов и 1511 роботов. Сейчас ищут 920 программистов ...

Переменные, эхо и вложенные инструкции.

Тема в разделе "PHP для новичков", создана пользователем unrecovered, 24 янв 2014.

  1. unrecovered

    unrecovered Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    45
    Симпатии:
    0
    Приветствую, славные жители форума! :D

    Столкнулся тут с забавной багой. Есть сайт - простыня одностраничная, написанная на чистом хтмл. Как это часто бывает, задуманное одностраничной простынёй ВНЕЗАПНО потребовало расширения, и ожидается страниц этак около тридцати. Передо мной замаячил призрак сайта одного нашего клиента, у которого на чистом хтмле нафигачен сайт на 100+ страниц, и небольшая правка в виде добавления яндекс.метрики превратилась там в огромный геморрой. Искоса поглядывая в сторону цмсок, на которые это можно посадить, я пока что озаботился неким временным решением проблемы.

    Итак, код, простой до примитивности. Есть файл определений definitions.php со следующим содержанием:
    Код (Text):
    1.  
    2. <?php
    3.  $path = "http://адрессайта.ru";
    4.  $bp = $path.'/bodyparts/';
    5.  
    6.  $top = file_get_contents($bp.'/top.php');
    7.  $bottom = file_get_contents($bp.'/bottom.php');
    8.  $misc = file_get_contents($bp.'/misc.php');
    9.  $counters = file_get_contents($bp.'/counters.php');
    10. ?>
    В папке bodyparts, соответственно, находятся запчасти, которые предполагается выводить в нужном месте страницы методом
    Код (Text):
    1.  
    2. <?php echo $запчасть; ?>
    (слегка напоминает вордпресс, гы :D)

    А теперь, собственно, о проблеме. Дело в том, что части $counter(счётчики) и $misc(прочая фигня) выводятся внутри подвала $bottom:
    Код (Text):
    1.  
    2.     <div class="footer">
    3.         <div class="footer-in">
    4.             <div class="copyright">
    5.                   ...
    6.             </div>
    7.  
    8.           <?php  
    9.                      echo $counters;
    10.              echo $misc;
    11.           ?>
    12.          
    13.         </div>
    14.     </div>
    И почему-то именно здесь echo не работает. Вернее, работает, но выводит пустую строку вместо содержимого соответствующих файлов. При том, что аналогичный код, размещённый, к примеру, в index.html, отрабатывает корректно. Также я заметил, что некоторые другие переменные из definitions работают нормально, например, код
    Код (Text):
    1.  
    2.           <?php
    3.          
    4.           $counters = file_get_contents($bp.'counters.php');
    5.           echo $counters;
    6.  
    7.           $misc = file_get_contents($bp.'misc.php');
    8.           echo $misc;
    9.           ?>
    помещённый в bottom, вполне работает, то есть переменная $bp выдаёт значение верно...

    Короче, то ли лыжи не едут, то ли я...
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    идея: проверить права доступа. может быть функция не может его прочесть. один не может, а другие может.
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    вместо file_get_contents используйте include, если подключаете php с кодом
     
  5. unrecovered

    unrecovered Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    45
    Симпатии:
    0
    будет работать, если там пхп с хтмлом перемешано?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  7. unrecovered

    unrecovered Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    45
    Симпатии:
    0
    ...загадочно

    После замены на include стал нормально работать $counters, но $misc по прежнему теряет значение(ошибка Warning: include() [function.include]: Filename cannot be empty)

    Фигня какайто...

    UPD Ахаха, какой тупой косяк! Переменная misc уже была объявлена и использовалась формой обратной связи %)
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вроде ошибка ясна.