在PHP中为各个用户实现虚荣URL

时间:2010-09-23 07:49:39

标签: php login member

如何在PHP中为每个用户实现虚荣URL?我正在将我的网络应用程序的登录系统实现为Drax LLP登录系统的调整版本。

因此,每个用户都应该能够修改他的个人资料,这个资料最终会显示在他的虚荣网址上..就像xyz.com/user。

任何提示/想法?感谢..

2 个答案:

答案 0 :(得分:0)

这相对简单:您有一个mod_rewrite规则可将www.domain.com/username的请求映射到www.domain.com/users/username之类的内容。

然而,您需要知道禁止成为用户名的内容,因为我认为您将拥有其他顶级网页,例如www.domain.com/aboutwww.domain.com/terms。因此,您不希望人们将aboutterms注册为用户名。

答案 1 :(得分:0)

以下是相关文件的示例:

<强> htaccess的:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

<强>的index.php

<?php
function getWebPath() {
    $location = "";

    // Read the relative URL into an array
    if(isset($_SERVER['HTTP_X_REWRITE_URL'])) { // IIS Rewrite
        $location = $_SERVER['HTTP_X_REWRITE_URL'];
    } elseif(isset($_SERVER['REQUEST_URI'])) { // Apache
        $location = $_SERVER['REQUEST_URI'];
    } elseif(isset($_SERVER['REDIRECT_URL'])) { // Apache mod_rewrite (breaks on CGI)
        $location = $_SERVER['REDIRECT_URL'];
    } elseif(isset($_SERVER['ORIG_PATH_INFO'])) { // IIS + CGI
        $location = $_SERVER['ORIG_PATH_INFO'];
    }

    return $location;
}

$location = getWebPath();

print_r($location);

上面的函数应该成为前端控制器类中的一个方法。您只需要从$ location中减去基本路径,这样您就可以使用虚拟路径了。然后你可以做任何你想做的事 - 例如只需拆分'/'然后按路径工作,将每个余数传递给下一个控制器,具体取决于URI。您还可以使用正则表达式编写更复杂的路由规则(Django和其他一些框架都可以这样做。)

例如: /简档/ hardik988

将传递给负责'profiles'的控制器,然后决定如何处理路径的其余部分。它可能会查找用户名并显示相应的模板。