没有DB的小型站点的网站结构

时间:2012-06-13 21:30:40

标签: php

我正在尝试设置一个系统,以尽量减少更新网站的人员的复杂性,因为我不会是更新每日内容的主要人员,也会提供干净的网址。

由于我无法使用数据库,因此所有内容都驻留在两个基本文件夹之一(/ 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 个答案:

答案 0 :(得分:0)

这会奏效。 你coyuld也考虑使用xml来存储数据,但是如果文件太大,你需要监视系统内存使用情况和加载时间。在可能的情况下将它们压缩起来。 你不能和他们谈谈使用数据库吗?使用数据库的虚拟主机很便宜。