Ищете простую в обслуживании и безопасную структуру каталогов для составного сайта


Недавно я унаследовал более старый пользовательский веб-сайт PHP, который состоит из трех частей: общедоступный раздел для всеобщего просмотра, раздел участников и раздел администратора. Раздел каталога выглядит следующим образом:

    ->css
    ->doc
    ->inc
    ->js
    ->member
       ->css
       ->doc
       ->inc
       ->js
    ->admin
       ->css
       ->doc
       ->inc
       ->js

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

Запланирован большой капитальный ремонт интерфейса, и мы также обновляем безопасность и переходим с mysql_query на PDO. Похоже, сейчас тоже самое подходящее время для капитального ремонта структуры.

Итак, мой первый вопрос: каков хороший способ сохранить трехсторонняя структура для пользователей, но упрощающая? Есть ли недостаток в создании единого каталога inc или lib на верхнем уровне и размещении там всех общих файлов?

Для дополнительного усложнения мы хотели бы модернизировать логин, поэтому я изучаю Огромный пакет php-входа panique. Он будет использоваться для входа в систему участников и администраторов. Этот пакет имеет структуру MVC и выглядит так, как будто он предназначен для того, чтобы служить основой для всего сайта. Но я не уверен, как я следует включить его в наш уже существующий сайт... Я не хочу копировать его дважды, для разделов администратора и участников. Мне интересно, следует ли мне разместить каталоги участников и администраторов в каталоге php-login или разместить php-login в общем каталоге lib, который я рассматриваю...

Author: Amina, 2015-06-16

1 answers

Что касается структуры объекта, я бы исходил из этого:

->css
->doc
->inc
->js
->member
   ->css
   ->doc
   ->inc
   ->js
->admin
   ->css
   ->doc
   ->inc
   ->js

К этому:

->guest
   ->loginpage.php
   ->guest_only_item_1.php
   ->guest_only_item_2.php
   ...
   ->guest_only_item_n.php
->common
   ->shared_php_file_1.php
   ->shared_php_file_2.php
   ...
   ->shared_php_file_n.php
   ->somestylesheet.css
   ->somejavascript.js
   ->someimage.jpg
   ->someniceimage.png
->member
   ->member_only_item_1.php
   ->member_only_item_2.php
   ...
   ->member_only_item_n.php
->admin
   ->admin_only_item_1.php
   ->admin_only_item_2.php
   ...
   ->admin_only_item_n.php

Я не уверен, сколько элементов вы планируете иметь для каждого типа пользователей, поэтому я предположил, что по крайней мере три, поэтому я перечислил строки элементов три раза в каждом разделе. Общий раздел предназначен для файлов, которыми пользуются все.

Затем в PHP, когда вы загружаете специальную страницу, вы можете использовать следующий PHP-код в начале, чтобы добавить общие php-файлы (если применимо) независимо от раздел, в котором вы находитесь:

include "../common/shared_php_file_1.php";
include "../common/shared_php_file_2.php";

И в части HTML вы можете использовать следующие фрагменты кода в своем коде для добавления общих файлов:

<link rel="stylesheet" href="../common/somestylesheet.css">

<script type="text/javascript" src="../common/somejavascript.js"></script>

<img src="../common/someimage.jpg" width=1 height=1>

<img src="../common/someniceimage.png" width=1 height=1>

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

Кроме того, в вашей настройке вы захотите, чтобы сценарий входа в систему создавал какой-либо файл cookie, в котором хранится специальный хэш, представляющий, что пользователь вошел в систему, а затем, когда пользователь попытается получить доступ к сайту, используйте свой скрипт прочитайте его и сопоставьте с базой данных пользователей, и если пользователь не находится в нужном разделе сайта, его/ее следует перенаправить туда. Если пользователь не вошел в систему, его следует перенаправить в гостевой раздел.

Просто убедитесь, что в базе данных есть как минимум три поля. Один для имени пользователя, один для пароля и один для типа пользователя.

 0
Author: Mike -- No longer here, 2015-06-17 05:45:18