如果我们不使用框架,那么如何在 PHP 中为用户动态创建的新页面生成新的 url?例如,用户可能会创建一个新帐户或发布一篇新文章,那么我们将为该用户分配一个特定的 url,就像http://www.a.com/username/article/2011231.php一样。我的问题是如何生成特定数字 2011231 和整个 url?
2 回答
您正在寻找的是漂亮的网址
您需要使用 URL 重写。
您需要在数据库中使用适当的 URL 保存文章。假设用户创建了一篇文章How to bake a cake
。您可以在article
表格中存储这篇文章的漂亮 url,例如how-to-bake-a-cake
. 您将需要一些机制来将标题转换为这些漂亮的 URL
你在前端的发言权article.php
的默认工作article.php
是example.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
从外观上看,该 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。