Php 目录能否单独加载页面上的特定查询?
在facebook等网站上,你可以看到www.facebook.com/username等URL。像这样的URL实际上是如何从MySQL数据库加载用户信息的?它显示的实际文件是什么?我假设它所指的每个用户实际上都没有一个文件夹。如果我的问题没有意义,你能至少告诉我正确的方向,通过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的用户表中,
同样,我希望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有很多可能。我肯定需要花更多的时间来了解它。