|
|
|
| Ну собственно сайт состоит из страницы index.php, в которую инклудятся другие страницы в зависимости от параметра, передаваемого методом $_GET['page'], как то так:
index.php?page=1 то инклудится страница 1.php
Есть 2 способа реализации этой затеи, так вот вопрос какая из них лучше в плане функциональности и защиты (хотя я так полагаю, что оба способа не требуют доп. защиты):
if(!@include('page/'.intval($_GET['page']).'.php'))include'page/1.php'
|
$page='page/'.intval($_GET['page']).'.php';if(is_file($page))include $page;else include'page/1.php'
|
| |
|
|
|
|
|
|
|
для: nikolayers
(28.05.2011 в 15:49)
| | 2й способ, т.к. из файла подключаемого include можно вернуть значение, например false.
И тогда в первом варианте подключатся 2 страницы. | |
|
|
|
|
|
|
|
для: sl1p
(28.05.2011 в 16:40)
| | я немножко не согласен | |
|
|
|
|
|
|
|
для: sl1p
(28.05.2011 в 16:40)
| | Но почему? Я уже и сам вьехал по ходу разработки сайта
Пошаговая работа скрипта:
1) инклудится страница с параметром
2) @ типо игнорирует ошибку, тоесть если инклуд не удался то ошибку юзер не увидит
3) если инклуд не удался, то инклудится заданная страница, если же напротив, то ниче не делается, ведь инклуд и так произошел
Так что оба скрипта выполняют одно и тоже, но по-разному. | |
|
|
|
|
|
|
|
для: sl1p
(28.05.2011 в 16:40)
| | Можно выбрать первый или второй вариант, а из ваших слов получается, что автор будет использовать обо варианта одновременно. | |
|
|
|
|
|
|
|
для: verg
(01.06.2011 в 14:57)
| | sl1p прав. Читайте внимателней | |
|
|
|
|
|
|
|
для: MHz
(01.06.2011 в 16:07)
| | вот и прикол что я б не обращался на форум если был бы уверенным в скрипте...А то что я отстаиваю мнение, то это лишняя возможность разобраться.
В чем slip прав, если там в любом случае инклудится страница всего раз:
Если инклуд удачный, то скрипт завершает работу, если инклуд неудачный, то инклудится стандартная страница, а ошибка о неудачи первой страницы не выводится, так что дважды страницы загрузится не могут ну никак, ведь там четкое условие:
При неудачном инклуде идет загрузка определенной страницы, в противном случае ниче не произойдет, ведь инклюд сработал...
Я так думаю, если не прав то могу признать)) только докажите | |
|
|
|
|
|
|
|
для: nikolayers
(28.05.2011 в 15:49)
| | Эта не 1 алгоритм, это 2 разных способа реализации его | |
|
|
|
|
|
|
|
для: nikolayers
(02.06.2011 в 01:43)
| | Ну например если будет такое сожержание файлов:
Файл 1.php
<?php
echo ('This File "1.php" <br>');
/*
Какой-то код...
*/
?>
|
Файл 2.php
<?php
echo ('This File "2.php" <br>');
/*
Какой-то код...
*/
return;
?>
|
Файл index.php
<?php
$_GET['page'] = 2; // пробуем подключить файл 2.php
if(!@include('page/'.intval($_GET['page']).'.php'))include'page/1.php';
/*
Результат
This File "2.php"
This File "1.php"
*/
?>
|
| |
|
|
|
|
|
|
|
для: MHz
(02.06.2011 в 10:59)
| | Ну есть в папке page 2 файла 1.php && 2.php
<?php
$page='page/'.intval($_GET['page']).'.php';
/*подключаем файл, к примеру 1, то include возвратит true значит ничего больше не произойдет,
если подключим файл 2, будет тоже самое, ведь файл 2 существует, если файл 3 подключим, то
инклуд не удастся, вернется значение false, ошибку не выбьет, и загрузится стандартная страница
*/
if(include($page)==false){
include'page/1.php';
}
?>
|
| |
|
|
|