2012-04-11 3 views
2

Я пытаюсь создать веб-сайт, использующий PHP в качестве движущей силы механизмов. Идея сайта (в целом) требует, чтобы каждому пользователю была предоставлена ​​возможность создания собственного профиля (в настоящее время рассматривается создание каталога для каждого пользователя).Структура структуры каталога PHP

Я занимаюсь значительными исследованиями, чтобы установить это приложение наилучшим образом. Но я испытываю чрезвычайную путаницу, когда дело доходит до создания структуры каталогов. Я рассматриваю возможность загрузки помощника по каркасу (CodeIgniter), который мог бы помочь мне в этом деле, но я предпочел бы получить мнение других в первую очередь.

В настоящее время у меня есть все мои файлы и содержимое в моей папке public_html, и я знаю, что это не идеальная настройка. Но я не уверен, как создать альтернативную структуру. Я не знаю, где хранить различные шаблоны (header.php, footer.php и т. Д.) И как/где их вызывать.

Я хочу создать страницы для списка «О», «Контактная страница» и другой контент, но не знаете, где эти страницы должны быть расположены? Сохранять содержимое этих страниц в каталоге public_html и просто включать шаблоны из разных подпапок?

О файле config.php: Я пытаюсь получить всю необходимую информацию, относящуюся к соединениям MySQL в одном файле, а также другую необходимую информацию, которая будет включена в начале страницы EACH на сайте.

Мысли? Я довольно новичок в облаке, и поэтому простые и базовые ответы будут очень благодарны!

ответ

1

Вы думаете об этом неправильно. Вам не нужен каталог для каждого пользователя. Вы можете использовать GET params, чтобы иметь один скрипт (например, profile.php), вытягивая соответствующий профиль для пользователя, зависящий от данных, переданных ему. Например, profile.php?userid=5212 вытащит профиль для пользователя 5212 ($_GET['userid'] будет содержать идентификатор пользователя в этом случае). Передача ничто не может легко по умолчанию потянуть профиль для текущего пользователя.

Вы также можете использовать mod_rewrite так, что http://www.yoursitehere.com/profile/5212/ может сделать то же самое (смотреть на маршруты в большинстве фреймворок)

Ваша структура каталогов должна удовлетворить вас.Если сайт достаточно просто вы могли бы уйти с чем-то простым, как только

public_html/ 
    css/ 
    includes/ 
    images/ 
    js/ 

Вашей конфигурации базы данных могли бы жить в public_html/includes/, и вы можете включить его на любой странице, требующей подключения к базе данных. Ваши контактные данные и контактные страницы могут быть фактическими файлами, расположенными в public_html/, чтобы все было просто. Опять же, это только предложения. Структура вашего каталога должна быть тем, что вам нужно.

+0

Звучит неплохо. Определенно ставит много моей путаницы для отдыха. Вы по-прежнему рекомендуем использовать структуру или организовать сайт в соответствии со стандартом MVC? (Я не совсем понимаю, что такое функциональность модели MVC). Что касается файла config.php, не следует ли мне беспокоиться о возможности нарушения безопасности, если у кого-то есть доступ к содержимому файла (с пользователем MySQL и паролем, хранящимся в скрипте)? – asgaines

+0

Пока это файл php, он недоступен из Интернета (поскольку PHP-скрипты интерпретируются, а не печатаются). Что касается рамки, это ваше решение. Тем не менее, вы можете добавить к своему уровню сложности. Большинство фреймворков PHP используют структуру MVC, поэтому вы используете MVC только с помощью Zend Framework или CakePHP, например. – Crashspeeder

0

Хранить все в строящемся для вас смысле. Нечто подобное должно работать:

public_html

-Включает

-образов

-css

-blog

И так далее ...

относительно файл конфигурации, вы можете сохранить его в public_html, или в каталоге includes

+0

Как я должен идти о включая различные файлы? Использую ли я метод, в котором корень документа хранится в переменной, хранящейся в файле config.php, а затем использовать эту переменную для взаимодействия с различными уровнями каталога? Например (в файле config.php): $ doc_root = $ _SERVER ['DOCUMENT_ROOT']; – asgaines

+0

Да, это сработает. Это один из способов обращения с ним: 'require_once ($ _ SERVER ['DOCUMENT_ROOT']. '/inc/header.php');' –

+0

Этот код находится в верхней части каждого файла. Он содержит соединения с базой данных, тег '' и т. Д. ... –

0

Возможно, вы захотите использовать PHP Web Framework, такую ​​как Symfony. Это поможет с большим количеством основ, чтобы вы могли сосредоточиться на функциях продукта.

0

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

Что касается структуры файла, вы можете использовать:

 
    public html 
    includes 
     header.html 
     footer.html 
     config.php 
    classes 
    pages (stores other pages besides index.php here, contact, about etc.) 
    css 
    JS 
    index.php/html 
и вне папки public_html У меня есть файл mysqli.php.

Чтобы включить эти файлы заголовков в вашем файле index.php вы бы просто создать (в вашем включает папку, куда вы выбираете) в config.php файл с чем-то вроде следующего:

require_once($server['document_root']."/classes/filename.php"); // include needed files and mysqli connection here as well 

Вы также можете установите специальный обработчик ошибок в файле конфигурации, если это необходимо.

В файле index.php вы затем вызвать конфигурационный файл (который будет автоматически включать любые файлы, указанные в файле конфигурации, а) и ваш заголовок и нижний колонтитул ИЭ

include('/includes/header.html'); 
include('/includes/config.php'); 
<!--ENTER PAGE CONTENT HERE--> 
include('/includes/footer.html'); 
Смежные вопросы