Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

php.как организовать структуру типа index.php?id=page1 и т.д

2.1K
17 октября 2006 года
Ariman
102 / / 20.10.2005
Доброго времени суток, увжаемые форумчане!

Нужен совет или подсказка, где прочитать, или как организовать следующую структуру сайта на php.

На многих сайтахна пхп, адрес страницы имеет вид index.php?id=чему-либо.

Как это организовывается. подскажите пожалуйста.

Заранее спасибо за ответ.
7.3K
17 октября 2006 года
JB13
64 / / 05.09.2005
В index.php создаешь примерно такой код

 
Код:
switch (@$_GET['id']) {
   case 'page1': $inc_page = 'page1.php'; break;
   case 'page2': $inc_page = 'page2.php'; break;
   ...
   default: $inc_page = false;
}

if ($inc_page) require_once($inc_page);


Главное, нельзя делать без проверки, т.е.

 
Код:
require_once(@$_GET['id']);


Почиать можно в мануале PHP
http://php.net/include
http://php.net/include_once
http://php.net/require
http://php.net/require_once
2.1K
17 октября 2006 года
Ariman
102 / / 20.10.2005
Спасибо.А можно подробней про проверку? На что?
13
17 октября 2006 года
RussianSpy
3.0K / / 04.07.2006
[QUOTE=Ariman]Спасибо.А можно подробней про проверку? На что?[/QUOTE]
Он имеет ввиду не подставлять напрямую переменную, а делать через switch дабы оградить себя от РНР-инклюдинга
7.3K
17 октября 2006 года
JB13
64 / / 05.09.2005
На проверку того, что вводит пользователь или что он может изменить, т.е. если ты укажешь просто

 
Код:
require_once(@$_GET['id']);


то в эту id можно будет запихнуть, что угодно, например http://www.site.ru/index.php?id=любой_файл

Вообще в этой же ветке форума, есть FAQ по безопасности
http://forum.codenet.ru/showthread.php?t=21825
2.1K
17 октября 2006 года
Ariman
102 / / 20.10.2005
Насколько я понял из фака, нужно сделать проверку на наличие самого файла
 
Код:
if(file_exists("modules/test.php"))
$exists=1;
else
$exists=0;

if($exists!=1) {
echo("Access is refused. Hi, hazker!!!");
exit;
}


и еще вот такая проверка:
 
Код:
if (!defined('SAFETY')) { die('Invalid context'); }

if (SAFETY=='safety')
 {
  code....
 }
else
 {
  echo "хакер выпей ЙАду";
 }

Последнее я не совсем понял как реализовывается, поясните пожалуйста. Что это за переменная и как и что она может содержать.
13
17 октября 2006 года
RussianSpy
3.0K / / 04.07.2006
[QUOTE=Ariman]Что это за переменная и как и что она может содержать.[/QUOTE]
Какая именно?

не нужно ничего выдумывать - все просто:
Код:
<?
$page = intval($_GET['page']); //Берем ID страницы из адресной строки

switch($page) //Выбираем соответствующий файл в зависимости от значения переменной
{
   default:  
   case 0: $page_name = 'page0.php'; break;
   case 1: $page_name = 'page1.php'; break;
   case 2: $page_name = 'page2.php'; break;
   case 3: $page_name = 'page3.php'; break;
}
include_once($page_name); //Подключаем страницу
/*    ВСЕ! НИЧЕГО БОЛЕЕ НЕ ТРЕБУЕТСЯ   */
?>
2.1K
19 октября 2006 года
Ariman
102 / / 20.10.2005
Спасибо за код.

а переменная Safety, что она содержит? Это из темы фака по безопасности.
7.3K
20 октября 2006 года
JB13
64 / / 05.09.2005
Это один из способов защиты от того, чтобы твои модули, которые подгружаются через index.php нельзя было запустить напрямую.
т.е. в index.php ты определяешь константу SAFETY, а в остальный модулях проверяешь ее наличие. И если этот модуль был запущен не с index.php и соответсвенно, SAFETY не определен, то страница ругается фразой "хакер выпей йаду".
15K
20 октября 2006 года
r0cha!
11 / / 24.04.2006
Ксати, такой вопрос( не хочу создавать новую тему) :
ЧТо быстрее работает include() или fopen() ?
Те что лучше
 
Код:
case '1': $inc_page = 'page1.php'; break;
hp] case 'page1': fopen("file.txt","r") ; ...; break;
13
20 октября 2006 года
RussianSpy
3.0K / / 04.07.2006
[QUOTE=r0cha!]Ксати, такой вопрос( не хочу создавать новую тему) :
ЧТо быстрее работает include() или fopen() ?
Те что лучше
 
Код:
case '1': $inc_page = 'page1.php'; break;
hp] case 'page1': fopen("file.txt","r") ; ...; break;[/QUOTE]
Что вкуснее небо или четверг?
Уважаемый - читаем мануал чтобы понять в чем разница между функциями...
15K
20 октября 2006 года
r0cha!
11 / / 24.04.2006
Да нет.. Вы меня не поняли.
13
20 октября 2006 года
RussianSpy
3.0K / / 04.07.2006
[QUOTE=r0cha!]Да нет.. Вы меня не поняли.[/QUOTE]
Ну так просвятите
8
21 октября 2006 года
mfender
3.5K / / 15.06.2005
Не мешайте котлеты с мухами: fopen() всего-лишь открывает некий файл для дальнейшей работы с ним и возвращает handler.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог