как вам такая структура CMS?

Safary

Новичок
как вам такая структура CMS?

Вот у меня такой INDEX.PHP

PHP:
$ref='http://test1.ru'.'/pages/';
$theme='default';

#PAGE
$pages=array('main','register','test');
$page=$_GET['page'];
if(empty($page)) $page='main';
if(!in_array($page,$pages)) $page='404';
$page='pages/'.$page.'.php';

#POST
if($_SERVER['REQUEST_METHOD']=='POST'){
include('scripts/reg_script.php');//регистрация
}

#Вывод
include('themes/'.$theme.'.php');
Вот такой scripts/reg_script.php:
PHP:
<?
if($_SERVER['HTTP_REFERER']==$ref.'register.php' && !empty($_POST['register'])){

///////////////////////// START: обработка переменных ///////////////////////
foreach($_POST as $var => $value){
$value=trim($value);
$value=stripslashes($value);
$value=htmlspecialchars($value);
$_POST[$var]=$value;
}

$login=$_POST['login'];
$pass=$_POST['pass'];
$rpass=$_POST['rpass'];
$email=$_POST['email'];
$nick=$_POST['nick'];
/////////////////////// END: обработка переменных //////////////////////////

//////////////////////// START: проверка на ошибки /////////////////////////

#проверка логина
if(empty($login)){$error.='не введен логин'.'<br>';}
else
{if(strlen($login)<2 or strlen($login)>30)
{$error.='логин должен содержать от 2 до 30 символов'.'<br>';}}

#проверка пароля
if(empty($pass) or empty($rpass)){
$error.='не введены пароль и/или подтверждение пароля'.'<br>';
}else{
if($pass!==$rpass){
$error.='введенные пароли не совпадают'.'<br>';}
else{
if(strlen($pass)<5 or strlen($pass)>50){
$error.='пароль должен содержать от 5 до 50 символов'.'<br>';}}}

#проверка e-mail
if(empty($email)){$error.='не введен e-mail'.'<br>';}
else{ if(strlen($email)<8 or strlen($pass)>50){
$error.='e-mail должен содержать от 8 до 50 символов'.'<br>';}}

#проверка ника
if(empty($nick)){$error.='не введен ник'.'<br>';}
else{
if(strlen($nick)<2 or strlen($nick)>30){
$error.='ник должен содержать от 2 до 30 символов'.'<br>';}}
/////////////////////// END: проверка на ошибки //////////////////////////

if(empty($error)){
//РЕГИМ
}
}
?>
И pages/register.php:
PHP:
<?
if(!empty($error))echo $error;
?>
<form id="register" name="register" method="post" action="/index.php">
<table width="382" border="0">
  <tr>
    <td width="167">логин:</td>
    <td width="205"><input name="login" type="text" id="login" value="strain" /></td>
  </tr>
  <tr>
    <td>пароль:</td>
    <td><input name="pass" type="text" id="pass" value="zx9" /></td>
  </tr>
  <tr>
    <td>подтвердите пароль: </td>
    <td><input name="rpass" type="text" id="rpass" value="zx9" /></td>
  </tr>
  <tr>
    <td>e-mail:</td>
    <td><input name="email" type="text" id="email" value="[email protected]" /></td>
  </tr>
  <tr>
    <td>ник:</td>
    <td><input name="nick" type="text" id="nick" value="StR@iN" /></td>
  </tr>
  <tr>
    <td><div align="center">
      <input type="submit" name="register" value="OK" />
    </div></td>
    <td>&nbsp;</td>
  </tr>
</table>
</form>


В общем получается так:
Юзер заходит на test1.ru/?page=register.php, выводится форма регистрации, отсылает в index.php, если данные от $_POST пришли - индекс инклудирует reg_script.php. reg-script проверяет, если данные пришли с test1.ru/pages/register.php и если кнопка register не пуста - вносит, обрабатывает переменные, проверяет на ошибки... если ошибок нет - регит, если есть - нихрена не делает...
Дальше индекс выводит шаблон themes/default.php, он инклудирует pages/register.php - а тут прописано - если ошибки есть выводим...

И кароче все любые ПОСТ-запросы будут передаваться index.php, а он будет определять - если пришли данные - инклудирует... Если кнопка называлась register и она не пуста - значит данные пришли от register.php ну и т.д.

В общем почему я решил посоветоваться..
Вроде код правильный, сначала собирается инфа, обрабатывается, потом уже ХТМЛ выводится, да.. как меня тут и учили :)

Но с другой стороны мне не очень нравится что любые пост-запросы перенаправляются на index.php и после того как нажал кнопку - зарегистрироваться - всегда будет перенаправлять на ?page=index.php и страница в адресной строке после нажатия кнопки - зарегистрироваться будет отображаться как index.php... Хотя по правде будет инклудироваться pages/register.php

Но и как тут говорили... Мне эта идея тоже не нравится, для register - делать отдельный шаблон, я считаю это тоже глупо будет ведь... Дизайн один остается - а будет в двух файлах одно и то же, глуповато как-то. А потом когда register дописал и мне нужна опять форма с пост-запросом это что получается? 3-ий шаблон с дизайном делать? уже полная тупость... Да и мне моя система тоже не особо нравится, когда все запросы на индекс перенаправляются, хотя вроде бы и всё правильно, но как-то мудрёно слишком..

Какую структуру предложили бы вы? В идеале - 1 шаблон дизайна, весь пхп в папке scripts, весь хтмл, в том числе и register.php с формой(а не кодом) - в папке pages. в scripts обработчики типа reg_script.php

Тоесть чтобы чтоб поменять дизайн - достаточно было закинуть в папку theme любой файл с дизайном и в index.php поменять перемнную $theme и всё, система осталась - дизайн другой.

Как бы сделали вы?
 

AmdY

Пью пиво
Команда форума
я бы посмотрел как это сделано в нормальных cms, тебе советую того же.
 

Safary

Новичок
а нормальная CMS это какая? Я Dinamick разбирал - но мне совсем не понравилось... там ob_start юзается, а это уже не правильно.
Вот нормальная CMS и при этом простая, чтоб новичок мог в ней разобраться, я то новичок...
 

AmdY

Пью пиво
Команда форума
допустим здесь почитай
http://habrahabr.ru/blogs/php/31270/
 

AmdY

Пью пиво
Команда форума
только не забудь почитать коментарии, там должно быть куча альтернативных вариантов. прежде чем начинать что-то писать желательно ознакомиться с чужими реализациями, причём как можно большим колличеством.
 

boombick

boombick.org
Инклудировать и реквизировать!!! Камрад, есть хорошее слово "подключает" :)
для register - делать отдельный шаблон, я считаю это тоже глупо будет ведь... Дизайн один остается - а будет в двух файлах одно и то же, глуповато как-то
Ну так вынеси дизайн в отдельные файлы и подключай их по мере надобности :)
Т.е. Index.php -> include($module . 'php')
а в $module.php подключай header, footer etc.
Dinamick разбирал - но мне совсем не понравилось
Динамик - это адЪ :) Имею щастье лично знать созидателя.. Хотя вот она мускуль не юзает, что сделало ее достаточно популярной в эпоху бесплатных хостингов без поддержки БД
там ob_start юзается, а это уже не правильно
Эм.. А можно узнать, почему ob_* - это неправильно?
 

HraKK

Мудак
Команда форума
Предовращение вывода контента. Контент должен выводиться в самом конце примерно так echo $content;die;
 

HraKK

Мудак
Команда форума
А я наоборот побаиваюсь того что "может", поэтому стараюсь всем на давать выбирать и говорю конкретнее - должен.
 

Духовность™

Продвинутый новичок

HraKK

Мудак
Команда форума
triumvirat
Мы уже не обсудаем тему вопроса, так что оставь цитаты при себе :)
 

boombick

boombick.org
triumvirat
Вопроса, как такового, не было.. А так как это оффтопик, то дай в словоблудии заблудшим индусам поупражняться :)
 

AmdY

Пью пиво
Команда форума
triumvirat
сколько томиков собрал и все ли будешь издавать?
я бы ещё приобрёл цитатник от HraKK-а
 
Сверху