在我看来(刚刚离开你的帖子)你有一个目录,里面有一堆文件“user1.html”、“user2.html”或类似的东西。所有这些都相同或相似,因为它们基本上是相同的模板。
我的建议:有一个数据库表(或一个平面文件,但我推荐一个数据库表)将用户 ID(或名称,但是你有他们安排)映射到模板。例如,如果 user1 和 user2 使用 template_default.html,而 user3 使用 template_popular.html,那么您的数据库中将包含以下内容:
name|template
user1|template_default.html
user2|template_default.html
user3|template_popular.html
然后在当前决定向用户显示哪个页面的任何代码中,将其更改为将用户选择的模板从数据库中拉出并改为显示。那么你只有 1 或 2 页而不是 127 页。
如果允许用户对其模板进行编辑,也可以将其作为元数据存储在表中,那么您可以使用替换参数将其添加到模板中。
例子:
MySQL 表:
CREATE TABLE user_templates (
`user` varchar(100),
template varchar(100)
);
收到新用户后:
INSERT INTO user_templates(`user`,template) VALUES("<username>","default_template.html");
用户选择新模板后:
UPDATE user_templates set template = "<new template>" WHERE `user` = "<username>";
在用户加载用户页面时(这在 php 中完成):
$template = "default_template.html";
$query = "SELECT template FROM user_templates WHERE `user` = \"" . mysql_real_escape_string($username) . "\"";
$result = mysql_query($query,$databaseHandle);
if ($result && mysql_num_rows($result) > 0) {
$template = mysql_result($result,0,"template");
}
// 1st way to do it
$pageToLoad = "http://www.someserver.com/templates/$template";
header("Location: $pageToLoad");
// 2nd way, if you want it embedded in a page somewhere
$directory = "/var/www/site/templates/$template";
$pageContents = file_get_contents($directory);
print "<div id=\"userPage\">$pageContents</div>";