如果我们不使用框架,那么如何在PHP中为可能由用户动态创建的新页面生成新的URL? 例如,用户可以创建新帐户或发布新的文章,然后我们将为用户分配特定网址,就像http://www.a.com/username/article/2011231.php一样。 我的问题是如何生成具体的数字2011231和整个网址?
答案 0 :(得分:2)
你在寻找的是漂亮的网址
您需要使用网址重写。
您需要在数据库中使用适当的URL保存文章。假设用户创建了一篇文章How to bake a cake
。您可以在article
表格中存储此文章的精美网址,例如how-to-bake-a-cake
。您将需要一些机制将标题转换为这些漂亮的URL
前端的发言是article.php
article.php
的默认工作是example.com/article.php?url=how-to-bake-a-cake
在article.php
中,您会找到带有私有商品的文章并展示它。
现在,您可以使用.htaccess
实际拥有example.com/article/how-to-bake-a-cake
在.htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} ^article/(.*)
RewriteRule article.php?url=$1
答案 1 :(得分: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。