Как создаются отдельные страницы сайта (помимо основной)?
Ничего не смог нагуглить по этой теме. Интересует создание отдельных страниц сайта помимо основной главной страницы.
Например есть главная страница с меню и при переходе по меню открываются другие страницы: о нас, каталог и т.д.
Читал еще давно о том, что никто заного не прописывает для этих страниц HTML и CSS код для header, footer и т.д, а с помощью PHP вставляет их на новую страницу. Еще интересует динамическое создание страниц как на форумах и т.д. Хотелось бы почитать об этом побольше. Любые ссылки на нужную информацию приветствуются.
У нас есть 3 файла PHP. Далее создаем index.php - основная страница. На странице есть меню с сылкой "О нас". Мы создаем еще один php файл например: info.php. Вставляем туда наших три PHP файла и меняем content. Так продолжаем с каждой отдельной страницей и в итоге если у нас меню с пятью ссылками на разные страницы, то у нас по 5 PHP файлов для каждой страницы, один index.php и три PHP файла: footer.php, content.php, header.php. Так все и работает?
Александр, Как это все допустим на том же toster'e происходит? Для каждого вопроса свой php файл? Почему в адресной строке после 550038 нет ".php"? И как при создании вопроса все автоматически генерируется?
meltmestnt, когда создаётся вопрос, то его заголовок и текст сохраняются, например, в базу и оттуда же потом выковыриваются. А для отображения вопросов достаточно лишь одного PHP файла (например, question.php).
Пример кода qustion.php
<?php
// Если получен GET-параметр с номером вопроса, то сохраняем этот номер для дальнейшей работы, а иначе просто записываем 0. В базе данных все номера начинаются именно с 1, поэтому для некорректного номера вопроса подойдёт значение 0.
$question_id = !empty($_get['question_id']) ? filter_input(INPUT_GET, 'question_id', FILTER_SANITIZE_NUMBER_INT) : 0;
if($question_id == 0)
{
// Номера вопроса нет. Отправляем пользователя на главную страницу.
header('Location: /'); // Заголовок для перенаправления
die; // Завершение работы скрипта
// Вместо перенаправления можно просто отобразить страницу с ошибкой о том, что такого вопроса нет.
}
// Тут уже пишем действия, если получен номер вопроса
require 'database.php'; // Скрипт с настройками подключения к БД
/* В этом месте должен быть код подключения к БД и извлечения из БД заголовка и текста вопроса.
Но в этом примере я просто сделал здесь массив с текстом вопроса и его заголовком. */
$question = [
'heading' => 'Как создаются отдельные страницы сайта (помимо основной)?',
'text' => 'Подскажите, как это всё работает?'
];
// Мы типа получили всё что нужно и готовы вывести всё это...
?>
<!-- Где-то в коде страницы... -->
<div class="question">
<!-- Заголовок вопроса --->
<h1><?=$question['heading'];?></h1>
<!-- Текст вопроса -->
<p><?=$question['text'];?></p>
</div>
После создания такого файла, всё, что остаётся, - это настроить конфиг сайта (в случае с Apache это файл .htaccess в корне сайта) таким образом, чтобы URL вида toster.ru/q/1234 интерпретировалось как toster.ru/question.php?question_id=1234
Александр, Все равно не до конца понятно именно отдельные страницы вопросов. Если у нас есть question.php, в нем есть content.php который собственно и отображает все вопросы. question.php подключается к базе и автоматически выводит все созданные вопросы. Но выводит только теги и заголовок. При переходе же на сам вопрос у нас уже открывается другая страница с этим вопросом в развернутом виде. Не могу понять как это может быть один файл question.php. Если это действительно так, опишите пожалуйста как это происходит.
Как это все допустим на том же toster'e происходит?
На сайтах типа Тостера есть просто щаблон страницы с вопросами и шаблон с конкретным вопросом -- а данные уже вставляются в нее из БД в зависимости от урла :)
Сервер все запросы пересылает на него, php-код анализирует запрос, и возвращает запрограммированный ответ. Посмотрите как работают php-фреймворки, всё поймете.