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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Несколько простых вопросов!

 PHP.SU

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


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

> Описание: Инклуд, ЭСкуель, вспомогоательные файлы
Yappa
Отправлено: 07 Июня, 2008 - 10:38:45
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2008  


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




Привет! Я только начинаю активно ковырять пхп, и черпаю информацию , в основном, из всяких примеров в сети. Так вот, многие штуки там делаются совершенно по разному -_-
Подскажите как правильней!

1) Сейчас мои страницки представляют собой большуую мешанину пхп и хтмл кода... Хочу вынести оформление в шаблончики. Мне не нужны особые гипервозможности, хотелось бы просто визуально очистить код ^^

Итак вопрос - допустим у меня есть табличка, строки которой заполняет скрипт.
например я могу написать файлик с шапкой и типовой строчкой.
пусть например типовая строка выглядит так:

CODE (text):
скопировать код в буфер обмена
  1. <tr><td>порода</td><td>длинна хвоста</td></tr>


табличка может получиться очень длинной, шаблон придется использовать часто, и в связи с этим вопрос - как лучше делать?

я могу сделать файлик, в нем написать что-то вроде

CODE (text):
скопировать код в буфер обмена
  1. <tr><td><?php echo $row['cat_type']; ?></td><td><?php echo $row['tail_len']; ?></td></tr>


и делать ему include для каждой строчки. это просто и красиво ) Но не будет ли это тяжело для сервера - тучу раз читать заного этот бедный файлик?

или я могу написать там чтото вроде

CODE (text):
скопировать код в буфер обмена
  1. <tr><td>{cat_type}</td><td>{tail_len}</td></tr>


читать этот файл перед началом вывода в переменную, и делать стр_реплейс..
вот только мне кажется что поиск с заменой тоже достаточно напряжен...

я вижу еще один вариантик - делать шаблон как первый ( с выводом на пхп ),а в начале файла самой страницы написать чтото такого рода

CODE (text):
скопировать код в буфер обмена
  1. function print_me($aWhat,$row){
  2. switch($aWhat){
  3.    case "neko_row":
  4.     require_once('neko_row.php');
  5.     break;
  6.  
  7. ну и тд, тоесть заранее включить все оформление в код...
  8.  



Это должно быть самым быстрым, но меня пугает что придется подгружать сразу все оформление, даже то которое не используется.... -_-

Как лучше? Или это вообще все бред? Y^^

2) Мускульь!!! Вопрос, наверное, самый заезженный но всеже:
из формы пришла строка которую надо засунуть в базу.
что с ней сделать, чтобы она точно была безопасна?
Я видела несколько вариантов:
htmlspecialchars потом обрезание.
обрезанние а потом mysql_real_escape_string
htmlspecialchars потом обрезание а потом mysql_real_escape_string
Как правильнее-то? я пока не очень понимаю какие именно символы позволяют сделать иньекцию -_-


3) И еще вопросиик! Допустим мя сделала-таки шаблончики для оформленния... а как их правильнее хранить, чтобы любопытные не смотрели как там и что?
положить в специальную папку, и хтаккессом запретить туда заходить?
или дать на них разрешения особые?
или в каждом проверять сессию? (бреед)))
или хранить их в папке недоступной для веб сервера?

Написано наверно сумбурно, но все-таки, помогите разобраться пожалуйста!
 
 Top
EuGen Администратор
Отправлено: 07 Июня, 2008 - 10:55:20
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




1. Храните в шаблоне некоторый признак того, что строка повторяется, и потом в цикле выводите туда Ваши данные, и только в том случае, если Вам действительно нужно их туда выводить.
2. От SQL-Injection спасает понимание того, что Вы делаете в каждый конкретный момент. Функция mysql_real_escape_string хороша тем, что экранирует все специальные для синтаксиса SQL символы (кстати, очень рекомендую в этом самом синтаксисе хорошенько разобраться). htmlspecialchars пригодится при выводе данных в браузер (чтобы избежать неожиданного поведения страницы при отображении пользовательского ввода - этот самый ввод может содержать в себе html-теги, javascript и пр.)
3. Храните их в директории, не доступной пользователю из веб. Например, такая структура:
PHP:
скопировать код в буфер обмена
  1.  
  2. +---[templates] //директория с шаблонами - не доступна пользователям.
  3. |
  4. |
  5. +---[www] //Ваша домашняя директория (DocumentRoot) - хранятся скрипты
  6. |      |
  7. |      +---[...]
  8. ...
  9.  

(Отредактировано автором: 07 Июня, 2008 - 10:55:40)



-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Yappa
Отправлено: 07 Июня, 2008 - 11:52:23
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2008  


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




Спасибо, EuGen!
Буду думать ^^
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB