Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загрузка страницы PHP
 
 автор: nikolayers   (28.05.2011 в 15:49)   письмо автору
 
 

Ну собственно сайт состоит из страницы 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'

  Ответить  
 
 автор: sl1p   (28.05.2011 в 16:40)   письмо автору
 
   для: nikolayers   (28.05.2011 в 15:49)
 

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

  Ответить  
 
 автор: nikolayers   (28.05.2011 в 19:33)   письмо автору
 
   для: sl1p   (28.05.2011 в 16:40)
 

я немножко не согласен

  Ответить  
 
 автор: nikolayers   (01.06.2011 в 14:39)   письмо автору
 
   для: sl1p   (28.05.2011 в 16:40)
 

Но почему? Я уже и сам вьехал по ходу разработки сайта
Пошаговая работа скрипта:
1) инклудится страница с параметром
2) @ типо игнорирует ошибку, тоесть если инклуд не удался то ошибку юзер не увидит
3) если инклуд не удался, то инклудится заданная страница, если же напротив, то ниче не делается, ведь инклуд и так произошел

Так что оба скрипта выполняют одно и тоже, но по-разному.

  Ответить  
 
 автор: verg   (01.06.2011 в 14:57)   письмо автору
 
   для: sl1p   (28.05.2011 в 16:40)
 

Можно выбрать первый или второй вариант, а из ваших слов получается, что автор будет использовать обо варианта одновременно.

  Ответить  
 
 автор: MHz   (01.06.2011 в 16:07)   письмо автору
 
   для: verg   (01.06.2011 в 14:57)
 

sl1p прав. Читайте внимателней

  Ответить  
 
 автор: nikolayers   (02.06.2011 в 01:39)   письмо автору
 
   для: MHz   (01.06.2011 в 16:07)
 

вот и прикол что я б не обращался на форум если был бы уверенным в скрипте...А то что я отстаиваю мнение, то это лишняя возможность разобраться.

В чем slip прав, если там в любом случае инклудится страница всего раз:
Если инклуд удачный, то скрипт завершает работу, если инклуд неудачный, то инклудится стандартная страница, а ошибка о неудачи первой страницы не выводится, так что дважды страницы загрузится не могут ну никак, ведь там четкое условие:
При неудачном инклуде идет загрузка определенной страницы, в противном случае ниче не произойдет, ведь инклюд сработал...

Я так думаю, если не прав то могу признать)) только докажите

  Ответить  
 
 автор: nikolayers   (02.06.2011 в 01:43)   письмо автору
 
   для: nikolayers   (28.05.2011 в 15:49)
 

Эта не 1 алгоритм, это 2 разных способа реализации его

  Ответить  
 
 автор: MHz   (02.06.2011 в 10:59)   письмо автору
 
   для: 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" 
*/

?>

  Ответить  
 
 автор: nikolayers   (02.06.2011 в 11:59)   письмо автору
 
   для: 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';
}
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования