|
автор: dedev (30.10.2006 в 11:27) |
|
| Хотелось бы как-то автоматизировать и облегчить себе работу.
Опыта мало, имею код, но проблема с добавлением мета-тегов к каждой странице, страниц много, поэтому писать мета-теги в главной станице для всего сайта не удобно.
<?php
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
$file=$go.'.htm';
}
else $file='main.htm'; //страница main.htm если переменная
// $go не задана, иначе файл типа .htm с именем $go
if (file_exists($file)) //если файл существует
include ($file); // добавляем страницу
else
echo 'Файл '.$file.' не найден на сервере, обратитесь к администратору... ';
?>
|
Если есть более элегантное решение и код безопасного мини-движка не засекречен, хотелось бы посмотреть, а по возможности и воспользоваться.
P.S. нужен мини-мини-движок
P.P.S. В приведенном коде мне импонирует то, что все находится в одном файле и оттуда происходит вызов всех остальных страниц. Да и с безопасностью в приведенном коде вроде все более-менее.
Спасибо. | |
|
|
|
|
|
|
|
для: dedev
(30.10.2006 в 11:27)
| | Возможно мне только так кажется, но вроде бы здесь используется РЕГИСТЕР_ГЛОБАЛ=ОН... а он сам по себе не безопасен | |
|
|
|
|
автор: dedev (30.10.2006 в 12:49) |
|
|
для: DEM
(30.10.2006 в 12:18)
| | >Возможно мне только так кажется, но вроде бы здесь используется РЕГИСТЕР_ГЛОБАЛ=ОН... а он сам по себе не безопасен
Знаний на большее пока не хватает, поэтому и обратился
С увеличением опыта и знаний будем изменять и улучшать, а пока имею то, что имею | |
|
|
|
|
|
|
|
для: dedev
(30.10.2006 в 11:27)
| | Ваш движок использует базу данных? | |
|
|
|
|
|
|
|
для: cheops
(30.10.2006 в 12:29)
| | Если да, то делай как я говорил. | |
|
|
|
|
автор: dedev (30.10.2006 в 12:54) |
|
|
для: ЯR
(30.10.2006 в 12:31)
| | >Если да, то делай как я говорил.
<?php
$db = sqlite_open("metadata.db");
if ($query = sqlite_query($db, "SELECT * FROM metadata WHERE page='".str_replace("'", "`", $_SERVER['REQUEST_URI'])."'")) {
if (sqlite_num_rows($query) > 0) {
$meta_data = sqlite_fetch_array($query);
$title = $meta_data;
}
}
print "<title>{$title}</title>";
?>
|
Пишет переменная неопределенна | |
|
|
|
|
|
|
|
для: dedev
(30.10.2006 в 12:54)
| |
<?php
$db = sqlite_open("metadata.db");
if ($query = sqlite_query($db, "SELECT * FROM metadata WHERE page='".str_replace("'", "`", $_SERVER['REQUEST_URI'])."'")) {
if (sqlite_num_rows($query) > 0) {
$meta_data = sqlite_fetch_array($query);
$title = $meta_data['title']; // наверное надо так
}
}
print "<title>{$title}</title>";
?>
|
| |
|
|
|
|
автор: dedev (30.10.2006 в 12:45) |
|
|
для: cheops
(30.10.2006 в 12:29)
| | Пока нет, у меня есть куча статичных страниц.
И код приведенный выше, который я хочу прикрутить к своим страницам или наоборот станицы прикрутить к приведенному коду
Поэтому я в поиски достаточного простого, элегантного и безопасного движка | |
|
|
|
|
автор: dedev (30.10.2006 в 13:38) |
|
|
для: dedev
(30.10.2006 в 12:45)
| | Нельзя ли чуть подправить
При загрузки главной страницы заголовок title не отображается
<?php
$titles[] = 'Сайт';
$titles['news'] = 'Новости';
$titles['articles'] = 'Статьи';
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
if(preg_match('#^([a-z0-9_]+)/[a-z0-9_\.]+$#iU', $go, $regs)) $dir_name = $regs[1];
else $dir_name = 0;
print "<title>{$titles[$dir_name]}</title>";
// и т.д.
}
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
$file=$go.'.htm';
}
else $file='main.htm'; //страница main.htm если переменная
// $go не задана, иначе файл типа .htm с именем $go
if (file_exists($file)) //если файл существует
include ($file); // добавляем страницу
else
echo 'Файл '.$file.' не найден на сервере, обратитесь к администратору... ';
?>
|
С базой данных буду разбираться на досуге, ориентир уже есть.
Помогите пожалуйста с приведенным кодом | |
|
|
|
|
|
|
|
для: dedev
(30.10.2006 в 13:38)
| |
<?php
$titles['main'] = 'Сайт';
$titles['news'] = 'Новости';
$titles['articles'] = 'Статьи';
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
if(preg_match('#^([a-z0-9_]+)/[a-z0-9_\.]+$#iU', $go, $regs)) $dir_name = $regs[1];
if(empty($dir_name)) $dir_name = 'main';
print "<title>{$titles[$dir_name]}</title>";
// и т.д.
}
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
$file=$go.'.htm';
}
else $file='main.htm'; //страница main.htm если переменная
// $go не задана, иначе файл типа .htm с именем $go
if (file_exists($file)) //если файл существует
include ($file); // добавляем страницу
else
echo 'Файл '.$file.' не найден на сервере, обратитесь к администратору... ';
?>
|
| |
|
|
|
|
автор: dedev (30.10.2006 в 15:57) |
|
|
для: ЯR
(30.10.2006 в 14:49)
| | сделал с базой
<?php
// Создадим новую базу данных
$db = sqlite_open("metadata.db");
// Сделаем выборку данных
$res = sqlite_query($db, "SELECT * FROM metadata WHERE page = '".@$go."';");
// В цикле выведем все полученные данные
while ($array = sqlite_fetch_array($res))
{
echo("<title>".@$array['title']."</title>");
}
?>
|
вроде работает
как ды этот код оптимизировать, если возможно | |
|
|
|
|
|
|
|
для: dedev
(30.10.2006 в 15:57)
| | А зачем в цикле выводить? Ведь для каждой странице только одна запись в таблице | |
|
|
|
|
автор: dedev (30.10.2006 в 18:14) |
|
|
для: ЯR
(30.10.2006 в 17:11)
| | >А зачем в цикле выводить? Ведь для каждой странице только одна запись в таблице
подскажите как лучше | |
|
|
|
|
|
|
|
для: dedev
(30.10.2006 в 18:14)
| | без цикла:
$array = sqlite_fetch_array($res);
echo("<title>".@$array['title']."</title>");
|
| |
|
|
|
|
|
|
|
для: ЯR
(30.10.2006 в 18:26)
| | Подскажите как сделать, чтобы вместо последней строчки “Файл не найден на сервере, обратитесь к администратору...”, вызывался другой файл методом include
<?php
//движок
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
$file=$go.'.htm';
}
else $file='main.htm'; //страница main.htm если переменная
// $go не задана, иначе файл типа .htm с именем $go
if (file_exists($file)) //если файл существует
include ($file); // добавляем страницу
else
echo 'Файл не найден на сервере, обратитесь к администратору... ';
?>
|
| |
|
|
|
|
|
|
|
для: dedev
(31.10.2006 в 23:07)
| |
<?php
//движок
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
$file=$go.'.htm';
}
else $file='main.htm'; //страница main.htm если переменная
// $go не задана, иначе файл типа .htm с именем $go
if (file_exists($file)) //если файл существует
include ($file); // добавляем страницу
else
include ($file2);
?>
|
| |
|
|
|
|
|
|
|
для: DEM
(31.10.2006 в 23:10)
| | Подскажите, имеет ли право на жизнь этот код, я понимаю, что каждый сам себе хозяин, но все-таки хотелось услышать мнение специалистов, о более правильной, более безопасной организации мини движка. С удовольствием выслушаю, конструктивную критику и приму советы по улучшению своего мини движка.
Ссылки оптимизированы при помощи mod_rewrite
<html><head>
<link rel="stylesheet" type="text/css" href="/inc/stily.css">
<?php
// Создадим новую базу данных
$db = sqlite_open("sity.db");
// Сделаем выборку данных
$res = sqlite_query($db, "SELECT * FROM metadata WHERE page = '".@$go."';");
// В цикле выведем все полученные данные
$array = sqlite_fetch_array($res);
echo("<title>".@$array['title']."</title>\n");
echo("<META content='".@$array['title']."' name=description>\n");
echo("<META content='".@$array['title']."' name=keywords>");
?>
<center>шапка</center><br>
<?php
// верхняя навигация
$titles['qqq'] = '<p align="right"><a href="/index.html">главная</a> / <a href="index.htm">новости</a></p>';
$titles['test'] = '<p align="right"><a href="/index.html">главная</a> / <a href="index.htm">онлайн тесты</a></p>';
$titles['articles'] = 'Статьи ';
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
if(preg_match('#^([a-z0-9_]+)/[a-z0-9_\.]+$#iU', $go, $regs)) $dir_name = $regs[1];
@print "{$titles[$dir_name]}";
}
?>
<table width="100%" border="0" cellpadding="10" cellspacing="0">
<tr><td width="150" class="cl" valign="top">
<a href="/index.html">Главная</a><br>
<a href="/test/1.htm">Онлайн тест</a><br>
<a href="/qqq/foto.htm">Мои фотки</a><br>
<a href="/gues.htm">Гостевая</a><br>
<a href="/qqq/tvor.htm">Мое творчество</a><br>
</td><td>
<?php
//движок
$file1 = 'error.htm';
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
$file=$go.'.htm';
}
else $file='main.htm'; //страница main.htm если переменная
// $go не задана, иначе файл типа .htm с именем $go
if (file_exists($file)) //если файл существует
include ($file); // добавляем страницу
else
include ($file1); // если не найдена страница
?>
</td></tr></table>
<br><center>подвал</center>
</body></html>
|
| |
|
|
|
|
|
|
|
для: dedev
(01.11.2006 в 10:30)
| | рекламная пауза :) http://www.softtime.ru/info/homecms.php | |
|
|
|
|
|
|
|
для: dedev
(01.11.2006 в 10:30)
| | 1) надо переменную $go защищать примерно так (она ведь из URL берётся?):
<?php
if (get_magic_quotes_gpc()) $var = stripslashes($var); // убираем обратные слэши
// а перед запрос в БД надо делать так (чтобы защититься от SQL-инъекции):
$res = sqlite_query($db, "SELECT * FROM metadata WHERE page = '".sqlite_escape_string(@$go)."';");
?>
|
2) А почему в title, keywords и description одна и таже переменная, так и надо?
3) Верхнюю навигацию можно так же, как и meta-данные занести в БД (будет удобнее ИМХО)
4)
<?php
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
if(preg_match('#^([a-z0-9_]+)/[a-z0-9_\.]+$#iU', $go, $regs)) $dir_name = $regs[1];
@print "{$titles[$dir_name]}";
}
// ...
//движок
$file1 = 'error.htm';
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go)){
$file=$go.'.htm';
}
else $file='main.htm'; //страница main.htm если переменная
// $go не задана, иначе файл типа .htm с именем $go
// тут лучше сразу сделать так:
$file1 = 'error.htm';
if(isset($go) && preg_match('#^([a-z0-9_]+/)?[a-z0-9_\.]+$#iU', $go, $regs)){
$dir_name = $regs[1];
$file=$go.'.htm';
@print "{$titles[$dir_name]}";
}else $file='main.htm';
?>
|
Вроде всё | |
|
|
|