PHP, HTML, JAVA, CSS, mySQL

php include

Здравствуйте.
Помогите решить один вопрос.
При создании сайта после того, как разбил его на php блоки возникла следующая проблема.
Разбил на следующие блоки которые поместил в отдельную папку blocks:
1. шапка header.php
2. меню navig.php
3. футер futer.php
Если их подключать в страницах которые находятся в корне сайта, то все работает ( блоки подключаются и все отображается ).
Подключал следующим образом:
1. Для главной страница index.php
<?php include("blocks/header.php");?>

Если подключать в страницах которые находятся в каком-либо каталоге, то блоки подключаются ( решил так, потому, что сервер не выдает никаких ошибок ), но сами блоки на страницах не отображаются.
Подключал следующим образом:
2. Для страниц в каталоге
<?php include("../blocks/header.php")?>
<?php include("../../blocks/header.php")?>
И т.д.

Пожалуйста помогите найти ответ.

По-моему блоки нужно сохранять с расширением .inc

Цитата:
Сообщение от Sergey46000
1. Для главной страница index.php
<?php include("blocks/header.php");?>

Код PHP1 2 3 4 5 6 7   <?php require_once("blocks/header.php"); require_once("blocks/navig.php"); require_once("blocks/futer.php"); ?>  
Цитата:
Сообщение от Sergey46000
2. Для страниц в каталоге
<?php include("../blocks/header.php")?>
<?php include("../../blocks/header.php")?>
Допустим, есть каталог dir, тогда в нём файлы из каталога blocks будут подключаться следующим образом:

Код PHP1 2 3 4 5 6 7   <?php require_once("../blocks/header.php"); require_once("../blocks/navig.php"); require_once("../blocks/futer.php"); ?>  

Спасибо за поддержку. Может я, что-то не понял, может изложил вопрос не так,
но в случае include также, как и в require_once блоки в каталогах подключаются, но не отображаются...

require(), require_once(), include(), include_once() - в данном случае тут никакой разницы нет

зы: а где тестируешь? у себя на локалхосте или хостинг?

Sergey46000, а вы уверены что они подключаются? просмотрите html код страницы: есть там ваши включенные блоки - или их нет.

Цитата:
Сообщение от GаlаX
require(), require_once(), include(), include_once() - в данном случае тут никакой разницы нет

зы: а где тестируешь? у себя на локалхосте или хостинг?
у себя на локалхосте (Апач), а может они вообще не подключаются, но тогда почему сервер ошибку не выдает, как в случае если не находит файл.

Sergey46000, будьте добры, скиньте срдержимое index.php и какого-нибудь headera. header, относительно index.php хранится в каталоге blocks ?

Цитата:
Сообщение от Sergey46000
Спасибо за поддержку. Может я, что-то не понял, может изложил вопрос не так,
но в случае include также, как и в require_once блоки в каталогах подключаются, но не отображаются...
Быть такого не может. У меня же и подключаются и отображаются. Думаю, что и у любого другого тоже.

Извините, что не ответил сразу. Работа.
Полностью вылаживать нет смысла, поэтому структура ( в page2.php header не отображается):

1


index.php
page1.php папка “img”head.jpgfooter.jpgпапка “navig”( выпадающее меню )папка “blocks”header.phpfooter.phpпапка “page”page2.php

2 header.php

<tr>
<td><img src="img/header.JPG" width="948" height="92"></td>
</tr>

3 index.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Главная</title>
</head>

<body>
<table width="95%" border="1" cellspacing="0" cellpadding="0">

<?php include("blocks/header.php")?>

<tr>
<td height="20"><div align="center"><a href="index.php">Главная</a>
<a href="page1.php">Страница 1</a>
<a href="page/page2.php">Страница 2</a></div></td>
</tr>
<tr>
<td><div align="center"><strong>Главная</strong></div></td>
</tr>


<tr>
<td>Footer</td>
</tr>
</table>
</body>
</html>

4 тело page1.php

<table width="95%" border="1" cellspacing="0" cellpadding="0">

<?php include("blocks/header.php")?>

<tr>
<td><div align="center"><a href="index.php">Главная</a>
<a href="page1.php">Страница 1</a>
<a href="page/page2.php">Страница 2</a></div></td>
</tr>
<tr>
<td><div align="center"><strong>Страница 1</strong></div></td>
</tr>
<tr>
<td>Footer</td>
</tr>
</table>

5 тело page2.php

<table width="95%" border="1" cellspacing="0" cellpadding="0">

<?php include("../blocks/header.php")?>

<tr>
<td><div align="center"><a href="../index.php">Главная</a>
<a href="../page1.php">Страница 1</a>
<a href="#page2.php">Страница 2</a></div></td>
</tr>
<tr>
<td><div align="center"><strong>Страница 2</strong></div></td>
</tr>
<tr>
<td>Footer</td>
</tr>
</table>
Здравствуйте.
Помогите решить один вопрос.
При создании сайта после того, как разбил его на php блоки возникла следующая проблема.
Разбил на следующие блоки которые поместил в отдельную папку blocks:
1. шапка header.php
2. меню navig.php
3. футер futer.php
Если их подключать в страницах которые находятся в корне сайта, то все работает ( блоки подключаются и все отображается ).
Подключал следующим образом:
1. Для главной страница index.php
<?php include("blocks/header.php");?>

Если подключать в страницах которые находятся в каком-либо каталоге, то блоки подключаются ( решил так, потому, что сервер не выдает никаких ошибок ), но сами блоки на страницах не отображаются.
Подключал следующим образом:
2. Для страниц в каталоге
<?php include("../blocks/header.php")?>
<?php include("../../blocks/header.php")?>
И т.д.

Пожалуйста помогите найти ответ.

Подключаемые блоки должны начинаться с "<?php .... ?>"
то есть если в них будет просто
echo $xxx;
то это неправильно. нужно так:
<?php
echo $xxx;
?>

Думаю потому они и не отображаются.

Цитата:
Сообщение от Милый Враг
Подключаемые блоки должны начинаться с "<?php .... ?>"
то есть если в них будет просто
echo $xxx;
то это неправильно. нужно так:
<?php
echo $xxx;
?>

Думаю потому они и не отображаются.
не всегда, темболее в одно случае отображаются, в другом нет.

Цитата:
Сообщение от Gravity
По-моему блоки нужно сохранять с расширением .inc
Не обязательно в таком расширении! в любом, лиш бы сам блок начинался
<?php
и заканчивался
?>

Имейте ввиду, что если главный скрипт находится в папке C:httpindex.php, а из него вы подключаете какой-нибудь C:httpincludeheader.php (например, через require "include/header.php"; ), то все ссылки в самом header.php будут идти относительно папки C:http (где находится главный файл).
Цитата:
Сообщение от Gravity
По-моему блоки нужно сохранять с расширением .inc
Скорее наоборот... лучше в php. Вдруг, кто-то в строке браузера впишет имя этого подключаемого файла. Если он будет .php, то пользователь увидит только результат его исполнения. Но если файл будет .inc, то весь этот файл скачается целиком... а это будет угрозой безопасности, т.к. злоумышленник может проанализировать скрипт и найти в нём слабое место.
Конечно, можно запретить доступ к этим файлам... но не всегда есть возможность изменить настройки сервера... или можно попросту забыть сделать это.