Safary
Новичок
как вам такая структура CMS?
Вот у меня такой INDEX.PHP
Вот такой scripts/reg_script.php:
И pages/register.php:
В общем получается так:
Юзер заходит на 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 и всё, система осталась - дизайн другой.
Как бы сделали вы?
Вот у меня такой 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');
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)){
//РЕГИМ
}
}
?>
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> </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 и всё, система осталась - дизайн другой.
Как бы сделали вы?