需要帮助来重写脚本

时间:2013-12-25 12:24:53

标签: php login

我制作了一个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,对于阵列中的每个用户。现在我希望脚本将帐户重定向到其个人页面,以便我可以在页面上写入不同的信息等。

有人可以这样做吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

http://www.examplesite.net/faq

如果用户选择“约”或“帮助”之类的名称会发生​​什么。我想你知道我要去哪里了。

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

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

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

为了管理这些网址,我建议使用.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参数,该参数将是用户名。