Обучение

Современный функциональный букс - SFB (бесплатно)

10 30
user avatar
14 лет назад
Сообщений: 91
7 лет назад
Ага! Думали тут халява? А нет... Придётся поработать )))

Итак, как же создать современный функциональный букс? Назовём его SFB ))) прям как название нашего сайта. Данное пособие  рассчитано на людей имеющих хоть малейшие познания в php или просто умеющие пользоваться полученной информацией и желающих открыть \\\"свой\\\" букс, а не просто поиграться в админа. Сразу предупрежу некоторые моменты будем брать из уже готовых решений что находятся на просторах интернета чтобы сократить время разработки.

Системные требования: Виртуальный сервер, PHP 7.0.28 и выше, MYSQL 5.7.21 и выше, с полным доступом к настройкам сервера.  Это обязательно, так как мы создадим современный функциональный букс!

Предупреждаю любителей потролить - я не профи программист, так что приму ваши предложения, пожелания и критику.

Ссылка на демо: тут

Ссылка на загрузку скрипта: (в процессе)

Нужен дизайнер! Задача: нарисовать дизайн для букса. Кто занимается этим пишите в лс.
Ответ на: serega393 · 7 лет назад
“Ага! Думали тут халява? А нет... Придётся поработать )))\r\n\r\nИтак, как же создать современный функциональный букс? Назовём его SFB ))) прям как название нашего сайта. Данное пособие  рассчитано на...”
user avatar
8 лет назад
Сообщений: 36
7 лет назад
В чем прикол? Ты типо начинаешь делать новый букс?
Ответ на: Artsem · 7 лет назад
“В чем прикол? Ты типо начинаешь делать новый букс?”
user avatar
14 лет назад
Сообщений: 91
7 лет назад
Программу для создания скрипта я буду использовать NetBeans, но а вы можете использовать то чем возможно уже пользуетесь для программирования. Установить эту программу и узнать как пользоваться можно отсюда.

Создаём сервер на своём компьютере или покупаем виртуальный сервер. Создаём домен. Как? Ищем в яндексе... описывать этот процесс не буду так как мы же учимся, а уметь пользоваться поиском должен каждый, но если возникнут вопросы пишите будем разбирать.

Итак у нас готов сервер и установлена программа для программирования.

Начинаем...

Создадим структуру папок:

/config/  - настройки сайта, базы данных и т.д.

/engine/ - основные файла для работы скрипта

/css/  - стили, шрифты для html

/js/ - javascript файлы

/img/ - картинки

/pages/ - страницы сайта

Создаём первый наш файл index.php в корне сайта и в нём напишем:

<?php echo \\\'Привет! Это современный функциональный букс ).\\\';

Открываем наш сайт в браузере и любуемся тем что у нас получилось...

Создаём второй файл .htaccess так же в корне сайта открываем его и пишем следующее:

#указываем кодировку файлов по умолчанию UTF-8
AddDefaultCharset UTF-8
#запрещаем показ файлов каталога без индексного файла
Options -Indexes
#включаем расширение mod_rewrite
RewriteEngine On
#определяем первое условие при котором происходит перенаправление на файл index.php - если директория не существует
RewriteCond %{REQUEST_FILENAME} !-d
#определяем второе условие при котором происходит перенаправление на файл index.php - если файл не существует
RewriteCond %{REQUEST_FILENAME} !-f
#файл на который перенаправляем при вышеперечисленных условиях
RewriteRule ^(.*)$ /index.php [L]

В этом файле мы прописали правила обработки запросов к нашему сайту. Все запросы если директория не существует или файл не найден будет обрабатывать наш главный файл index.php. Для чего это пока опустим. Узнаете позже когда начнём создавать страницы нашего сайта...
Ответ на: serega393 · 7 лет назад
“Программу для создания скрипта я буду использовать NetBeans, но а вы можете использовать то чем возможно уже пользуетесь для программирования. Установить эту программу и узнать как пользоваться можно...”
user avatar
13 лет назад
Сообщений: 42
7 лет назад
На сколько же Вас хватит?)

Я полтора дня без перерыва код алекса переделываю, без БД и ничего не документируя... А тут... Хорошо если за год управитесь)))
Ответ на: Scrin · 7 лет назад
“На сколько же Вас хватит?)\r\n\r\nЯ полтора дня без перерыва код алекса переделываю, без БД и ничего не документируя... А тут... Хорошо если за год управитесь)))”
user avatar
14 лет назад
Сообщений: 91
7 лет назад
Шаблон сайта.

В корне создадим файл template.php. Шаблон я сделаю в генераторе на сайте тут чтобы не тратить время.  Создаём шаблон на сайте, скачиваем архив и распаковываем. У нас получились два файла index.html и style.css. Открываем файл index.html в редакторе и копируем всё в файл template.php. Файл style.css загружаем на сервер в папку /css/.

В файле template.php правим путь к файлу стилей:

<link href=\\\"/css/style.css\\\" rel=\\\"stylesheet\\\">

Далее открываем наш index.php удаляем ранее написанное и пишем:

<?php

include(\\\'template.php\\\');

Открываем наш сайт в браузере и любуемся полученным результатом )
Ответ на: serega393 · 7 лет назад
“<span style=\\\"text-decoration: underline;\\\"><strong>Шаблон сайта.</strong></span>\r\n\r\nВ корне создадим файл <strong>template.php</strong>. Шаблон я сделаю в генераторе на сайте <a href=\\\"http...”
user avatar
14 лет назад
Сообщений: 343
7 лет назад
Вернул старый редактор, который поддерживает кучу возможностей для оформления сообщения.

Вот тут тег \\\"<code>\\\", если надо будет:

\\\"\\\"
Ответ на: BITbOK · 7 лет назад
“Вернул старый редактор, который поддерживает кучу возможностей для оформления сообщения.\r\n\r\nВот тут тег \\\"&lt;code&gt;\\\", если надо будет:\r\n\r\n<img src=\\\"http://dl3.joxi.net/drive/2018/04...”
user avatar
14 лет назад
Сообщений: 287
7 лет назад
Не советовал бы слушать человека, который джаваскрипту говорит джава.
Ответ на: Nikes · 7 лет назад
“Не советовал бы слушать человека, который джаваскрипту говорит джава.”
user avatar
14 лет назад
Сообщений: 91
7 лет назад
Главное меню. Первые страницы.

Меню для сайта выбираем здесь ну или создаём своё... как? ищем в поисковиках...

Открываем наш файл шаблона template.php и заменяем содержимое тега <header></header>
<ul class=\\\"menu-main\\\">
  <li><a href=\\\"/\\\" class=\\\"current\\\">Главная</a></li>
  <li><a href=\\\"/login\\\">Авторизация</a></li>
  <li><a href=\\\"/register\\\">Регистрация</a></li>
</ul>

Добавляем стили в файл /css/style.css

/* Главное меню */
.menu-main {
list-style: none;
margin: 0px 0 5px;
padding: 5px 0 5px;
text-align: center;
}
.menu-main li {display: inline-block;}

.menu-main li:after {
content: \\\"|\\\";
color: #606060;
display: inline-block;
vertical-align:top;
}
.menu-main li:last-child:after {content: none;}

.menu-main a {
text-decoration: none;
letter-spacing: 2px;
position: relative;
padding-bottom: 0px;
margin: 0 34px 0 30px;
font-size: 12px;
text-transform: uppercase;
display: inline-block;
transition: color .2s;
}

.menu-main a, .menu-main a:visited {color: #9d999d;}

.menu-main a.current, .menu-main a:hover{color: #feb386;}

.menu-main a:before, .menu-main a:after {
content: \\\"\\\";
position: absolute;
height: 4px;
top: auto;
right: 50%;
bottom: -5px;
left: 50%;
background: #feb386;
transition: .8s;
}

.menu-main a:hover:before, .menu-main .current:before {left: 0;}

.menu-main a:hover:after, .menu-main .current:after {right: 0;}

@media (max-width: 550px) {
.menu-main {padding-top: 0;}
.menu-main li {display: block;}
.menu-main li:after {content: none;}
.menu-main a {padding: 5px 0 20px; margin: 0 0px;}
}

В папке /pages/ создаём  файлы register.php - здесь у нас будет регистрация пользователей, login.php - авторизация, index.php - главная страница сайта и 404.php - страница для показа посетителям если страницы не существует.

Содержимое файла /pages/register.php

<?php

echo \\\'регистрация\\\';

Содержимое файла /pages/login.php


<?php

echo \\\'регистрация\\\';

Содержимое файла /pages/index.php

<?php

echo \\\'главная страница\\\';

Содержимое файла /pages/404.php

<?php

echo \\\'страница не найдена\\\';

Далее нам нужно сделать наше меню рабочим, чтобы при клике по меню у нас открывались наши страницы. В меню у нас прописаны пути / - главная страница, /register - регистрация, /login - авторизация. Так как у нас таких директорий кроме главной не существует, то эти запросы будет обрабатывать наш файл index.php.

Открываем файл index.php и меняем содержимое:

<?php
//парсим строку запроса браузера
$url = parse_url($_SERVER[\\\'REQUEST_URI\\\']);
//получаем путь, удаляем крайние слеши, получаем страницу которую запрашивает пользователь
$page = trim($url[\\\'path\\\'], \\\'/\\\');
//если пустая строка запроса или запрашивается index.php показываем пользователю главную страницу
if ($page == \\\'\\\' || $page == \\\'index.php\\\') { $page = \\\'index\\\'; }
//включаем буферизацию вывода т.е. весь результат выполнения программы что будет ниже будет помещён в буфер
ob_start();
//проверяем существует ли у нас запрашиваемая пользователем страница в папке /pages/
if (file_exists(\\\'pages/\\\'.$page.\\\'.php\\\'))
{
   //подключаем запрашиваемую страницу
   include(\\\'pages/\\\'.$page.\\\'.php\\\');
}
else
{
   //если не существует выдаём заголовок браузеру 404
   header($_SERVER[\\\'SERVER_PROTOCOL\\\'] . \\\' 404 Not Found\\\', true);
   //подключаем нашу страницу ошибки
   include(\\\'pages/404.php\\\');
}
//в переменную $content помещаем наш буфер
$content = ob_get_clean();
//подключаем шаблон сайта
include(\\\'template.php\\\');

Открываем файл template.php и заменяем содержимое тега <main></main>

<?php echo $content; ?>

Переменная $content у нас была объявлена в файле index.php и содержит данные запрашиваемой страницы.

Заходим на наш сайт в браузере и любуемся тем что у нас получилось... При клике по страницам у нас показывает то что нам нужно. Если ввести в строку запроса не существующую страницу у нас покажет нашу страницу 404.

Ну вроде всё хорошо, но мы ведь делаем современный функциональный букс, поэтому сделаем загрузку наших страниц с помощью ajax запросов. Об этом узнаем на следующем уроке.

Продолжение следует...
Ответ на: serega393 · 7 лет назад
“<span style=\\\"text-decoration: underline;\\\"><strong>Главное меню. Первые страницы.</strong></span>\r\n\r\nМеню для сайта выбираем <span style=\\\"color: #003366;\\\"><a style=\\\"color: #003366;\\...”
user avatar
13 лет назад
Сообщений: 42
7 лет назад
Правильней будет
вместо
if ($page == \\\'\\\' || $page == \\\'index.php\\\') { $page = \\\'index\\\'; }
вот это написать
if (empty($page) OR $page == \\\'index.php\\\')
$page = \\\'index\\\';
Ответ на: Scrin · 7 лет назад
“Правильней будет\r\nвместо\r\nif ($page == \\\'\\\' || $page == \\\'index.php\\\') { $page = \\\'index\\\'; }\r\nвот это написать\r\nif (empty($page) OR $page == \\\'index.php\\\')\r\n$page = \\\'inde...”
user avatar
13 лет назад
Сообщений: 42
7 лет назад
include(\\\'pages/\\\'.$page.\\\'.php\\\');

не верно написано. точнее уязвимость есть. Если не ошибаюсь, то вместо page можно передать:

index.php\\\');eval(base64_decode($_GET[\\\"r\\\"]));

И у меня будет возможность исполнять любой код. Если так делаете, то проверяйте состоит ли ваша строка только из латинских символов
Ответ на: Scrin · 7 лет назад
“include(\\\'pages/\\\'.$page.\\\'.php\\\');\r\n\r\nне верно написано. точнее уязвимость есть. Если не ошибаюсь, то вместо page можно передать:\r\n\r\nindex.php\\\');eval(base64_decode($_GET[\\\"r\\\"]...”
user avatar
13 лет назад
Сообщений: 1859
7 лет назад
А мне если честно нравится тема. Я за свободную и честную конкуренцию. И я только за новых участников, это повышает качество продукта на рынке и снижает его стоимость, увеличивая качество сервиса.
Ответ на: Pretorian · 7 лет назад
“А мне если честно нравится тема. Я за свободную и честную конкуренцию. И я только за новых участников, это повышает качество продукта на рынке и снижает его стоимость, увеличивая качество сервиса.”
user avatar
13 лет назад
Сообщений: 42
7 лет назад

Цитата: ZKolyaNZ от 04.04.2018, 00:30
https://php.ru/manual/function.file-exists.html

лучше подключить проверку перед загрузкой

Цитата: Scrin от 03.04.2018, 23:48
index.php\\\');eval(base64_decode($_GET[\\\"r\\\"]));

А ты точно уверен, что оно работает ?)
Если мне память не отшибает, тут используется роутинг PHP, то есть перекодирование некоторых символов, они и дадут ошибку в итоге...

Я совсем не уверен) Но подключение такое - это не есть хорошо
Ответ на: Scrin · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-user2\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum?view=profile&amp;id=346\\\">ZKolyaNZ</a></span> от...”
user avatar
14 лет назад
Сообщений: 91
7 лет назад

Цитата: Scrin от 03.04.2018, 23:48
include(\\\'pages/\\\'.$page.\\\'.php\\\');

не верно написано. точнее уязвимость есть. Если не ошибаюсь, то вместо page можно передать:

index.php\\\');eval(base64_decode($_GET[\\\"r\\\"]));

И у меня будет возможность исполнять любой код. Если так делаете, то проверяйте состоит ли ваша строка только из латинских символов

Хм.. Демо сайта в первом посте... Покажите как это будет выглядеть...
Ответ на: serega393 · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-user3\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum?view=profile&amp;id=1926\\\">Scrin</a></span> от 0...”
user avatar
14 лет назад
Сообщений: 91
7 лет назад

Цитата: ZKolyaNZ от 04.04.2018, 00:30
https://php.ru/manual/function.file-exists.html

лучше подключить проверку перед загрузкой

Цитата: Scrin от 03.04.2018, 23:48
index.php\\\');eval(base64_decode($_GET[\\\"r\\\"]));

А ты точно уверен, что оно работает ?)
Если мне память не отшибает, тут используется роутинг PHP, то есть перекодирование некоторых символов, они и дадут ошибку в итоге...

Проверка эта есть...
Ответ на: serega393 · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-user2\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum?view=profile&amp;id=346\\\">ZKolyaNZ</a></span> от...”
user avatar
14 лет назад
Сообщений: 91
7 лет назад
Продолжаем...

Оказывается наши страницы можно посмотреть если ввести прямой путь к файлам в браузере... Избавляемся от этого.

В файл index.php в самом начале добавим:

//объявляем константу содержащую серверный путь к файлам скрипта, будем добавлять проверку существования этой константы в наших файлах от прямого доступа из браузера
define(\\\'SFB_DIR\\\', $_SERVER[\\\'DOCUMENT_ROOT\\\']);

Во всех остальных файлах *****.php добавим проверку также в самом начале:

if (!defined(\\\'SFB_DIR\\\')) { exit(header($_SERVER[\\\'SERVER_PROTOCOL\\\'] . \\\' 404 Not Found\\\', true)); }

Если константа не объявлена то прекращаем работу скрипта и выдаём заголовок 404 браузеру.

Теперь при попытке ввести в строку браузера пути к нашим файлам браузер ничего не покажет.

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

Начинаем делать переход по страницам и все действия пользователя на сайте через ajax запросы, т.е. без перегрузки всей страницы.

Скачиваем последнюю версию jquery здесь - для удобной работы с javascript

Скачиваем последнюю версию jqueryUI здесь - сборка плагинов и виджетов для оформления страницы

Скачиваем плагин для jquery BlockUI здесь - для блокировки страницы во время ajax запроса

Скачиваем плагин для jquery Toast здесь - для всплывающих уведомлений

Распаковываем архивы если необходимо и загружаем файлы js в папку /js/ а файлы css в папку /css/.

Открываем файл шаблона template.php и добавляем в тег <head>

<link href=\\\"/css/jquery-ui.min.css\\\" rel=\\\"stylesheet\\\">
<link href=\\\"/css/jquery.toast.min.css\\\" rel=\\\"stylesheet\\\">
<script src=\\\"/js/jquery-3.3.1.min.js\\\"></script>
<script src=\\\"/js/jquery-ui.min.js\\\"></script>
<script src=\\\"/js/jquery.toast.min.js\\\"></script>

<script src=\\\"/js/jquery.blockUI.js\\\"></script>

В папке /js/ создаём файл jquery.sfb.js - это будет главный наш файл с функциями.

Открываем файл шаблона template.php и добавляем в тег <head>

<script src=\\\"/js/jquery.sfb.js\\\"></script>

Продолжение следует...
Ответ на: serega393 · 7 лет назад
“<em>Продолжаем...</em>\r\n\r\nОказывается наши страницы можно посмотреть если ввести прямой путь к файлам в браузере... Избавляемся от этого.\r\n\r\nВ файл <strong>index.php </strong>в самом начале до...”
user avatar
13 лет назад
Сообщений: 42
7 лет назад

Цитата: serega393 от 04.04.2018, 12:43

Цитата: Scrin от 03.04.2018, 23:48
 

Хм.. Демо сайта в первом посте... Покажите как это будет выглядеть...

Я программист и я знаю, как защитить сайт, а не как взломать его
Могу дать статью (аж 2008 года), где об этом много написано
http://xaker.name/threads/13504/
Погуглив можно найти свежий материал. Но суть в том, что это элементарная вещь, о которой говорили очень давно
Ответ на: Scrin · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-user3\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum?view=profile&amp;id=1005\\\">serega393</a></span>...”
user avatar
14 лет назад
Сообщений: 91
7 лет назад
Посмотрите внимательно логику  моего приложения... И почитайте внимательно ту статью которую вы предоставили в качестве примера.
Ответ на: serega393 · 7 лет назад
“Посмотрите внимательно логику  моего приложения... И почитайте внимательно ту статью которую вы предоставили в качестве примера.”
user avatar
13 лет назад
Сообщений: 42
7 лет назад

Цитата: serega393 от 04.04.2018, 17:19
Посмотрите внимательно логику  моего приложения... И почитайте внимательно ту статью которую вы предоставили в качестве примера.

Окей
Подскажите версию php, тогда возможно получится всё практическим путём доказать
Ответ на: Scrin · 7 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: <span class=\\\"highlight-user3\\\"><a class=\\\"profile-link\\\" href=\\\"https://sfb.su/forum?view=profile&amp;id=1005\\\">serega393</a></span>...”
user avatar
14 лет назад
Сообщений: 91
7 лет назад
Продолжаем...

Создадим скрипт обработки клика по ссылкам и по кнопкам отправки форм. Открываем файл /js/jquery.sfb.js и добавляем следующий код:

//функция обработки всех запросов со страницы
//elem = элемент страницы
function sfbRequest(elem)
{
//получаем путь запроса из атрибута href элемента и если атрибут отсутствует путь берем из строки запроса браузера
if ($(elem).is(\\\"[href]\\\")) { path = $(elem).attr(\\\"href\\\"); } else { path = location; }

//проверяем наличие специального атрибута элемента и получаем данные
var atr = $(elem).data(\\\"sfb\\\") ? $(elem).data(\\\"sfb\\\") : \\\"\\\";
//парсим путь и получем путь и get параметры если присутствуют
var url = parseUrl(path);
//получаем данные формы если она существует
var post = $(\\\"form[name=\\\"+$(elem).attr(\\\"id\\\")+\\\"]\\\").serialize();
//делаем запрос
$.ajax({type: \\\"POST\\\", dataType: \\\"json\\\", url: \\\"/index.php\\\", data: {page:url[\\\"path\\\"], get:url[\\\"get\\\"], post:post},
//функция выпоняемая перед выполнением запроса
beforeSend: function () { $.blockUI({message: \\\"Подождите идёт загрузка...\\\", overlayCSS: {backgroundColor: \\\"#000\\\", opacity: 0.5}}); },
//функция выполняемая после удачного выполнения запроса
success: function (result)
{
//если получены данные в результате запроса
if (result)
{
//выполняем javascript полученный в результате запроса (если javascript при выполнении ловит ошибку выводим сообщение)
if (result[\\\"data\\\"]) { try { eval(result[\\\"data\\\"]); } catch (err) { showMessage(\\\"Ошибка\\\", \\\"Что то пошло не так... Попробуйте обновить страницу...\\\", 10000, \\\"error\\\", false, \\\"top-left\\\"); } }
//если существует атрибут элемента page
if (atr.page)
{
//пишем страницу в историю браузера
history.pushState(\\\"\\\", \\\"\\\", path);
   //меняем адресную строку браузера
history.replaceState(\\\"\\\", \\\"\\\", path);
}
}
},
//функция выполняемая в случае неудачного завершения запроса
error: function () { $.unblockUI(); showMessage(\\\"Ошибка\\\", \\\"Что то пошло не так... Попробуйте обновить страницу...\\\", 10000, \\\"error\\\", false, \\\"top-left\\\"); },
//функция выполняемая после завершения запроса
complete: function () { $.unblockUI(); }});

return false;
}

 

//вешаем обработчик \\\"клик\\\" на все ссылки имеющие класс sfb-link
$(document).on(\\\"click\\\", \\\".sfb-link\\\", function() { sfbRequest($(this)); return false; });

//парсинг url в результате которого получаем путь и get параметры
function parseUrl(path) { var url = []; var rx = new RegExp(\\\"^(([^:/\\\\\\\\?#]+):)?(//(([^:/\\\\\\\\?#]*)(?::([^/\\\\\\\\?#]*))?))?([^\\\\\\\\?#]*)(\\\\\\\\?([^#]*))?(#(.*))?$\\\"); var parts = rx.exec(href); url[\\\"path\\\"] = parts[7]; url[\\\"get\\\"] = parts[9]; return url; }

//сообщение (заголовок, текст, скрыть после времени, иконка, заменять предыдущее сообщение, позиция в окне браузера)
function showMessage(title, text, hide, icon, stack, position)
{
$.toast({ heading: title, text: text, hideAfter: hide, icon: icon, stack: stack, position: position });
}

Открываем файл template.php.

Добавляем к нашим ссылкам в главном меню class=\\\"sfb-link\\\" и атрибут data-sfb=\\\'{\\\"page\\\":1}\\\'. Атрибутом data-sfb мы обозначили что это ссылка на страницу и надо поменять адресную строку браузера. При клике у нас срабатывает блокировка страницы с помощью плагина jquery blockUI пока запрос не завершится. Это сделано для того чтобы пользователь дождался ответа прежде чем нажать что нибудь другое. Код имеет комментарии если что не понятно пишите будем разбирать.

Теперь нужно нам обработать  ajax запросы в нашем файле index.php открываем его и добавим следующий код

//если ajax запрос
if (isset($_SERVER[\\\'HTTP_X_REQUESTED_WITH\\\']))
{
//если реферер не передан завершаем работу
if (!isset($_SERVER[\\\'HTTP_REFERER\\\'])) { exit(header($_SERVER[\\\'SERVER_PROTOCOL\\\'] . \\\' 404 Not Found\\\', true)); }
//если реферер не соответствует нашему домену завершаем работу
if (!mb_strpos($_SERVER[\\\'HTTP_REFERER\\\'], $_SERVER[\\\'HTTP_HOST\\\'])) { exit(header($_SERVER[\\\'SERVER_PROTOCOL\\\'] . \\\' 404 Not Found\\\', true)); }
//запрашиваемая страница
$page = isset($_POST[\\\'page\\\']) ? $_POST[\\\'page\\\'] : \\\'\\\';
//парсим post данные в массив
if (isset($_POST[\\\'get\\\'])) { parse_str($_POST[\\\'get\\\'], $get); }
//парсим get данные в массив
if (isset($_POST[\\\'get\\\'])) { parse_str($_POST[\\\'post\\\'], $post); }
//если пустая строка запроса или запрашивается index.php показываем пользователю главную страницу
if ($page == \\\'\\\' || $page == \\\'/\\\') { $page = \\\'index\\\'; }
//удаляем крайние слеши, получаем страницу которую запрашивает пользователь
$page = trim($page, \\\'/\\\');
//проверяем существует ли у нас запрашиваемая пользователем страница в папке /pages/
if (file_exists(SFB_DIR.\\\'/pages/\\\'.$page.\\\'.php\\\'))
{
//включаем буферизацию вывода т.е. весь результат выполнения программы что будет ниже будет помещён в буфер
ob_start();
//подключаем запрашиваемую страницу
include(SFB_DIR.\\\'/pages/\\\'.$page.\\\'.php\\\');
//в переменную $content помещаем на буфер
$content = ob_get_clean();
//завершаем работу и отдаём данные в json формате (javascript который добавляет в элемент c ID sfb-content полученный результат выполнения скрипта)
exit(json_encode([\\\'data\\\' => \\\'$(\\\"#sfb-content\\\").html(\\\"\\\'.$content.\\\'\\\");\\\']));
}
else
{
exit(json_encode([\\\'data\\\' => \\\'window.location.replace(\\\"/404\\\");\\\']));
}
}
else
{
//включаем буферизацию вывода т.е. весь результат выполнения программы что будет ниже будет помещён в буфер
ob_start();
//проверяем существует ли у нас запрашиваемая пользователем страница в папке /pages/
if (file_exists(SFB_DIR.\\\'/pages/\\\'.$page.\\\'.php\\\'))
{
//подключаем запрашиваемую страницу
include(SFB_DIR.\\\'/pages/\\\'.$page.\\\'.php\\\');
}
else
{
//если не существует выдаём заголовок браузеру 404
header($_SERVER[\\\'SERVER_PROTOCOL\\\'] . \\\' 404 Not Found\\\', true);
//подключаем нашу страницу ошибки
include(SFB_DIR.\\\'/pages/404.php\\\');
}
//в переменную $content помещаем на буфер
$content = ob_get_clean();
//подключаем шаблон сайта
include(SFB_DIR.\\\'/template.php\\\');
}

заменив этот

//включаем буферизацию вывода т.е. весь результат выполнения программы что будет ниже будет помещён в буфер
ob_start();
//проверяем существует ли у нас запрашиваемая пользователем страница в папке /pages/
if (file_exists(SFB_DIR.\\\'/pages/\\\'.$page.\\\'.php\\\'))
{
//подключаем запрашиваемую страницу
include(SFB_DIR.\\\'/pages/\\\'.$page.\\\'.php\\\');
}
else
{
//если не существует выдаём заголовок браузеру 404
header($_SERVER[\\\'SERVER_PROTOCOL\\\'] . \\\' 404 Not Found\\\', true);
//подключаем нашу страницу ошибки
include(SFB_DIR.\\\'/pages/404.php\\\');
}
//в переменную $content помещаем на буфер
$content = ob_get_clean();
//подключаем шаблон сайта
include(SFB_DIR.\\\'/template.php\\\');

Добавляем в файле template.php к элементу <main> id=\\\"sfb-content\\\".

Открываем в браузере и любуемся нашим сайтом )))

 
Ответ на: serega393 · 7 лет назад
“<em>Продолжаем...</em>\r\n\r\nСоздадим скрипт обработки клика по ссылкам и по кнопкам отправки форм. Открываем файл <strong>/js/jquery.sfb.js </strong>и добавляем следующий код:\r\n\r\n<span style=\\\...”
user avatar
13 лет назад
Сообщений: 1859
7 лет назад
Прикинем в моем скрипте 293 файла, в 90% файлов от 1000 строчек кода, в нескольких файлах от 5000 строчек кода, в одном файле двигателя свыше 15000 строчек програмного кода.

В среднем множим 300 * 1500 = 450 000 строчек кода, к этому еще планировка и концепкия дизайна, его отрисовка, и реализация. Вы в день примерно публикуете в среднем до 500 строчек кода. И того 450 000 / 500 = 900... тоесть с такой скоростью вы будете постить тут полноценый скрипт 900 дней, почти три года. Ну что же я желаю Вам удачи)
Ответ на: Pretorian · 7 лет назад
“Прикинем в моем скрипте 293 файла, в 90% файлов от 1000 строчек кода, в нескольких файлах от 5000 строчек кода, в одном файле двигателя свыше 15000 строчек програмного кода.\r\n\r\nВ среднем множим 30...”
Ответить