|
|
|
|
|
для: 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';
?>
|
Вроде всё | |
|
|
|
|
|
|
|
для: dedev
(01.11.2006 в 10:30)
| | рекламная пауза :) http://www.softtime.ru/info/homecms.php | |
|
|
|
|
|
|
|
для: 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
(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);
?>
|
| |
|
|
|
|
|
|
|
для: Я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
(30.10.2006 в 18:14)
| | без цикла:
$array = sqlite_fetch_array($res);
echo("<title>".@$array['title']."</title>");
|
| |
|
|
|
|
автор: dedev (30.10.2006 в 18:14) |
|
|
для: ЯR
(30.10.2006 в 17:11)
| | >А зачем в цикле выводить? Ведь для каждой странице только одна запись в таблице
подскажите как лучше | |
|
|
|
|
|
|
|
для: dedev
(30.10.2006 в 15:57)
| | А зачем в цикле выводить? Ведь для каждой странице только одна запись в таблице | |
|
|
|
|
автор: 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 в 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.' не найден на сервере, обратитесь к администратору... ';
?>
|
| |
|
|
|
|