我正在尝试使用PHP中的include()
创建动态网页。
这个PHP页面有以下代码 - 字面意思是,所有文件都包含:
<?php
session_start();
$dbName = $_REQUEST['DBName'];
$tbName = $_REQUEST['TBName'];
$dbType = $_REQUEST['DBType'];
include('header.php');
switch($dbType)
{
case 'Calender':
include('CalenderPage.php');
exit;
case 'News':
include('NewsPage.php');
exit;
case 'Gallery':
include('GalleryPage.php');
exit;
}
include('footer.php');
?>
您认为这是创建动态PHP页面的好方法吗?
答案 0 :(得分:2)
你展示的是完美的。使用数组可以做得更简单:
<?php
session_start();
// Explicitly using $_GET or $_POST is better than $_REQUEST
$dbName = $_GET['DBName'];
$tbName = $_GET['TBName'];
$dbType = $_GET['DBType'];
include('header.php');
// be sure to have an array of allowed pages
// so people can't access pages they're not supposed to access
$allowed_pages = array("Calender", "News", "Gallery");
if (in_array($dbType, $allowed_pages))
include($dbType."Page.php");
else
die("Unknown page");
include('footer.php');
?>
答案 1 :(得分:1)
就个人而言,我不喜欢include()
函数来创建动态php页面。我发现很难避免变量在不同的php文件中发生冲突。假设在NewsPage.php
文件中你会更改$dbName
,这可能会导致主页面出现问题而你可能没有意识到出了什么问题。
我只包含带有类/函数的文件,这样我可以控制在包含的php文件中执行的代码,并且调试代码更容易。
答案 2 :(得分:0)
这对初学者来说很好,但请注意你的DRY问题,你要添加的每一页,你会写另外3行。 以这种方式维持它是不可能的。 我看到你在dbType和page之间有一个名称约定,试试:
include($dbType + 'Page.php');
而不是开关块
答案 3 :(得分:0)
此页面样式的名称是模板。它似乎与选择要显示的内容的任何其他方式一样有效。