2010-07-04 2 views
0

Среди следующих методов включают методы, которые лучше всего практиковать и почему?динамические методы включают

$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, поскольку его всегда нужно обновлять каждый раз, когда я добавляю новую страницу.

+0

Я бы пошел с методом 1. Вам просто нужно обновить массив для каждой новой страницы. – casablanca

+0

Если вы заботитесь о безопасности и хотите быть в состоянии поддерживать ее легко, перейдите к первому методу. Как часто вы добавляете новую страницу? –

+0

проблема здесь, у меня есть много страниц, которые включают другой файл php. например, games.php? page = arcade, comments.php? page = 101, profile.php? page = edit и т. д. – kornesh

ответ

2

Я считаю, что первый из них является лучшим из множества. Вы можете попробовать второй, но это для свежего. И третий один является BIG NO, потому что любой свеж хакер может взломать ваш «если» состояние, более & лазейки начнет ползучую в.

Что касается вашей проблемы, при добавлении новой страницы в массив, каждый время создания новой страницы, для первого метода у меня есть одно решение: -
Предположим, вы помещаете все новые страницы в одну папку «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.'); 
} 
?> 

Итак, вы видите, что массив наполняется динамически, без необходимости упоминать все страницы вы создаете каждый раз. И вы используете только первый метод. И сохраните включенные страницы в одной отдельной папке, которую вам нужно будет включать каждый раз, на другие основные страницы.

Надеюсь, это поможет.

+0

ничего себе, отличная идея! но не будет ли причиной каких-либо проблем с производительностью для проверки папки каждый раз? – kornesh

+1

@Exoot - Если ваш проект является небольшим/средним, то проблем не возникнет. Но скажите, выполняете ли вы какой-то проект SNS (калибра Ning/Facebook или некоторые очень большие проекты в сфере недвижимости), тогда это может быть немного обеспокоено. Тем не менее, это не должно беспокоить вас. –

3

продление/поддержание первого способа проще всего, второй способ хуже. Третий путь - это не путь, так как он полагается на ввод пользователя на требуемые страницы ... он будет защитным отверстием

+0

, но он удаляет внешние страницы из включенного. Так что я думаю, что его сохранение, если только они не будут каким-то образом загрузите вредоносный php на сервер. – kornesh

Смежные вопросы