Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Подскажите, безопасен ли этот код?

Сообщения:  [1-10]    [11-20]  [21-30] 

 
 автор: dedev   (01.11.2006 в 10:32)   письмо автору
 
   для: Unkind™   (30.10.2006 в 15:03)
 

тема обсуждается здесь
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=26884

   
 
 автор: Unkind™   (30.10.2006 в 15:03)   письмо автору
 
   для: dedev   (30.10.2006 в 12:37)
 

пишет Notice: Undefined variable: title in z:\home\test1.ru\www\index.html on line 10
Значит sqlite_num_rows($query) <= 0, либо запрос $query неудачен.
Вместо

<?php
$var 
str_replace("'""`"$_SERVER['REQUEST_URI']);
?>

Лучше писать

<?php
$var 
mysql_escape_string($_SERVER['REQUEST_URI']);
?>

   
 
 автор: dedev   (30.10.2006 в 12:37)
 
   для: ЯR   (30.10.2006 в 12:18)
 

SQLite

<?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>";  
?>  

пишет Notice: Undefined variable: title in z:\home\test1.ru\www\index.html on line 10

   
 
 автор: ЯR   (30.10.2006 в 12:25)   письмо автору
 
   для: dedev   (30.10.2006 в 11:39)
 


<?php  
$go 
$_GET['go'];
$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.' не найден на сервере, обратитесь к администратору... ';         
?> 

   
 
 автор: ЯR   (30.10.2006 в 12:18)   письмо автору
 
   для: dedev   (30.10.2006 в 11:09)
 


CREATE TABLE metadata (
  id_page int(11) NOT NULL auto_increment,
  page tinytext,
  title tinytext,
  keywords tinytext,
  description text,
  PRIMARY KEY  (id_page)
) ENGINE=MyISAM;

   
 
 автор: dedev   (30.10.2006 в 11:39)
 
   для: dedev   (30.10.2006 в 11:09)
 

Нельзя ли чуть подправить
При загрузки главной страницы заголовок 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 в 11:09)
 
   для: ЯR   (30.10.2006 в 06:15)
 

моих знаний, к сожалению не хватает
буду выкручиваться без мета-тегов
спасибо

P.S. Не могли бы вы привести структуру таблиц для этого кода

<?php 
if ($query mysql_query("SELECT * FROM metadata WHERE page='".str_replace("'""`"$_SERVER['REQUEST_URI'])."'")) { 
        if (
mysql_num_rows($query) > 0) { 
            
$meta_data mysql_fetch_array($query); 
            
$title $meta_data[]; 

        } 

print 
"<title>{$title}</title>"
?> 

   
 
 автор: ЯR   (30.10.2006 в 06:15)   письмо автору
 
   для: dedev   (30.10.2006 в 01:05)
 

> Жаль, что для этого кода нельзя сделать добавление мета-тегов к каждой странице,
На моих сайтах meta-данные хранятся в базе данных, и выбираются в зависимости от запрашиваемого uri ($_SERVER['REQUEST_URI']), т.е. примерно так:

<?php
if ($query mysql_query("SELECT * FROM metadata WHERE page='".str_replace("'""`"$_SERVER['REQUEST_URI'])."'")) {
        if (
mysql_num_rows($query) > 0) {
            
$meta_data mysql_fetch_array($query);
            
$title $meta_data[];

        }
}
print 
"<title>{$title}</title>";
?>

можете так же сделать

   
 
 автор: dedev   (30.10.2006 в 01:05)
 
   для: ЯR   (29.10.2006 в 23:03)
 

Жаль, что для этого кода нельзя сделать добавление мета-тегов к каждой странице, ну все равно спасибо Вам за помощь.
Тему можно закрыть
Еще раз всем спасибо

<?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.' не найден на сервере, обратитесь к администратору... ';       
?>

   
 
 автор: ЯR   (29.10.2006 в 23:03)   письмо автору
 
   для: dedev   (29.10.2006 в 22:43)
 

Принято разбивать страницу на модули.
Как минимум на шапку, содержание и подвал.
тогда код страниц выглядит так

<?php
$title 
'Заголовок';
include(
'inc/header.php'); // включаем шапку

// тут содержание страницы

include('inc/footer.php'); // включаем подвал
?>


<?php
// header.php
?>
<html>
<head>
<title><?php print $title ?></title>
</head>
<body>


<?php
 
// footer.php
?>
</body>
</html>

   

Сообщения:  [1-10]    [11-20]  [21-30] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования