Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Пара вопросов по PHP и созданию движка сайта (https://forum.antichat.xyz/showthread.php?t=124230)

AgS 08.06.2009 17:53

Пара вопросов по PHP и созданию движка сайта
 
Объясните как сделать поддержку и смену скина сайта через админку.
И если не сложно расскажите кто с чего начинает разработку порталов и движков сайтов(особенно интересует как кто располагает файлы, где админки, где скины, модули и тд...).
Просто передомной встала задача сделать портал на собственном движке. Я имею базовые знания о 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/тут файло скина.


В скрипте
PHP код:

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
И потом когда пользователь заходит на страницу :
  1. Подгружашь параметры скина из БД
  2. Сопоставляешь названию из БД, нужную папку/файл скина
  3. Загружаешь картинки для скина
  4. Загружаешь CSS скина
При регистрации юзера стандартно можно ставить скин default.
Для смены скина, запросом меняешь defualt на любой другой

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

blednii 08.06.2009 18:38

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

FireFenix 08.06.2009 18:43

Цитата:

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

Настройки - да
А функции установки соединения с БД?
в ДЛЕ ещё там хранятся функции для отправки и парсинга запросов БД

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

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

Цитата:

Сообщение от FireFenix
Чтобы лучше всего понять, лучше взять тотжий ДЛЕ, скачать и покататься.
Ставя бряки 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

Цитата:

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

В первую очерередь нужно начать с самого себя - точнее с вас , я уверен на 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 код:

<?php 
$db 
mysql_connect ('localhost''12345''12345');
mysql_select_db ('site'$db);
?>

index.php
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 код:

<?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 код:

<?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

Цитата:

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

ТС-топикстартер,в данной теме это ты.

nerezus 13.06.2009 12:50

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

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


Время: 04:33