PDA

Просмотр полной версии : Пара вопросов по PHP и созданию движка сайта


AgS
08.06.2009, 17:53
Объясните как сделать поддержку и смену скина сайта через админку.
И если не сложно расскажите кто с чего начинает разработку порталов и движков сайтов(особенно интересует как кто располагает файлы, где админки, где скины, модули и тд...).
Просто передомной встала задача сделать портал на собственном движке. Я имею базовые знания о php и MySQl? Сделал простейший сайт с админкой, но хотелось бы более углублённых познаний в данной области, да и просто хочется улучьшить сайт.

Sharky
08.06.2009, 17:58
почитай про
Hierarchical Model-View-Controller (HMVC)
и
Model-View-Controller (MVC)

поняв их устройство сразу всё будет быстро и удобно)

m0Hze
08.06.2009, 18:00
themes/Mbskin/тут файло скина
themes/Mb23Skin/тут файло скина.


В скрипте

include('./themes/'.$_COOKIE['skin'].'/img/.....');

Както таак можно,способов масса.

Sharky
08.06.2009, 18:03
как вариант указывать скин в бд для каждого пользователя

AgS
08.06.2009, 18:06
А сама система шаблона как выглядит??? - Я примерно понял как сделатиь смену скинов.
А кто с чего начинает разработку движка сайта??
Ведь наверняка многие уже имеют определённый план действий при написание??

blednii
08.06.2009, 18:12
Ну если примитивный движок,то вначале воздаеться файл формы затем в него инклудяться все остальные,выглядитэто обычно как простая таблица. В ячейки таблицы инклудяться все остальные файлы. Больше - сложнее.Все зависит от того, что ты хочешь написать.

m0Hze
08.06.2009, 18:17
Smarty.

AgS
08.06.2009, 18:17
Цель создание информационного сайта по онлай играм причём скин должен выбирать админ(в админке, а не юзеры - как на ачате).

m0Hze пасиб.

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

FireFenix
08.06.2009, 18:27
Структура движка приблизительно такова

index.php - Запуск главного класса из main.php

include.php - Подключение всех файлов
config.php - Конфигурация всех параметров
database.php - установка соединения с БД и подгрузка функций для БД
login.php - авторизация пользователя
skin.php - Управление скинами и передача управления нужному модулю

skin1.php - Загрузка скина 1
skin2.php - Загрузка скина 2

sсript.php - Управление <CSS, JS, VBS, etc> скриптами и передача управления нужному скрипту

script2.php - Загрузка скрипта 1
script2.php - Загрузка скрипта 2

main.php - Обработка всех URL'ов и перемещений по сайту
module1.php - по определённому URL передача обработки модулю 1
module2.php - по определённому URL передача обработки модулю 2

templates.php - Управление шаблонами и заполнение их данными

template1.html - Загрузка шаблона 1
template2.html - Загрузка шаблона 2


+ Обработка исключений и ошибок
+ Проверка прав пользователя

Для создания подгрузки скинов. Достаточно сделать :

В таблице пользователя добавить поле для скина
Шаблон под разные изображения
В зависимости от скина - подгружать нужный CSS

И потом когда пользователь заходит на страницу :

Подгружашь параметры скина из БД
Сопоставляешь названию из БД, нужную папку/файл скина
Загружаешь картинки для скина
Загружаешь CSS скина

При регистрации юзера стандартно можно ставить скин default.
Для смены скина, запросом меняешь defualt на любой другой

P.S. Структура сугубо абстрактная и расширенная.
Для мелких проектов можно всё не делать/использовать.
Для больших проектов: чем больше всё классифицированно - тем больше маштабируемость всей конструкции и проще в отладке

blednii
08.06.2009, 18:38
Некоторые пункты весьма сомнительны. К примеру обычно настройки ДБ храняться в конфиге, второе, зачем отдельно создаватьфайл для подгрузки скриптов, их проще грузить по мере необходимости, страничку логина можновтулитьна главную.

FireFenix
08.06.2009, 18:43
Некоторые пункты весьма сомнительны. К примеру обычно настройки ДБ храняться в конфиге, второе, зачем отдельно создаватьфайл для подгрузки скриптов, их проще грузить по мере необходимости, страничку логина можновтулитьна главную.
Настройки - да
А функции установки соединения с БД?
в ДЛЕ ещё там хранятся функции для отправки и парсинга запросов БД

Для подгрузки файл необязаетльно создавать, это абстрактная конструкция. Если скриптов очень много, то лучше создать отдельный класс в файле и там ими манипулировать

login.php это не страничка логина, а обработчик авторизации и прочих действий с пользователями

P.S. вся конструкция сугубо абстрактная и расширенная Естественно необязательно всего делать или навешивать

Krist_ALL
08.06.2009, 18:47
почитай про
Hierarchical Model-View-Controller (HMVC)
и
Model-View-Controller (MVC)

поняв их устройство сразу всё будет быстро и удобно)

Думаю это сложно будет для начинающего - понять это.

Как разрабатыват двиг сайта?

1. Сформулировать в голове примерную структуру сайта ( страницы, формы, итд)

[ 2 ] . необязательный пунки. Взять бумагу и нарисовать 'карту сайта, включая админку и системные файлы'

3. Принято создавать соединение с БД в отдельном файле, например db_connect.php и инклудить его в каждый скрипт. Так же должна юыть папка include где будут располагатся файлы которые подключаются. Главный скрипт - например Main.php - это просто шапка и подвал а середина инклудится, напрмимер страница нвостей будет иметь адрес main.php?page=news а маин пхп просто приинклудит News.php. МОжно подругму, есть масса способов, придумай свой если тебене нравятся существующие -посмори как организованы другие сайты.

4. Начмнать лучше с пользовательской стороны. НАпирмер, неа сайте палнируется регистрация юзеров. ты делаешь registration.php + создаешь в БД необходимые таблицы + сразу делаешь модуль управления юзерами в админке. Потом ты придумал что на сайте будут новости. Делаешь News.php + таблицы в БД + опять же модуль управления новстями в админке. и так далее.

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

FireFenix
08.06.2009, 18:53
Чтобы лучше всего понять, лучше взять тотжий ДЛЕ, скачать и покататься.
Ставя бряки die() и отслеживание связей, начинаешь осознавать конструкцию работы

blednii
08.06.2009, 19:00
Чтобы лучше всего понять, лучше взять тотжий ДЛЕ, скачать и покататься.
Ставя бряки die() и отслеживание связей, начинаешь осознавать конструкцию работы


Дле довольно объемный, полностью его перебрать не так и просто особенно для новичка, лучше взять что-то меньше и проще к примеру SimpleCMS или вобще вап движок - кода меньше, а принцип работы тот-же.

LEE_ROY
08.06.2009, 20:08
Проектирование Интернет-приложений - http://phpclub.ru/detail/article/idesigning

AgS
08.06.2009, 21:21
LEE_ROY спасиб тоже не плохая статья.

Ru}{eeZ
08.06.2009, 23:59
Энди Харрис - PHP/MySQL для начинающих
Пол Хадсон & O'REILLY - PHP справочник
Кузнецов Максим, Симдянов Игорь - MySQL на примерах

Дикс
09.06.2009, 10:45
ДЛЕ ужасное гавно внутри

вообще можно многому научиться просто копируя это с других сайтов
я первое что сделал после того как смог выдрать из БД данные на страничку - написал модульную ЦМС с новостями, статьями, форумом, фотогалереей и тп
модули имели возможность размещать свой контент в боковой панели сайта - типа последние 5 фоток, последние 5 новостей, была подписка на новости через мыло и rss..

и это всё было написано абсолютно без знаний "правильной" архитектуры

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

malik555
09.06.2009, 18:11
Я вам одно хочу сказать , когда человек спрашивает "для создания движка с чего начать ?"

В первую очерередь нужно начать с самого себя - точнее с вас , я уверен на 99% что вы не напишите путевый движек , а напишите так называемый "ДВИЖЕК ГОВНО- КОД"

Поверте мне - просто забудте это дело вобще , или результат ваших работ будет "ДВИЖЕК ГОВНО- КОД" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Я согласен с "Krist_ALL" он вам в кратце пытается обьяснить всю структуру написания движков !

Но и в тоже время я не согласен с "Krist_ALL" он старался обьяснить человеку который далек от этого , вобщем не буду дальше расписывать - просто забудте это и все !

Или результатом ваших работ будет "ДВИЖЕК ГОВНО- КОД" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Который и нахххххх не кому не будет нужен !

blednii
09.06.2009, 19:12
Я вам одно хочу сказать , когда человек спрашивает "для создания движка с чего начать ?"

В первую очерередь нужно начать с самого себя - точнее с вас , я уверен на 99% что вы не напишите путевый движек , а напишите так называемый "ДВИЖЕК ГОВНО- КОД"

Поверте мне - просто забудте это дело вобще , или результат ваших работ будет "ДВИЖЕК ГОВНО- КОД" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Я согласен с "Krist_ALL" он вам в кратце пытается обьяснить всю структуру написания движков !

Но и в тоже время я не согласен с "Krist_ALL" он старался обьяснить человеку который далек от этого , вобщем не буду дальше расписывать - просто забудте это и все !

Или результатом ваших работ будет "ДВИЖЕК ГОВНО- КОД" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Который и нахххххх не кому не будет нужен !



У тебя месячные? Ты каждым абзаццом противоречишь сам себе. Все начинают с плохого кода, ты излишне самоуверен. К тому же если не обьяснять людям то как они приблизяться? Учись думать головой перед тем как писать, ты просто зашол и затролил.

LEE_ROY
09.06.2009, 19:27
малик ты сам небось написал когда-то ГАВНО-КОД и понял что на что-то большее не способен..
ТС имхо просто хочет правельно, так сказать проф. подойти к проектированию, тоесть чтобы ему обьяснили как правельно делать... есть паттерны проектирования, как сказали выше изучай паттерн MVC. Чтобы понимать и делать правельно, нужно читать правельные книги, а не php за 10 минут и тд... вот тебе две для начала, и конечно же гугль
http://www.ozon.ru/context/detail/id/2847621/
http://www.ozon.ru/context/detail/id/2527057/

FireFenix
09.06.2009, 20:01
Товарищи, завязываем флуд и оффтоп. Человек просил помощи в развитии Себя, а не холивара.

AgS
10.06.2009, 20:09
Так вроде с понятием расположения всё утряслось!

Теперь возвращаюсь к смене скинов.
Опишу более подробно то что сделал:
в локальном каталоге будующего портала создал:

includes - dir

db_connect.php

image - dir

тут будут изображения из новостей, уроков и тд.

templates - dir

skin1 - dir

image - dir - тут будут изображения для скина
css.css - стиль скина
index.php - тут будет сам костяк шаблона(Дизайн сайта с пустыми ячейками таблицы - где нужен вывод определённых данных они будут подгружены в шаблон через include )

skin2 -dir

тут тоже самое что и в предыдущей папке skin 1


index.php

Теперь более подробно о каждом PHP файле(кроме шаблонов там думаю я ошибок не совершил) и MYSQL:
В MYSQL создал раздел site( и в тестовых целях юзера 12345 с паролем 12345 со всеми правами), после создал таблицу skin с полями
id - int (и поставил галочку auto increment - помойму так правильно пишется)
name - varchar
patch - varchar

заполнил таблицу данными о 2х скинах.

db_connect.php
<?php
$db = mysql_connect ('localhost', '12345', '12345');
mysql_select_db ('site', $db);
?>

index.php
<?php
include ('includes/db_connect.php');
$a = mysql_query ('SELECT id FROM skin',$db);
$b = mysql_fetch_arrey ($a);
echo ('Для проверки сделал вывод массива $b[0] и $b[1] но он почемуто вместо значений id 0 и 1 выводит всего лишь 0 встал на этом месте в затык.');
?>

Обьясните как быть и как вообще это лучьше записать и вывести??Заранее Спасибо.

FireFenix
10.06.2009, 20:36
SELECT id FROM skin
Выберет из таблцы skin строки с 1 столбцом id

database.php

<?php

function connection($host, $bd, $user, $pass) //Функция установки соединения с СУБД (MySQL)
{
$link = @mysql_connect($host , $user , $pass); //Установка соединения

if (!$link) //Проверка соединения
{
die('Нет свзяи с базы данных'); //Текст ошибки
}

$db_selected = @mysql_select_db($bd, $link); //Выбор БД

if (!$db_selected) //Проверка на выбор БД
{
die('Ошибка выбора базы данных'); //Вывод текста ошибки
}

mysql_query('SET character_set_client=cp1251'); //Уствнока кодировки клиента
mysql_query('SET character_set_results=cp1251'); //Уствнока кодировки запросов
mysql_query('SET character_set_connection=cp1251'); //Уствнока кодировки соединения
mysql_query('SET character_set_server=cp1251'); //Уствнока кодировки сервера
}

?>


index.php

<?php

include('database.php');

connection('localhost', 'site', '12345', '123456'); //Вызываем функцию подключения

$query = 'SELECT * FROM skin'; //Запрос в СУБД
$result = mysql_query($query); //Результат запроса

//Построчно из таблицы cчитываем в массив "столбцы" строки
while($fetch = mysql_fetch_array($result))
{
//$fetch['столбец'] вернёт значение "столбца" из текущей строки
echo('id записи = ' . $fetch['id']);
echo('name записи = ' . $fetch['name']);
echo('patch записи = ' . $fetch['patch']);
echo('<br><br>');
}

?>

AgS
10.06.2009, 20:54
FireFenix Огромное спасибо, буду продолжать дальше, если что напишу!!

Krist_ALL
11.06.2009, 23:42
ТС, молодец! Большие сдвиги! Файлы по каталоги на мой взгляд верно распределил и с бд начал работать. Учи sql + обязательно как в пхп работать с бд. Например вайл а=фетч аррай...

AgS
13.06.2009, 12:41
Krist_ALL Кто такой ТС ?
У меня тут появилась ещё пара вопросов, напишу как с работы вернусь.

L I G A
13.06.2009, 12:45
Krist_ALL Кто такой ТС ?
У меня тут появилась ещё пара вопросов, напишу как с работы вернусь.
ТС-топикстартер,в данной теме это ты.

nerezus
13.06.2009, 12:50
Сам совершал такие ошибки, поэтому соет:
Писать движки - уебанство.
Используйте готовые фреймворки. Например ZendFramework.
И лишь на базе подобных решений получится гибкая вещь.

Тема закрыта ввиду неконструктивности.