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