Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как "базонезависимо" прочитать файл на PHP?

367
26 марта 2008 года
Meatcoins
303 / / 18.01.2006
Проблема в следующем:
Имеется сайт. Соответственно у него много страничек. Использовать frames очень нежелательно. На этих страничках есть повторяющиеся элементы, которые практически одинаковые на всех страничках (в основном это меню). При изменении сайта (добавление и удаление страничек) надо менять меню! Соответственно надо менять везде!!! А это рехнуться можно! Хотелось бы впихнуть все общие элементы в 1 файл или в несколько файлов, например, текстовых, а в страничках написать что-то типа этого:
 
Код:
<?php
    $filename="glmenu.txt";
    $handle=fopen($filename, "r");
    $st = fread($handle, filesize($filename));
    fclose($handle);
    echo ($st);
?>

Базонезависимость нужна понятно зачем - я это отлаживаю у себя на компе, а потом переношу на сервер. glmenu.txt у меня, например, на E:\php\...\glmenu.txt, а на сервере что-то типа httpdocs\glmenu.txt!
Нашёл функцию getcwd, но она почему-то возвращает c:\
Фигня какая-то...
P.S.
PHP знаю не очень... Просто много других языков знаю... поэтому могу... что-то...
276
26 марта 2008 года
Rebbit
1.1K / / 01.08.2005
У меня (и не только) есть файл с конфигом.
Туда прописываем урл к сайту, физический путь к папке сайта и т.п..
 
Код:
define('BASE_URL', 'http://localdev.sitename/');
define('PATH', 'z:/home/localdev.sitename/www/');
Етот конфиг цепляется ко всем скриптам а дальше
 
Код:
$t = new Templator(PATH.'templates/index.tpl');
21K
26 марта 2008 года
per%cent
39 / / 05.10.2007
[quote=Meatcoins]...glmenu.txt у меня, например, на E:\php\...\glmenu.txt, а на сервере что-то типа httpdocs\glmenu.txt...[/QUOTE]
а если использовать относительные а не абсолютные пути?
244
26 марта 2008 года
UAS
2.0K / / 19.07.2006
или использовать $_SERVER['DOCUMENT_ROOT'];

насчет статичных элементов - так это основа.. берешь один файл-статик, и в него закидываешь какой-то набор символов, который будешь заменять на нужное. В итоге при правке надо будет править всего один файл. Короче, почитай статью про использование шаблонов
276
26 марта 2008 года
Rebbit
1.1K / / 01.08.2005
Цитата: UAS
или использовать $_SERVER['DOCUMENT_ROOT'];


Я бы не советовал часто DOCUMENT_ROOT использовать. привязывает к структуре папок проекта.
DOCUMENT_ROOT удобно использовать в самом конфиге (чтоб не переконфижывать много). Я его также использую для инклуда одного глобального файла. А даже если и использовать то лутше врапнуть функцией. Тогда свою папку с проектом можно кинуть внуть другого проекта в любое место.

Цитата: per%cent
а если использовать относительные а не абсолютные пути?


ИМХО Относительные пути - зло.

21K
26 марта 2008 года
per%cent
39 / / 05.10.2007
еще один вариант - через SSI ;)
244
26 марта 2008 года
UAS
2.0K / / 19.07.2006
Цитата: Rebbit
Я бы не советовал часто DOCUMENT_ROOT использовать. привязывает к структуре папок проекта.


а как можно создать проект, где расплывчатая структура?

У меня вообще в конфиге моей CMS так прописано:

 
Код:
define("PATH_ROOT",$_SERVER['DOCUMENT_ROOT']."");
367
26 марта 2008 года
Meatcoins
303 / / 18.01.2006
Я просто ещё пока не очень знаю PHP и все его тонкости, может я что-то пока не понимаю, но я нашёл вот такой способ:
 
Код:
$filename=__FILE__;
    $filename=dirname($filename);
    $filename.="/glmenu.txt";
    $handle=fopen($filename, "r");
    $st = fread($handle, filesize($filename));
    fclose($handle);
    echo ($filename);
    #echo ($st);

Результат:
E:\PHP/glmenu.txt

А вот это выдаёт c:\
 
Код:
$filename=getcwd();
   echo ($filename);

Хотя по логике должно выдать тоже самое!!!
И так тоже C:\
 
Код:
$filename=realpath(".");
    echo ($filename);

Почему C:\ ???

[quote=per%cent]
а если использовать относительные а не абсолютные пути?
[/quote]
Я бы рад, но почему-то функция fopen($filename, "r"); даёт ошибку!
И я не знаю почему!

У меня просто как всё:
Есть сайт. Там куча htm-страничек. index в корневой директории + несколько основных, а остальные в верхних директориях.

Вот. И мне бы хотелось общие элементы прикрепить бы к какому-то единому файлу. Причём надо обеспечить базонезависимость.

Может я не прав, но у меня пока такая мысль: программно определить абсолютный путь и по определённому абсолютному пути читать файл.
Может это и не рационально.

А если я сделаю вот так:
 
Код:
define("PATH_ROOT",$_SERVER['DOCUMENT_ROOT']."");

Или так:
 
Код:
define('PATH', 'z:/home/localdev.sitename/www/');

А потом эту константу PATH я буду использовать во всех fopen();???
То мне в каждой htm-страничке надо будет это вставить перед тегом <html>, например.
Не придётся ли мне писать какую-то утилиту, которая бы перед отправкой всего этого на сервер, переправляла бы эти строки???

Как лучше?
244
26 марта 2008 года
UAS
2.0K / / 19.07.2006
Цитата: Meatcoins
Как лучше?


Не извращаться и не морочить мозги присобачиванием этого fopen ко всем html, а переделать ведь сайт из статики в динамику. Короче на движок перейти

367
27 марта 2008 года
Meatcoins
303 / / 18.01.2006
Цитата:
Не извращаться и не морочить мозги присобачиванием этого fopen ко всем html, а переделать ведь сайт из статики в динамику. Короче на движок перейти


А это как?

244
27 марта 2008 года
UAS
2.0K / / 19.07.2006
Ну почитай в сети про шаблоны. Контент всех статей заносишь в какую-то БД. Пишешь движок, делаешь общий шаблон, потом в каком-то скрипте открываешь шаблон и в него вставляешь данные..

Эххх. Плохо я умею объяснять(
http://www.codenet.ru/webmast/php/Templates-About.php
http://www.google.ru/search?aq=f&complete=1&hl=ru&newwindow=1&q=%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B+PHP&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
367
28 марта 2008 года
Meatcoins
303 / / 18.01.2006
Смысл такой, что берём что-то типа этого:
 
Код:
<html>
<head>{TITLE}</head>
<body bgcolor={BGCOLOR}>

{SOMETPLTAGS}

</body>
</html>

А потом {...} заменяем на html с помощью php!
Ну понятна идея.
Я немного не так сделал, но нечто похожее на это - написал утилиту, которая меняет строки во всех файлах и вставляю туда php...
Смысл понятен...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог