Php 动态包含方法
以下方法包括哪些是最佳实践方法,以及为什么Php 动态包含方法,php,Php,以下方法包括哪些是最佳实践方法,以及为什么 $page = $_GET['page']; 方法1 $pages = array('home', 'blog', 'about'); if( in_array($page, $pages) ) { include($page.'.php'); { else { die('Nice Try.'); } 方法2 if($page = 'home'){ include('home.php'); }else if($page = 'blog
$page = $_GET['page'];
方法1
$pages = array('home', 'blog', 'about');
if( in_array($page, $pages) )
{
include($page.'.php');
{
else
{
die('Nice Try.');
}
方法2
if($page = 'home'){
include('home.php');
}else if($page = 'blog'){
include('blog.php');
}else if($page = 'about'){
include('about.php');
}
方法3
if(str_replace("http://", "gth://", $page) == $page){
include_once $page;
}else{
die('Nice Try.');
}
还是其他解决方案?我不喜欢方法1和2,因为每次我添加新页面时,它总是需要更新。扩展/维护第一种方法最简单,第二种方法更糟糕。第三种方法是不可行的,因为它依赖于用户输入来要求页面。。。这将是一个安全漏洞扩展/维护第一种方法最简单,第二种方法更糟糕。第三种方法是不可行的,因为它依赖于用户输入来要求页面。。。这将是一个安全漏洞我相信第一个是最好的。你可以试试第二个,但这是给新生的。第三个问题是一个大问题,因为任何一个新黑客都可能破解你的“如果”状态,更多的漏洞将开始潜入 对于您的问题,在向数组添加新页面时,每次创建新页面时,对于第一种方法,我有一个解决方案:-
假设您将所有新页面放在一个文件夹“abc”中。现在只需编写一个文件代码,如下所示,即可读取该文件夹中的所有文件/页面:-
<?php
$page = $_GET['page'];
$pages = array();
/**
* If you are using all the pages existing in the current folder you are in,
* then use the below variable as:-
* $path = ".";
*/
$path = 'abc/'; // Change the Path here, related to this Folder name
$handle = opendir($path);
while (($file = readdir($handle)) !== false) {
$pages[] = $file;
}
closedir($handle);
if( in_array($page, $pages) ) {
include($page.'.php');
}
else {
die('Nice Try.');
}
?>
因此,您可以看到数组正在动态填充,而无需提及每次创建的所有页面。您只使用第一种方法。并将包含页面保存在一个单独的文件夹中,您每次都需要将其包含在其他主页中
希望有帮助。我相信第一个是最好的。你可以试试第二个,但这是给新生的。第三个问题是一个大问题,因为任何一个新黑客都可能破解你的“如果”状态,更多的漏洞将开始潜入 对于您的问题,在向数组添加新页面时,每次创建新页面时,对于第一种方法,我有一个解决方案:-
假设您将所有新页面放在一个文件夹“abc”中。现在只需编写一个文件代码,如下所示,即可读取该文件夹中的所有文件/页面:-
<?php
$page = $_GET['page'];
$pages = array();
/**
* If you are using all the pages existing in the current folder you are in,
* then use the below variable as:-
* $path = ".";
*/
$path = 'abc/'; // Change the Path here, related to this Folder name
$handle = opendir($path);
while (($file = readdir($handle)) !== false) {
$pages[] = $file;
}
closedir($handle);
if( in_array($page, $pages) ) {
include($page.'.php');
}
else {
die('Nice Try.');
}
?>
因此,您可以看到数组正在动态填充,而无需提及每次创建的所有页面。您只使用第一种方法。并将包含页面保存在一个单独的文件夹中,您每次都需要将其包含在其他主页中
希望有帮助。我会选择方法1。您只需为每个新页面更新数组。如果您关心安全性并希望能够轻松维护它,请使用第一种方法。你多久添加一次新页面?这里的问题是我有很多页面包含另一个php文件。例如games.php?page=arcade、comments.php?page=101、profile.php?page=edit等等。我选择方法1。您只需为每个新页面更新数组。如果您关心安全性并希望能够轻松维护它,请使用第一种方法。你多久添加一次新页面?这里的问题是我有很多页面包含另一个php文件。例如games.php?page=arcade、comments.php?page=101、profile.php?page=edit等等..但是它会从包含的页面中删除外部页面..所以我认为它是保存的,除非他们以某种方式将恶意php上传到服务器。但是它会从包含的页面中删除外部页面..所以我认为它是保存的,除非他们以某种方式将恶意php上传到服务器。哇,好主意!但是每次检查文件夹时不会导致任何性能问题吗?@Exoot-如果您的项目是中小型项目,则不会出现任何问题。但是如果你正在做一些SNS项目(Ning/Facebook的规模,或者一些非常大的房地产项目),那么可能会有点担心。但这也不会给你带来麻烦。哇,好主意!但是每次检查文件夹时不会导致任何性能问题吗?@Exoot-如果您的项目是中小型项目,则不会出现任何问题。但是如果你正在做一些SNS项目(Ning/Facebook的规模,或者一些非常大的房地产项目),那么可能会有点担心。但这不应该给你带来麻烦。