需要帮助重写脚本



我做了一个PHP登录脚本,但我想出的最好的结果并不完全是我所期望的。至少有一个非常简单的登录是一个紧急解决方案,但我想让它更好一点。

该脚本将所有人重定向到一个相同的页面。现在我需要重写此脚本,以便它将用户重定向到他们自己的私有页面。请注意,我希望脚本不要太复杂或不同。

这是我到目前为止的脚本:

<?php
    $user_pass_list = array ("user1" => "pass1", "user2" => "pass2");
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    if(array_key_exists($user,$user_pass_list)){
        if($user_pass_list[$user] == $pass){
            header("location: http://www.examplesite.net");
        } else{
          echo "login failed";
        }
    }
?>

如您所见,对于数组中的每个用户,它始终指向 examplesite.net。现在我希望脚本将帐户重定向到其个人页面,以便我可以在页面上写入不同的信息等。

有人能做到这一点吗?

您真正需要做的就是将用户附加到您要重定向到的 URL。

header( "location: http://www.examplesite.net/" . $user );

这是最简单的方法,但它有一个问题。这意味着您的其他一些URL可能会被用户占用!如果一个人的用户名是"常见问题解答"怎么办。这意味着他的用户页面将是:

http://www.examplesite.net/faq

如果用户选择"关于"或"帮助"等名称,会发生什么情况。我想你明白我要去哪里了。

若要避免此问题,可以将用户重定向到如下所示的页面:

header( "location: http://www.examplesite.net/user/" . $user );

现在,您可以使用单独的脚本来处理用户页面。我们走在正确的轨道上!

为了管理这些 URL,我建议使用 .htaccess 文件将请求重新路由到正确的页面。像这样:

RewriteCond $1 ^users/ # Matches URLs starting with users
RewriteCond %{REQUEST_FILENAME} !-f # skip direct requests for files
RewriteCond %{REQUEST_FILENAME} !-d # skip direct requests for directories
RewriteRule ^(.*)$ user_page.php?username=$1 [L] # redirect with GET param

通过 htaccess 中的这些行,任何对http://www.examplesite.net/user/的请求都将重定向到站点根目录中的user_page.php脚本。该页面将收到一个名为 $_GET[ "username" ] 的 get 参数,该参数将是用户名。

最新更新