Динамические страницы PHP с пользовательской ссылкой

Нижеприведенный код работает следующим образом:

http://www.website.com/?page=home вытащит контент из http://www.website.com/home.php

— или —

http://www.website.com/?page=About доставит контент с http://www.website.com/About.php

Код:

 // Set the default name $action = 'home'; // Specify some disallowed paths $disallowed_paths = array('admin'); if (!empty($_GET['page'])) { $tmp_action = basename($_GET['page']); // If it's not a disallowed path, and if the file exists, update $action if (!in_array($tmp_action, $disallowed_paths) && file_exists("{$tmp_action}.php")) $action = $tmp_action; } // Include $action include("$action.php"); ?> в // Set the default name $action = 'home'; // Specify some disallowed paths $disallowed_paths = array('admin'); if (!empty($_GET['page'])) { $tmp_action = basename($_GET['page']); // If it's not a disallowed path, and if the file exists, update $action if (!in_array($tmp_action, $disallowed_paths) && file_exists("{$tmp_action}.php")) $action = $tmp_action; } // Include $action include("$action.php"); ?> 

Этот код работает отлично для всех моих страниц, но теперь у меня есть одна специальная ссылка, которую мне нужно добавить http://www.website.com/?page=Search чтобы вытащить контент с сайта http://www.website.com/search/search.php вместо http://www.website.com/Search.php

Как я могу это сделать?

благодаря

Есть 2 варианта, вы всегда можете найти файл в подпапке, или у вас может быть специальный список страниц с их собственными путями, как и с disallowed_paths.

 $special_paths = array( "search" => "search/search.php", ); if(in_array($_GET['page'], $special_paths)) { $action = $special_paths[$_GET['page']]; 

Это будет означать, что в будущем другая специальная страница существует с другим путем, вы можете просто добавить ее в массив.

Полный код:

 <?php // Set the default name $action = 'home.php'; // Specify some disallowed paths $disallowed_paths = array('admin'); // special paths $special_paths = array( "search" => "search/search.php", "special_b" => "a/different/lengthier/path/file.php", ); if (!empty($_GET['page'])) { $tmp_action = basename($_GET['page']); // If it's not a disallowed path, and if the file exists, update $action if (!in_array($tmp_action, $disallowed_paths) && file_exists("{$tmp_action}.php")) { $action = $tmp_action.".php"; } elseif(isset($special_paths[$tmp_action])) { $action = $special_paths[$tmp_action]; } } // Include $action include("$action");