Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > один стартовый скрипт, независимо от адр.страницы


Автор: victor79 26.4.2013, 23:54
как сделать, что бы управление всегда получал один и тот же файл php, а запрашиваемый адрес был в виде переменной?
т.е. я хочу сделать генерацию страниц из базы, что то вроде своей cms.

Автор: baLamooot 27.4.2013, 00:23
Не уверен, что правильно понял вопрос, но если вы подразумеваете, чтобы при любом раскладе http-запрос попадал на вход одного и того же файла, обычно это решается при помощи htaccess и mod_rewrite (в случае с сервером apache). Один из возможных вариантов.
В корень document_root кладется .htaccess файл следующего содержания:
Код

# Включаем рерайтинг
Options +Followsymlinks
RewriteEngine On

# Не использовать правила рерайтинга для реально существующих файлов
RewriteCond %{REQUEST_FILENAME} !-f

# Перенаправить все запросы на index.php с get-ключем request
RewriteRule ^(.*)$ index.php?request=$1 [QSA,L]

Теперь в этой же директории создайте файл index.php следующего содержания:
Код

<?php
echo $_GET['request'];


Допустим, у вашего сайта адрес site.ru. Наберите в адресной строке браузера http://site.ru/my/url

Если все правильно, то должно быть выведено my/url

Далее дело техники: надо парсить полученный запрос и выводить данные в соответствии с ним. Например так (продолжение index.php):
Код

$page = $_GET['request'];
$connectin = new \PDO(<подключаемся>);
$connection->prepare('SELECT * FROM pages WHERE id = :page LIMIT 1');
$connection->bindvalue(':page', $page, \PDO::PARAM_INT);
$connection->execute();

// В $content получаем динамические данные для страницы
$content = $connection->fetch();


Забиваем в адресную строку http://site.ru/1 и получаем в $content страницу из базы с id = 1

Объяснение примитивное, но общая схема такая.

Автор: Arantir 27.4.2013, 00:34
victor79, большинство php-фреймворков так и работают... ну это я говорю на случай, если вам не хочется писать то, что уже 100 раз написано.
А так суть всего-лишь в переадресации всех запросов на один файл. Но делается это на уровне сервера, а не php-скрипта.

Автор: victor79 27.4.2013, 01:01
это то что нужно. Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)