Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 目录能否单独加载页面上的特定查询?_Php_Url_Redirect_Directory - Fatal编程技术网

Php 目录能否单独加载页面上的特定查询?

Php 目录能否单独加载页面上的特定查询?,php,url,redirect,directory,Php,Url,Redirect,Directory,在facebook等网站上,你可以看到www.facebook.com/username等URL。像这样的URL实际上是如何从MySQL数据库加载用户信息的?它显示的实际文件是什么?我假设它所指的每个用户实际上都没有一个文件夹。如果我的问题没有意义,你能至少告诉我正确的方向,通过PHP设置类似的东西吗 同样,我希望example.com/username加载我的用户配置文件。这是如何工作的?它都是通过数据库动态加载的。例如,我的Facebook名字是benroux。在facebook的用户表中,

在facebook等网站上,你可以看到www.facebook.com/username等URL。像这样的URL实际上是如何从MySQL数据库加载用户信息的?它显示的实际文件是什么?我假设它所指的每个用户实际上都没有一个文件夹。如果我的问题没有意义,你能至少告诉我正确的方向,通过PHP设置类似的东西吗


同样,我希望example.com/username加载我的用户配置文件。这是如何工作的?

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

select * from user where nickname = "{$nickName}"
现在,这是一个过于简化的示例,但我希望它能让您了解这里发生了什么。关键是url变量有两种类型:facebook.com/pagename.php?id=blah和restful风格的路径信息变量facebook.com/pagename/var1/var2/

如果你想让example.com/benroux加载我的用户页面,你需要使你的index.php我将使用php加载路径信息,然后像我上面所描述的那样查询数据库。

尝试

print_r($_SERVER);
您将获得该参数。然后你只需要把它们分开。 差不多

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

因此,将$directory放入query

中,通过使用apache的.htaccess文件来管理重写引擎,您的所有页面都可以通过index.php文件导入。在确认请求的页面实际上不是您希望成为web页面默认部分的页面后,您可以使用下面的代码来查找用户帐户。如果没有发现用户帐户,那么很可能正在访问的页面只是一个404,然后您可以将其重定向到一个catch-all场景

.htaccess文件

RewriteEngine on
RewriteBase /
RewriteRule !\.(xml|js|ico|gif|jpg|png|css|swf|php|txt|html|otf)$ index.php
确认请求页面后运行的php逻辑与contact us页面或最终用户试图访问的任何典型网页不同

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");
    }
}

谢谢,这并不能完全解决我的问题,但肯定会让我走上正确的道路。我将进一步研究pathinfo函数,看看是否可以实现这一点。我已经有我的数据库设置与用户和个人资料页等。我只是想能够直接他们到那里的配置文件与更用户友好的网址。这是非常有用的。非常感谢。我觉得使用.htaccess有很多可能。我肯定需要花更多的时间来了解它。