Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 动态包含方法_Php - Fatal编程技术网

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的规模,或者一些非常大的房地产项目),那么可能会有点担心。但这不应该给你带来麻烦。