Нижеприведенный код работает следующим образом:
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");