Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Управление сайтом
Форумы портала PHP.SU » Разное » Обсуждение статей » Управление сайтом

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

1. СЕРьГА - 18 Июля, 2011 - 22:17:15 - перейти к сообщению
Фрагмент статьи:

Теперь создадим файл 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>";

?>
2. DeepVarvar - 19 Июля, 2011 - 01:06:13 - перейти к сообщению
Блиин. Как-то все написано мутновато..
Попробую обьяснить сам, объясню на ином примере, но главное чтобы до тебя дошло как оно реботает:
Конфиг нафик не нужен.
Создай в корне сайта папку "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>

Больше комментариев получилось...
Файл в аттаче.
3. СЕРьГА - 19 Июля, 2011 - 14:22:34 - перейти к сообщению
Сделал, как вы сказали, но у меня в браузере появилась какая-то абракадабра(
4. DeepVarvar - 19 Июля, 2011 - 14:25:02 - перейти к сообщению
Кодировку в браузере менять пробовали?
5. СЕРьГА - 19 Июля, 2011 - 14:32:29 - перейти к сообщению
А, поменял. Вверху значит четыре ссылки (1,2,3,4), нажимаю например на 1 и выводит почему-то вот что:

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

хотя файлы в папке data есть.
6. DeepVarvar - 19 Июля, 2011 - 14:41:03 - перейти к сообщению
Перед тем как положить архив сюда, я его проверял.
7. СЕРьГА - 19 Июля, 2011 - 14:41:32 - перейти к сообщению
ой, извините, поожалуйста! просто я index.php тоже в папку data добавил, а надо было в корень)
(Добавление)
ну допустим с форматом txt понятно, а как же быть с другими форматами? Я вот сейчас попробовал то же самое проделать с html, но не получилось.
8. DeepVarvar - 19 Июля, 2011 - 15:38:17 - перейти к сообщению
Для того чтобы читало *html файлы:
заменить в строке 12: glob("data/*.txt") на glob("data/*.html")
9. СЕРьГА - 19 Июля, 2011 - 16:02:59 - перейти к сообщению
DeepVarvar пишет:
Для того чтобы читало *html файлы:
заменить в строке 12: glob("data/*.txt") на glob("data/*.html")


Ну это-то сделать я догадался, но выходит только главная страница(
(Добавление)
извините, просто у меня хтмл-файлы назывались не 1.html, 2.html..., а main.html, about.html... Ну вот я и пытался, заменить в index.php номера страниц на названия, но не получилось. Скажите, а с названиями страниц никак нельзя это сделать? И как добавить туда header.php и footer.php
10. DeepVarvar - 21 Июля, 2011 - 16:24:32 - перейти к сообщению
СЕРьГА пишет:
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");
11. СЕРьГА - 21 Июля, 2011 - 17:28:20 - перейти к сообщению
Спасибо большое, но вот с хедером не получилось(( Выводит вот что:

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 должен быть в папке дата. Ещё раз спасибо!

 

Powered by ExBB FM 1.0 RC1