一个文件多个页面


One file multiple pages?

我见过许多网站只有一个php文件(或没有扩展文件)和多个页面。例如:website.com/page.php?id=4,当有不同的id号(而不是4 -例如7)时,页面内容将会不同。

一个现实生活中的例子是一个游戏网站,其中标题和游戏对象随着id号的变化而变化-你可以在这里或这里看到这个:

你可以看到-游戏名称和游戏变化。

我也相信你会意识到即使是YouTube也可以做到这一点:youtube.com/watch?v=610XM39EE1o -不同的视频标题,视频,描述,评论等。youtube.com/watch?v=LnUGl_A1cYA -不同的视频标题,视频,描述,评论等

人们是怎么做的?如果他们使用一个数据库,他们存储整个html代码在那里(即去一个youtube链接,右键单击并选择"查看源代码")-或者他们分配到另一个页面(即page.php?Id =1将检索内容从/files/pages/1.php) -但这将是糟糕的存储和相当毫无意义的,如果这是它是如何完成的,论坛一定是困惑的,如果他们可以有像showtopic.php? Id =1701&showpost=21.

这是怎么做的?请不要请求我已经使用过的代码,因为我不知道从哪里开始!

提前感谢任何答案!如果这可能是一个重复的东西,我很抱歉-我不懂他们在这里的答案中使用的语言的一半!

基本上有一个或几个页面在模板中显示内容。模板不会改变,但模板中的内容会改变(对应于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>
有很多不同的方法来组织你的文件,使其更容易维护,但这是基本的思想。

martin先生的回答很好,但我想详细说明一下。请注意,这个解释是纯粹概念性的——所显示的代码只是为了说明,不应被视为适当的编码技术,甚至不应被视为有效的编码技术。

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,检查url中的id。它使用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's 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的文章你想要显示,并填写适当的区域。