Php 有没有更干净的方法来写这篇文章
我正在用php编写一个项目,该项目将基本上为我提供一个网页,其中包含指向以下内容的链接:Php 有没有更干净的方法来写这篇文章,php,mysql,html,dynamic,Php,Mysql,Html,Dynamic,我正在用php编写一个项目,该项目将基本上为我提供一个网页,其中包含指向以下内容的链接: 包含存储在mysql数据库中的我最喜欢的youtube视频的页面 有我最喜欢的游戏的网页 音乐等 所有内容都将直接嵌入网页中,而不是链接到网站 为了简化这一点,我制作了一个主模板“index.php”,然后使用$\u GET将页面和其他信息传递到模板,然后由页面检查脚本处理,该脚本执行许多ifs以确定要加载到网站中的php脚本 我的问题在于,与我目前的方法相比,将这些脚本加载到网站中的首选方法是什么 i
- 包含存储在mysql数据库中的我最喜欢的youtube视频的页面
- 有我最喜欢的游戏的网页
- 音乐等
$\u GET
将页面和其他信息传递到模板,然后由页面检查脚本处理,该脚本执行许多ifs以确定要加载到网站中的php脚本
我的问题在于,与我目前的方法相比,将这些脚本加载到网站中的首选方法是什么
if ($_GET["page"] == "videos"){
include ("dynapage/scripts/videos/videos.php");
}
if ($_GET["page"] == "music"){
include ("dynapage/scripts/music/music.php");
}
ect
使用includes将此代码添加到我的模板中是一件好事,还是有更好的方法可以推荐
注意:检查中已包括对isset的检查,并且可根据要求提供传统pbs。看起来您只需执行以下操作即可:
if( file_exists($fn = "dynapage/scripts/".$_GET['page']."/".$_GET['page'].".php"))
include($fn);
看起来你可以做到:
if( file_exists($fn = "dynapage/scripts/".$_GET['page']."/".$_GET['page'].".php"))
include($fn);
也许是这样的:
$config = array(
'videos' => 'dynapage/scripts/videos/videos.php',
'music' => 'dynapage/scripts/music/music.php'
);
if(isset($config[$_GET['page']])) {
include($config[$_GET['page']]);
}
写很多if子句(;可能是这样的:
$config = array(
'videos' => 'dynapage/scripts/videos/videos.php',
'music' => 'dynapage/scripts/music/music.php'
);
if(isset($config[$_GET['page']])) {
include($config[$_GET['page']]);
}
更好一点,然后编写许多if子句(;使用一个数组,该数组将
$\u GET[“page”]
值作为键,php文件名作为值。然后只需检查它是否在数组中,如果在数组中,则将其包括在内。然后将值写入数组,而不是编写许多if
子句
下面的代码示例显示了这一点,此外,它还有一个加载页面的函数,因为包含的脚本不会在意外包含的上下文中设置变量
$pages = array(
'videos' => 'videos/videos.php',
'music' => 'music/music.php',
);
/**
* include a page template
*/
function load_page(array $pages, $page, $path = 'dynapage/scripts')
{
if (isset($pages[$page])) return;
include ($path.'/'.$pages[$page]);
}
if (isset($_GET['page']))
{
load_page($pages, $_GET['page']);
}
使用一个数组,该数组的键为
$\u GET[“page”]
值,值为php文件名。然后,您只需检查它是否在数组中,如果在数组中,则将其包括在内。然后将值写入数组,而不是写入许多if
子句
下面的代码示例显示了这一点,此外,它还有一个加载页面的函数,因为包含的脚本不会在意外包含的上下文中设置变量
$pages = array(
'videos' => 'videos/videos.php',
'music' => 'music/music.php',
);
/**
* include a page template
*/
function load_page(array $pages, $page, $path = 'dynapage/scripts')
{
if (isset($pages[$page])) return;
include ($path.'/'.$pages[$page]);
}
if (isset($_GET['page']))
{
load_page($pages, $_GET['page']);
}
使用具有
$\u GET[“page”]的数组
value作为键,php文件名作为值。然后只需检查它是否在数组中,如果在数组中,则将其包括在内。然后将值写入数组中,而不是写入许多if
子句。注意,我刚刚意识到这对我的项目不会有问题,但通过替换$\u GET,这难道不是黑客可以接受的吗带有文件名并加载该文件的url使用具有$\u GET[“page”]的数组
value作为键,php文件名作为值。然后只需检查它是否在数组中,如果在数组中,则将其包括在内。然后将值写入数组中,而不是写入许多if
子句。注意,我刚刚意识到这对我的项目不会有问题,但通过替换$\u GET,这难道不是黑客可以接受的吗带有文件名的url并加载该文件非常感谢,这比使用多个“如果”更有意义。我很乐意为您投票,但我没有15个代表,因此请接受我的衷心感谢。不安全,请使用控制数组使用hakre或ahmet的答案,以便只加载正确批准的页面。非常感谢,这使o比使用多个“如果”更有意义,我很乐意投票支持你,但我没有15个代表,因此请接受我的衷心感谢。不安全,请使用控制数组使用hakre或ahmet的答案,以便只加载正确批准的页面。感谢你的帖子,我很喜欢它,因为它可以防止关于虚假美元的黑客攻击,但我会我不能使用它,因为我不知道如何编辑它,如果我选择将所有文件放在脚本目录中,而不是scripts/videos/video.php,我可以使用/scripts/videos.phpYeah,路径前缀函数有一个错误。这只是一个示例,根据您自己的需要编辑它,您也可以使用完全限定的路径。我使用了ahmets one由于它使用相同的基本概念,但适用于修改后的脚本id根中的文件,但我的php最好是基本的,但我非常感谢您的贡献。对于您的帖子,我非常喜欢它,因为它可以防止关于虚假$\u GET值的黑客攻击,但是我不能使用它,因为如果我选择将所有文件都放在纸条中,我不知道如何编辑它ts目录而不是scripts/videos/video.php我可以使用/scripts/videos.phpYeah路径前缀函数有一个错误。这只是一个示例,根据您自己的需要编辑它,您也可以使用完全限定的路径。我使用了ahmets one,因为它使用相同的基本概念,但适用于modifi脚本id根目录中的文件虽然我的php是最基本的,但我很感激你的贡献