Один файл, несколько страниц?

0

Я видел множество сайтов с одним файлом php (или без расширения файла) и несколькими страницами. Примером может быть: website.com/page.php?id=4, где содержимое страницы будет отличаться, когда существует другой номер идентификатора (вместо 4 - например, 7).

Пример реальной жизни - это игровой сайт, где название и игровой объект меняются по мере изменения номера идентификатора - вы можете увидеть это здесь или здесь:

Как вы можете видеть - названия игр и изменения игры.

Также я уверен, что вы поймете, что даже YouTube может это сделать: youtube.com/watch?v=610XM39EE1o - другое название, видео, описание, комментарии и т.д. Youtube.com/watch?v=LnUGl_A1cYA - другое название видео, видео, описание, комментарии и т.д.

Как люди это делают? Если они используют базу данных, они хранят там код WHOLE html (например, перейдите по одной из этих ссылок на YouTube, щелкните правой кнопкой мыши и выберите "источник просмотра") - или они назначают его другой странице (например, page.php? Id = 1 будет извлекать контент из /files/pages/1.php), но это было бы плохо при хранении и совершенно бессмысленно, и если это так, то его форумы должны вводить в заблуждение, если они могут иметь что-то вроде showtopic.php? Id = 1 701 & showpost = 21.

КАК это сделано? Пожалуйста, не запрашивайте код, который я пытался использовать, потому что я не знаю, с чего начать !.

Заранее благодарим за любые ответы! И извините, если это возможный дубликат всего - я не понимаю половину языка, который они используют на ответах здесь вообще!

  • 0
    Вот именно и, скорее всего, они используют БД. Тем не менее, вы должны быть осторожны при использовании id=xxx , лучше использовать mysqli_ с подготовленными утверждениями или PDO, если вы хотите продолжить свое исследование.
  • 0
    Спасибо за ответ! Так что, если они используют БД - они буквально хранят html-код в той же строке, что и идентификатор (например, для таблицы с именами столбцов 'id' и 'html_code' - первая строка имеет идентификатор ' 1 », а« html_code »совпадает с кодом в диалоговом окне« Просмотр источника »со страницы YouTube (которое вы получаете, щелкнув правой кнопкой мыши на странице YouTube и выбрав« Просмотр источника ») - это было бы беспорядочно не так ли?
Показать ещё 2 комментария
Теги:
file
get

2 ответа

2

У вас в основном есть одна страница или несколько страниц, отображающих контент в шаблоне. Шаблон не изменяется, но содержимое внутри шаблона (соответствует параметрам в URL).

Псевдокод:

<?php

$id = isset($_GET['id']) && is_valid_id($_GET['id']) ? $_GET['id'] : null;
if (!isset($id)) {
    // 404!
}

// get data
$sql = "SELECT * FROM forum WHERE id = $id";
// etc...
?>

// display HTML
<p>Welcome to forum: <?php echo $result['title']; ?></p>

Существует множество способов организовать ваши файлы, чтобы упростить их поддержку, но это основная идея.

0

Ответ господина Мартина - хороший, но я хотел немного рассказать. Обратите внимание, что это объяснение должно быть чисто концептуальным - приведенный код просто для иллюстрации и не должен восприниматься как надлежащий или даже рабочий, метод кодирования.

Html не хранится в базе данных - данные, хранящиеся в html, сохраняются. Скажем, у вас очень простой блог, где каждая страница - myblog.php?post=id, где id - это номер, который представляет эту конкретную статью в блоге. В базе данных у вас может быть таблица типа:

Table: articles
-------------------------------------------------------------------------
| ID       |    Title         |    Content                              |
======================================================================= |
| 1        | My First Article |  This is a story about...blah blah blah |
| 2        | Another Article  |  Blah blah blah story content here      |
| ...      |  ...             |  ....                                   |
| 56       | My 56th Article! |  Here is a great story about blah blah  |
-------------------------------------------------------------------------

Затем у вас есть php-страница, myblog.php, которая проверяет id в URL- myblog.php. Он использует этот id для захвата соответствующей статьи из articles таблицы базы данных. Предположим, что мы показываем статью с id=1, поэтому URL-адрес myblog.php?id=1

if (isset($_GET['id']))
    $id = $_GET['id'];
else die('No article id found!');

$query = "SELECT title, content FROM articles WHERE id = $id";
// use mysqli or pdo to execute this query, and you'll get an array with that article data, in this example, article 1...

$data['title'] == 'My First Article';
$data['content'] == 'This is a story about...blah blah blah';

Затем вы вставляете эти данные в шаблон html, который используется для отображения любой данной статьи

<h1><?=$data['title']?></h1>
<p><?=$data['content']?></p>

Таким образом, вы видите, что каждая статья всегда будет иметь заголовок для отображения заголовка, <h1> и области для отображения содержимого статьи, <p>. myblog.php - это один и тот же макет для каждой статьи - он имеет те же html и css, но зависит от знания id статьи, которую вы хотите отобразить, и заполнения соответствующих областей.

  • 0
    Если бы вы сделали это, как бы вы поддерживали адрес в то же время? Как бы вы сохранили URL-адрес, например: example.com/article/1 или example.com/page/page. Вы по-прежнему посещаете example.com/index.php.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню