【问题标题】:Can a Directory alone load specific query on a page?目录可以单独在页面上加载特定查询吗?
【发布时间】:2012-05-04 02:58:51
【问题描述】:

在 facebook 和许多其他网站上,您会看到诸如 www.facebook.com/username 之类的 URL。像这样的 URL 是如何从 MySQL 数据库中实际加载用户信息的?它显示的实际文件是什么?我会假设它所指的每个用户都没有真正的文件夹。如果我的问题没有意义,您至少可以为我指出正确的方向来通过 PHP 设置这样的东西吗?

再次,我希望 example.com/username 加载我的用户个人资料。这是如何工作的?

【问题讨论】:

    标签: php url redirect directory


    【解决方案1】:

    通过使用 apache 的 .htaccess 文件来管理 RewriteEngine,您的所有页面都可以通过 index.php 文件汇集。在确认请求的页面实际上不是您打算成为网页默认部分的页面后,您可以使用下面的代码来查找用户帐户。如果未发现用户帐户,则很可能正在访问的页面只是一个 404,然后您可以将其重定向到一个包罗万象的场景

    .htaccess 文件

    RewriteEngine on
    RewriteBase /
    RewriteRule !\.(xml|js|ico|gif|jpg|png|css|swf|php|txt|html|otf)$ index.php
    

    在确认请求页面后运行的 php 逻辑,与联系我们页面或最终用户尝试访问的任何典型网页不同。

    if(preg_match("/^\/(?P<username>[^\/]*)/", $_SERVER['REDIRECT_URL'], $matches)) {
        $result = mysql_query("SELECT * FROM users WHERE username = '" . mysql_real_escape_string($matches['username']) . "'");
    
        if($user_record = mysql_fetch_row($result)) {
            echo "DO WHATEVER YOUR HEART CONTENTS HERE :)";
        } else {
            header("Location: error-404.php");
        }
    }
    

    【讨论】:

    • 这非常有用。谢谢你。使用 .htaccess 似乎有很多可能。我肯定需要花更多的时间来了解它。
    【解决方案2】:

    它都是通过数据库动态加载的。例如,我的 Facebook 名称是“benroux”。在 facebook 的用户表中,会有一个独特的列,比如说,昵称。当我访问 Facebook 时,他们正在解析路径信息并实质上以以下形式调用查询:

    select * from user where nickname = "{$nickName}"
    

    现在,这是一个过于简化的示例,但我希望它能让您了解这里发生了什么。关键是有两种类型的url vars,facebook.com/pagename.php?id=blah 和restful style path info vars facebook.com/pagename/var1/var2/

    如果您希望example.com/benroux 加载我的用户页面,您需要让您的 index.php(我将使用 PHP)加载路径信息(http://php.net/manual/en/function.pathinfo.php),然后按照我的描述查询数据库以上。

    【讨论】:

    • 谢谢,这并不能完全解决我的问题,但肯定会让我走上正确的道路。我将更多地研究 pathinfo 函数,看看我是否可以解决这个问题。我已经用用户和个人资料页面等设置了我的数据库。我只是希望能够通过更用户友好的 URL 将他们定向到那里的个人资料。
    【解决方案3】:

    尝试

    print_r($_SERVER);
    

    你会得到那个参数。然后你只需要拆分它们。 类似的东西

    $directory = $_SERVER['REQUEST_URI'].split('/')[1];
    

    所以,将$directory 放入查询中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多