Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: как сделать модульный движок?
 
 автор: adminn   (07.05.2007 в 19:47)   письмо автору
 
 

чтоб было что то типа index.php?dat=forum
index.php?dat=doc и т.д
дайте простинькие примеры и ссылки где почитать об этом

   
 
 автор: bronenos   (07.05.2007 в 19:53)   письмо автору
 
   для: adminn   (07.05.2007 в 19:47)
 

хм... я у себя делаю это с помощью RewriteRule

   
 
 автор: Loki   (07.05.2007 в 20:17)   письмо автору
 
   для: adminn   (07.05.2007 в 19:47)
 

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

   
 
 автор: golovdinov   (07.05.2007 в 20:56)   письмо автору
 
   для: Loki   (07.05.2007 в 20:17)
 

в любом случае это будет работать подобным образом:
<?
switch ($_GET['dat']) {
  case 
"doc" : include "modules/some_file.php";
  case 
"smth" : include "modules/smth.php";
}
?>

Вариантов может быть много, но идея в том, что на основе запроса подставляешь соответствующий файл.

   
 
 автор: DEM   (07.05.2007 в 21:00)   письмо автору
 
   для: golovdinov   (07.05.2007 в 20:56)
 

У меня сделано так, сначало обрабатывается переменная razdel и еще проверяется, есть ли такой модуль у меня в таблице modules (есть отдельная таблица, содержащая GET-запрос модуля и папка в которой он находится). Если такой модуль есть, то инклюдится include "/modules/".$_GET['razdel'];

   
 
 автор: Loki   (07.05.2007 в 21:17)   письмо автору
 
   для: golovdinov   (07.05.2007 в 20:56)
 

>в любом случае это будет работать подобным образом:
а я думаю что не в любом.

   
 
 автор: adminn   (08.05.2007 в 01:57)   письмо автору
 
   для: golovdinov   (07.05.2007 в 20:56)
 

Спасибо!
Я тоже использовал конструкцию switch только так:
switch($name)
{
case 'doc' :
include('doc.html');
break;
....
default:
echo "Такого модуля нет"
}
только она не работала. Не знаю почему.
Думаю если я буду делать так
<html>
<?php

switch ($_GET['dat']) {
case "doc" : include "1.ntml";
case "smth" : include "catalog.html";
default:
echo "error!!!";
}

?>
зачем мне проверка? Проинклудить все равно другой файл не получится. так вить?

   
 
 автор: [ChitaNET]Scorpion   (08.05.2007 в 06:43)   письмо автору
 
   для: adminn   (08.05.2007 в 01:57)
 

Я думаю делать модульный сайт через case глупо, так как модульность предполагает удобство, а лазить каждый раз в файл и править кейсы при добавлении/удалении раздела мягко говоря неудобно.

Попробуй просто для себя взять за правило называть файл также, как и значение передаваемое через $_GET. Тогда ты можешь написать простой инклуд файла php с именем равным $_GET['переменная'].

Однако вот нюансы:
1. Чтобы в случае задания несуществующего значения не выводились ошибки, перед инклудом полезно сделать проверку через file_exists
2. Поскольку данные вводятся ИЗ ВНЕ, они не могут считаться безопасными, полезно предусмотреть проверку, чтобы не ввели, например, "../" и не перешли тем самым куда не нужно.

   
 
 автор: CrazyAngel   (08.05.2007 в 08:55)   письмо автору
 
   для: [ChitaNET]Scorpion   (08.05.2007 в 06:43)
 

угу, и передадут параметр

admin.php

   
 
 автор: adminn   (08.05.2007 в 21:34)   письмо автору
 
   для: CrazyAngel   (08.05.2007 в 08:55)
 

мне бы примерчиков! раз на то пошло , а то я новичок

   
Rambler's Top100
вверх

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