目录是否可以单独加载页面上的特定查询?

时间:2012-05-04 02:58:51

标签: php url redirect directory

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

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

3 个答案:

答案 0 :(得分:0)

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

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

现在,这是一个简单的例子,但我希望它可以让你了解这里发生了什么。关键是有两种类型的URL变量,facebook.com/pagename.php?id=blah和宁静的样式路径信息变量facebook.com/pagename/var1/var2/

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

答案 1 :(得分:0)

尝试

print_r($_SERVER);

你会得到那些参数。然后你只需要拆分它们。 像

这样的东西
$directory = $_SERVER['REQUEST_URI'].split('/')[1];

所以,将$directory放入查询

答案 2 :(得分:0)

通过使用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");
    }
}