为用户创建后续页面

时间:2013-04-08 18:24:10

标签: php .htaccess

我的意思是,所以我可以说我有一个用户页面:localhost/blog/profile/ImUser1

我希望为用户提供其他页面,例如: localhost/blog/profile/ImUser1/my_subscribers 要么 localhost/blog/profile/ImUser1/my_posts

如何创建这类页面,例如订阅者页面?

我目前的.htaccess代码:

RewriteEngine On
CheckCaseOnly On
CheckSpelling On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^profile/(.*)$ /blog/profile.php?username=$1 [QSA,L]

这允许我进入用户页面。我需要在URL中使用用户名,因为这就是我如何提取订阅者的信息。

到目前为止,我的PHP结构如下:

if(isset($_GET['username']) === true && empty($_GET['username']) === false){
    $username = $_GET['username'];

    if(user_exists($username) === true){
           echo 'Welcome to '.$username.' page!';
    }
}else{
           echo 'Please enter a username in the URL';
}

如何调整我的PHP和.htaccess以使其正常工作?

1 个答案:

答案 0 :(得分:0)

您可以在profile.php的请求中添加额外的查询字符串变量,以指定模式。像这样:

RewriteRule ^profile/([a-zA-Z0-9_-]+)/?$ /blog/profile.php?username=$1 [L]
RewriteRule ^profile/([a-zA-Z0-9_-]+)/([a-z][a-z_]*)/?$ /blog/profile.php?username=$1&mode=$2 [L]

这样,对/blog/profile/some_user/some_mode的请求会将请求发送到profile.php?username=some_user&mode=some_mode,允许您的PHP脚本检查模式变量并呈现页面或相应地重定向页面。

我已将用户名模式从(.*)更改为[a-zA-Z0-9_-]+,以阻止它向前斜杠,并要求它至少为一个字符长度。我已经使用[a-z][a-z_]*作为模式模式,要求它以小写字母开头,然后允许下划线。