,但我對它的解讀是你希望的方式來檢查$page
任何價值針對數據庫表中的鏈接值(pages
?),無havi ng將所有可能的值寫入您的switch
聲明中,
如果我的理解是正確的,那麼下面是一個快速和骯髒的函數,應該讓你這樣做。在一個實時的,流量很大的環境中,你顯然需要構建緩存,因此每個頁面加載都不會觸及數據庫,以及強大的輸入驗證,這兩者都不在下面的演示中,但這應該至少爲您提供一個下一步去哪裏的想法。
常見的庫文件:
/**
* Given a page name, see if we have an associated
* link in the db.
* If so, return the link value, else false
*/
function getTemplate($page)
{
// Check db to see if we have a link for this page
// On heavy-traffic sites, this should be cached out
$query = sprintf("SELECT link FROM pages WHERE name = '%s'",
mysql_real_escape_string($page));
$result = mysql_query($query, $db_cnx);
// Have we any results?
if (mysql_num_rows($result) > 0)
{
// Assumption: 'name' is unique in the db
$row = mysql_fetch_assoc($result);
return $row['link'];
}
else
{
return false;
}
}
的header.php:
include('common.lib.php');
if(isset($HTTP_GET_VARS['mod']))
{
$page = $HTTP_GET_VARS['mod'];
}
else
{
$page = 'home';
}
// Check whether our page has a link in the db
$template = get_template($page);
if($template)
{
require($template);
}
else
{
// Got false back from get_template, no link found
echo('Error: There is no file on this server with that name');
}
我讀不懂你的問題不是我能理解句子不缺少標點也 – 2010-08-14 18:53:43
,你有什麼問題嗎? – 2010-08-14 18:55:49