PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вопрос по статье "Управление сайтом"
СЕРьГА
Отправлено: 18 Июля, 2011 - 22:17:15
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Фрагмент статьи:

Теперь создадим файл config.php, его формат:

адрес_главной_страницы|мета-теги

адрес_n-ой_страницы|мета-теги

первая строчка – для главной страницы. Под мета-тегами я подразумеваю, то что будет вставляться в <head></head> страницы. Пример:

main.html|<title>Главная страница</title>

about.html|<title>О Фирме</title>

works.html|<title>Работы</title>

contacts.html|<title>Контакты</title>

а ниже написано вот что:

Все адреса страниц указанные в файле config.php, ниже первой строчки вы можете вызвать с помощью скрипта, например так: http://xonix[dot]ru/site/index.php?page=1 – это приведет к вставке в середину страницы содержания файла указанного во второй строке файла config.php; http://xonix[dot]ru/site/index.php?page=2 - к использованию третьей строчки из файла config.php.

но у меня кроме главной страницы ничего не выводится, хотя я создал все нужные html-файлы с указанными метатегами. То есть после шапки всегда выводит только главную страницу и footer,php не выводит. А вот скрипт index.php, который и должен управлять сайтом:

<?php

if (!isset($page)) $page=0;

$data=file("config.php");

$max=count($data);

if ($page >$max) $page=0;

if (ereg("[[:alpha:]]",$page)) $page=0;

$data=explode("|",$data[$page]);

echo "<html><head>$data[1]</head><body>";

include("header.php");

include("$data[0]");

include("footer.php");

echo "</body></html>";

?>
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июля, 2011 - 01:06:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 10378
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Блиин. Как-то все написано мутновато..
Попробую обьяснить сам, объясню на ином примере, но главное чтобы до тебя дошло как оно реботает:
Конфиг нафик не нужен.
Создай в корне сайта папку "data", в нее положи четыре файла с любым текстом внутри,
а вот названия файлов сделай такими: 1.txt, 2.txt, 3.txt, 4.txt .

теперь в корень клади файл index.php с таким вот содержанием:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. // самое главное в php: сначала расчеты - потом вывод
  4. // так и мы сделаем
  5.  
  6. // файлов пока нет
  7. $max = 0;
  8. // а страницу мы сразу определим
  9. $page = 1;
  10.  
  11. // вот так мы посчитали сколько файлов *.txt в папке "data"
  12. foreach (glob("data/*.txt") as $filename) $max++;
  13.  
  14. // я преднамеренно убрал ограничение что она меньше или равна $max
  15. // чтобы выводить ошибку на отсутствие файла,
  16. // так обычно с базами данных делают...
  17. // если есть $_GET['page'] и она больше ноля
  18. if (isset($_GET['page']) and $_GET['page']+0 > 0) {
  19.   // тогда переопределяем $page
  20.   $page = $_GET['page'];
  21.   }
  22.  
  23. // у нас точно есть переменная $page
  24. $file = "data/".$page.".txt";
  25.  
  26. // проверим, а есть ли такой файл, вдруг его уже удалили?
  27. if (file_exists($file)) {
  28.   // есть, значит его мы выведем
  29.   $title = "Прочитано из файла ".$page.".txt";
  30.   $content = file_get_contents($file);
  31.   }
  32. else {
  33.   // файла нету, выведем ошибку
  34.   $title = "Файл ".$page.".txt не существует";
  35.   $content = "<h3>".$title."</h3>";
  36.   }
  37.  
  38. ?>
  39. <html>
  40. <head>
  41. <title><?PHP echo $title; ?></title>
  42. </head>
  43. <body>
  44. <a href="?page=1">1</a>
  45. <a href="?page=2">2</a>
  46. <a href="?page=3">3</a>
  47. <a href="?page=4">4</a>
  48. <h1>Всего файлов: <?PHP echo $max; ?></h1>
  49. <?PHP echo $content; ?>
  50. </body>
  51. </html>

Больше комментариев получилось...
Файл в аттаче.
Скачать файл: xy.zip
Скачан раз: 127
 
 Top
СЕРьГА
Отправлено: 19 Июля, 2011 - 14:22:34
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Сделал, как вы сказали, но у меня в браузере появилась какая-то абракадабра(
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июля, 2011 - 14:25:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 10378
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Кодировку в браузере менять пробовали?
 
 Top
СЕРьГА
Отправлено: 19 Июля, 2011 - 14:32:29
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




А, поменял. Вверху значит четыре ссылки (1,2,3,4), нажимаю например на 1 и выводит почему-то вот что:

Всего файлов: 0
Файл 1.txt не существует

хотя файлы в папке data есть.
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июля, 2011 - 14:41:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 10378
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Перед тем как положить архив сюда, я его проверял.
 
 Top
СЕРьГА
Отправлено: 19 Июля, 2011 - 14:41:32
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




ой, извините, поожалуйста! просто я index.php тоже в папку data добавил, а надо было в корень)
(Добавление)
ну допустим с форматом txt понятно, а как же быть с другими форматами? Я вот сейчас попробовал то же самое проделать с html, но не получилось.

(Отредактировано автором: 19 Июля, 2011 - 15:35:14)

 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июля, 2011 - 15:38:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 10378
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Для того чтобы читало *html файлы:
заменить в строке 12: glob("data/*.txt") на glob("data/*.html")
 
 Top
СЕРьГА
Отправлено: 19 Июля, 2011 - 16:02:59
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




DeepVarvar пишет:
Для того чтобы читало *html файлы:
заменить в строке 12: glob("data/*.txt") на glob("data/*.html")


Ну это-то сделать я догадался, но выходит только главная страница(
(Добавление)
извините, просто у меня хтмл-файлы назывались не 1.html, 2.html..., а main.html, about.html... Ну вот я и пытался, заменить в index.php номера страниц на названия, но не получилось. Скажите, а с названиями страниц никак нельзя это сделать? И как добавить туда header.php и footer.php
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Июля, 2011 - 16:24:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 10378
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




СЕРьГА пишет:
main.html, about.html

Девятая строка должна быть такой: $page = "main";

Восемнадцатая: if (isset($_GET['page']) and trim($_GET['page']) != "") {

Двадцатая: $page = trim($_GET['page']);

СЕРьГА пишет:
добавить туда header.php и footer.php

В нужном месте index.php пишем: require_once("header.php");
 
 Top
СЕРьГА
Отправлено: 21 Июля, 2011 - 17:28:20
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Спасибо большое, но вот с хедером не получилось(( Выводит вот что:

Warning: require_once(header.php) [function.require-once]: failed to open stream: No such file or directory in Z:\home\localhost\www\site\index.php on line 42

Fatal error: require_once() [function.require]: Failed opening required 'header.php' (include_path='.;/usr/local/php5/PEAR') in Z:\home\localhost\www\site\index.php on line 42
(Добавление)
А, опять я думал, что header.php должен быть в папке дата. Ещё раз спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB