【问题标题】:Generate pages on the fly with PHP使用 PHP 即时生成页面
【发布时间】:2012-07-11 19:38:41
【问题描述】:

我是 PHP 新手,我很好奇您是如何动态生成页面的?

我有一个用户表,我从我的数据库中提取并显示在我的主页上,并且我知道我可以将他们的用户 ID 作为 POST 变量传递给“mysite.com/profilepage.php”,然后有一个在该页面上查询将提取该 ID 的所有相关信息,但说我希望该页面为“mysite.com/user-profiles/john-doe.php”?

这会用.htaccess 文件完成吗?任何帮助是极大的赞赏!

【问题讨论】:

  • 谷歌搜索url rewriting。您可以将对user-profiles/john-doe.php 的请求转换为profilepage.php?username=john-doe
  • ^^^ 并不是说​​ mysite.com/profilepage.php?id=7mysite.com/user-profiles/john-doe 更糟糕.php 忽略所有的 SEO BS
  • 谢谢大家,只是出于好奇,如果我传递了用户 ID,我还可以使用 url 重写将 id 自动更改为该用户的名称吗?记住可能有 300 个用户?
  • 如果是我,我会放弃.php,文件扩展名在网址中越来越少见。毕竟重写规则仍然能够重定向到正确的位置。
  • 你根本不需要使用重写规则,简单的只需使用 mysite.com/profilepage.php?id=7 profilepage.php,将使用 id 来获取数据数据库

标签: php mysql .htaccess


【解决方案1】:

如果您必须将该页面称为mysite.com/user-profiles/john-doe.php,您可以使用评论中提到的 mellamokb 的 URL 重写将 URL 更改为该 URL。

但就 PHP 而言,这样做的方法是创建一个 PHP 页面(我建议使用user-profiles.php),然后使用GETPOST 将用户名传递给它。假设您只是阅读并且相关信息是公开的,GET 似乎很好,在这里更容易解释。

您可以通过将浏览器指向user-profiles.php?username=John-Doe 并在user-profiles.php 中包含这样的代码来访问相关页面(由PHP“动态”生成):

if ( isset($_GET['username']) )
{
    $username = $_GET['username'];
    // you now know the passed username
}
else
{
    // some kind of error handling for when there is no username
}

您现在知道您的 PHP 文件中有相关的用户名,并且可以使用它来创建您想要的页面。如果您愿意,还可以使用 URL 重写将 user-profile.php?username=John-Doe 更改为 user-profiles/John-Doe

警告:不要使用$_GET,如果有问题的页面将要以任何方式修改数据库,或者如果它将变得私有来自数据库的信息。它在任何方面都不安全。在创建执行上述任一操作的页面之前,请阅读 PHP 安全性。

【讨论】:

  • 啊谢谢@DragoonWraith,只是出于好奇,如果我传递了用户ID,我还可以使用url重写将id自动更改为该用户的名称吗?记住可能有 300 个用户?
  • 用户数量无关紧要。我不确定“自动将 id 更改为该用户的名称”是什么意思。除非您的意思是“John-Doe”根本不是 ID,但 ID 是一个数字……我不确定,但我很确定可以做到。
【解决方案2】:

如果您是 PHP 新手并且没有看过任何框架,请查看agiletoolkit。它在 jquery 和 php 之间进行了一些巧妙的集成,这将为您的页面提供漂亮的外观和感觉。它还鼓励您使用 ModelViewController (MVC) 将用于数据库访问和功能的代码部分与纯粹用于网页布局的代码部分分开。

上面提到的 URL 重写选项是相同的,但是当用户登录时,您可以从 $this->api->auth('xxx') 访问用户信息,其中 xxx 是用户中的列表。

该框架需要一些学习,但 PHP 也是如此,而且很容易养成编写 PHP 代码的坏习惯,这意味着随着网站变得越来越大,您会发现维护代码变得更加困难。

【讨论】:

    猜你喜欢
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2011-09-03
    • 2013-01-30
    • 2011-10-30
    • 2012-12-14
    相关资源
    最近更新 更多