0

如果我们不使用框架,那么如何在 PHP 中为用户动态创建的新页面生成新的 url?例如,用户可能会创建一个新帐户或发布一篇新文章,那么我们将为该用户分配一个特定的 url,就像http://www.a.com/username/article/2011231.php一样。我的问题是如何生成特定数字 2011231 和整个 url?

4

2 回答 2

2

您正在寻找的是漂亮的网址

您需要使用 URL 重写。

您需要在数据库中使用适当的 URL 保存文章。假设用户创建了一篇文章How to bake a cake。您可以在article表格中存储这篇文章的漂亮 url,例如how-to-bake-a-cake. 您将需要一些机制来将标题转换为这些漂亮的 URL

你在前端的发言权article.php

的默认工作article.phpexample.com/article.php?url=how-to-bake-a-cake

在 中,article.php您会找到带有 privided prettyurl 的文章并显示它。

现在你会使用.htaccess实际上有一个像这样的 URLexample.com/article/how-to-bake-a-cake

在你的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} ^article/(.*)
RewriteRule article.php?url=$1
于 2012-05-10T03:59:36.543 回答
0

从外观上看,该 URL 由 yearmonthday.php 格式的日期组成。如果这是您要复制的内容,则可以使用date('Ymd'). 另一方面,假设您想要一个递增的数字并将文章存储在数据库中,只需运行您的INSERT命令,然后使用mysql_insert_id()之后的函数来获取 ID。然后,您需要 Apache 重写以将 /username/article/[number].php 重写为 PHP 文件,该文件将在数据库中查找该文章并显示它,如下所示:

RewriteEngine On
RewriteRule ^/username/article/(\d*)\.php$ /articles.php?articleid=$1

例如,这将需要一个请求http://domain.com/username/article/12345.php并将其发送到/articles.php?articleid=12345. 从那里,$_GET["articleid"]将包含 ID。如果你还需要 PHP 脚本来知道用户名,你可以使用这个:

RewriteEngine On
RewriteRule ^/(.*)/article/(\d*)\.php$ /articles.php?username=$1&articleid=$2

然后$_GET["username"]会有用户名和$_GET["articleid"]文章 ID。

于 2012-05-10T03:51:26.993 回答