Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 718
от 21.07.2007, 05:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 430, Экспертов: 66
В номере:Вопросов: 1, Ответов: 3


Вопрос № 95207: Здравствуйте. У меня стоит PHP Version 4.4.4. Я планирую такую структуру. К главному файлу в самом начале подключается файл main.php, содержащий набор базовых переменных сайта. Потом подключающиеся остальные файлы должны эти базо...

Вопрос № 95.207
Здравствуйте.
У меня стоит PHP Version 4.4.4.
Я планирую такую структуру.
К главному файлу в самом начале подключается файл
main.php, содержащий набор базовых переменных сайта.
Потом подключающиеся остальные файлы должны эти базовые переменные использовать.

Пример кода:
main.php

<?php
define('SERVERURL',"http://test2.ru");
?>

index.php

<?php
include_once("main.php");
?>
<html>
<head>

<?php
include(SERVERURL."/templates/head.php");
?>

</head>
</html>

/templates/head.php

<title>
123
</title>
<!-- CSS -->
<link href="<?php echo SERVERURL; ?>/css/main.css" rel="stylesheet" type="text/css" />
<!-- / CSS -->

На что выдается ошибка:
Use of undefined constant SERVERURL - assumed 'SERVERURL' in z:home est2.ruwww emplateshead.php

Я думаю, что проблема связана с приципом обработки данных в php.
Подскажите, пожалуйста, как исправить эту ситуацию, потому что в каждом файле, который надо include(), делать внутри еще много include(), по-моему не рационально.
Отправлен: 15.07.2007, 16:31
Вопрос задал: Кривоносов Олег Юрьевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Селев Валерий
Здравствуйте, Кривоносов Олег Юрьевич!

В файле index.php,

вместо

<?php
include(SERVERURL."/templates/head.php");
?>

пишите

<?php
include("/templates/head.php");
?>

Ваш вариант делает include результата работы скрипта http://test2.ru/templates/head.php, а не его исходного кода.
Если просто запустить http://test2.ru/templates/head.php, он ничего не знает о константе SERVERURL.
Ответ отправил: Селев Валерий (статус: 5-ый класс)
Ответ отправлен: 15.07.2007, 16:40

Отвечает: Flynn
Здравствуйте, Кривоносов Олег Юрьевич!
Основная ошибка у тебя в том, что ты инклюдишь файлы через http - этого делать не стоит. То, что css грузится через него - правильно, а вот подключать модули - нет.
Просто перед каждым инклюдом ставь точку. Либо же замени свой define('SERVERURL',"http://test2.ru"); на define('SERVERURL',"."); Тогда все работает.
Так же посоветовал бы разобраться с шаблонизаторами (smarty, xtpl,...) - не потребуется выдумывать велосипед заново.
Ответ отправил: Flynn (статус: 2-ой класс)
Ответ отправлен: 15.07.2007, 20:54

Отвечает: Magister
Здравствуйте, Кривоносов Олег Юрьевич!
Несколько вариантов:
1. в файле php.ini директиве "auto_prepend_file" присвоить имя подключаемого файла.
Правда эта директива будет работать для ВСЕХ php-скриптов, да и хостинг-провайдеры не разрешают менять настройки в php.ini. А посему еще вариант:

2. отредактировать файл .htaccess в корневой директории сайта php_value auto_prepend_file имя_файла

3. в php-скрипте: ini_set("auto_prepend_file", "имя_файла")

---------
Aquila non Capta Muscas
Ответ отправил: Magister (статус: 1-ый класс)
Ответ отправлен: 15.07.2007, 22:11
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.53 beta от 09.07.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное