2012-06-13 4 views
-1

Я пытаюсь настроить систему, чтобы свести к минимуму сложность для людей, обновляющих сайт, поскольку я не буду основным человеком, обновляющим ежедневный контент, а также предоставляю чистые URL-адреса.Структура сайта для малого сайта без DB

Поскольку я не могу использовать БД, все содержимое находится в одной из двух базовых папок (/ private/content OR/private/utilities). Для обычных ежедневных обновлений утилиты (содержащие папку обложки страницы - заголовок, навигатор, нижний колонтитул и т. Д.) Не нуждаются в доступе. Это минимизирует количество видимого кода для ежедневного редактора.

Я создал массив ($ allowedContent), который имеет список доступных доступных разделов. Код проверяет этот массив, чтобы убедиться, что пользователь не пытается получить доступ к неприемлемому контенту. В приведенном ниже коде эти запросы будут успешными. Все остальное потерпит неудачу.

  • www.example.com/
  • www.example.com/popup/*
  • www.example.com/test
  • www.example.com/hello
  • www.example .com/foobar

Мой вопрос: Есть ли что-нибудь, что может быть проблемой при таком подходе?

.htaccess

RewriteEngine On 
# Rules 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

PHP

// parse the URL 
$requestURI = explode('/', $_SERVER['REQUEST_URI']); 
//print_r ($requestURI); 

// a list of non-restricted dynamic content 
$allowedContent = array("test", "hello", "foobar"); 
$allowAccess = false; // assume hackers :o 

// determine the section 
if (!$requestURI[1]) { // none defined - use root/home 
    $section = 'home'; 
    $skin = true; 
    $allowAccess = true; 
} elseif ($requestURI[1] == 'popup') { // popup - no skin 
    $section = $requestURI[2]; 
    $skin = false; 
    $allowAccess = true; 
} else { 
    if (in_array($requestURI[1], $allowedContent)) { // verify that the requested content is allowed/prevent someone from trying to hack the site 
     $section = $requestURI[1]; 
     $skin = true; 
     $allowAccess = true; 
    } else { // this would be either a 404 or a user trying to access a restricted directory 
     echo "evil laugh"; // obviously, this would change to a 404 redirect 
    } 
} 

Добавлен код, где содержание называется

// call the relevant content pieces 
if ($allowAccess == true) { 
    if ($skin == true) { 
     // call wrapper part 1 
     include $_SERVER['DOCUMENT_ROOT'] . '/private/utilities/wrapperOpen.php'; 

     // call aside 
     include $_SERVER['DOCUMENT_ROOT'] . '/private/utilities/header.php'; 

     // call aside 
     include $_SERVER['DOCUMENT_ROOT'] . '/private/utilities/aside.php'; 
    } 

    // call CONTENT (based on section) 
    include $_SERVER['DOCUMENT_ROOT'] . '/private/content/' . $section . '/index.php'; 

    if ($skin == true) { 
     // call branding 
     include $_SERVER['DOCUMENT_ROOT'] . '/private/utilities/branding.php'; 

     // call footer 
     include $_SERVER['DOCUMENT_ROOT'] . '/private/utilities/footer.php'; 

     // call wrapper part 2 
     include $_SERVER['DOCUMENT_ROOT'] . '/private/utilities/wrapperClose.php'; 
    } 
} 
+1

Можете ли вы добавить код, в который будете добавлены файлы с содержанием? В настоящее время я ничего не вижу, чтобы кто-то не мог получить доступ к http: //example.com/hello /../../../ etc/passwd'. – AndrewR

ответ

0

это будет работать. вы также изучаете использование xml для хранения данных, но вам нужно следить за использованием системной памяти и временем загрузки, если файлы становятся слишком большими. как можно дальше. Разве вы не можете использовать их в базе данных? веб-хостинг с базой данных дешево.

Смежные вопросы