Помогите пожалуйста, как заменить Код (Text): Ob_start(); switch($_GET['p']){ case('cont'): include './pages/cont.php'; break; case('karta'): include './pages/karta.php'; Break; case('rom'): include './pages/tea/tea_romas.php'; Break; case('main'): include './pages/main.php'; Break; default: case('lip'): include './pages/tea/tea_lipa.php'; Break; на конструкцию типа If(isset($_GET['p']) и дальше что то, а потом if(file_exists("тут как-то подключить файл из папки через переменную" если у кто-то напишет образец буду благодарен
Рекомендую использовать "маппинг" Код (PHP): $action = isset($_GET['p']) ? $_GET['p'] : 'main'; $map = array( 'cont' => './pages/cont.php', 'karta' => './pages/karta.php', 'rom' => './pages/tes/tea_romas.php', 'main' => './pages/main.php', ); if (isset($map[$action)){ require $map[$action]; } else { header(/* 404 */ ); require '404.php'; }
но так все равно надо прописывать путь к каждому файлу отдельно, ведь можно сделать ссылку вида "?p=something" а потом подключать страницы один раз прописав if(file_exists('./папка со страницами/$p:.php')){include'./папка со страницами/$p:.php'}. Что то как то наподобе, может кто понял подскажет
Тут даже и такое намутить удалось))) Код (PHP): switch($get) { case true: $array=array('file1','file2','file3'); for($i=0;$i<sizeof($array);$i++) { if($get==$array[$i]) { $file=$get; } } break; default:$file='main'; } if(file_exists($file.'.php')) { require_once($file.'.php'); } Это так, "Полет мыслей" ... Лучше через иф... Код (PHP): $array=array('file1','file2','file3'); if($get) { for($i=0;$i<sizeof($array);$i++) { if($get==$array[$i]) { $file=$get; break; } } }else{$file='main';} if(file_exists($file.'.php')) { require_once($file.'.php'); }
Код (Text): <?php define('CONTENT', './content/'); define ('EXT', '.php'); ob_start(); $page = isset($_GET['page']) ? $_GET['page'] : 'default'; if(file_exists(CONTENT . $page . EXT)) include CONTENT . $page . EXT; $content = ob_get_contents(); ob_clean(); echo $content; ?> Вот что мне было нужно
Это была ссылка на комментарий php.net пример безопасного кода: http:// ru2.php.net/manual/ru/function.file-exists.php#56732 Извините, не знал что ссылка на php.net битая, так что придётся ручками её скопировать в адресную строку
Знаете, ли, если делать на одной названной $_GET переменной в одном месте допустим ?page=1 (для страниц), ?page=name (для файлов) то ваш вариант не покатит ) Ну если вы хотите это делать без написания, чем будет плох glob() ? И pathinfo() - проверить расширения файлов и дальше работать с этими файлами? Я лишь дал просто как пример. С кешем тоже поаккуратнее )