php通过静态html页面访问检查

时间:2014-02-20 03:10:55

标签: php session

我想限制用户访问其特定数据。 该网站是所有静态html与至少的PHP来检查用户是否有权限。 网址格式是     somesite.tld /的public_html /英语/用户/ 1 / account_overview.php?ID = 1 该网站提供某些语言版本。网址的“英语”部分将根据所选语言(法语,德语,荷兰语......)而改变。 'english'部分是public_html中的文件夹。 'user'部分是'english'中的文件夹,'1'是'user'中的文件夹。

我有一个$ _SESSION ['userid']。 此时php脚本检查$ _GET ['id']是否存在以及$ _GET ['id']是否等于$ _SESSION ['userid'] 但只是将网址更改为     somesite.tld /的public_html /英语/用户/ 2 / account_overview.php?ID = 1 如果您使用userid = 1登录,则不会限制对“2”文件夹的访问。

当有人手动修改网址时,如何停止显示数据?

2 个答案:

答案 0 :(得分:1)

我建议你完全避免这种情况。而不是使用$ _GET变量来确定用户是否有权查看帐户,为什么不使用一个使用会话变量的PHP检索脚本来获取用户的帐户。

它会是这样的:

您将所有帐户文件存储在受保护的目录中,例如:

/accounts/

然后在你的PHP文件中:

session_start();
include($_SERVER["DOCUMENT_ROOT"]."/accounts/".$_SESSION["userid"].".html");

这将完全避免这个问题。通过将目录读取保护到除PHP用户以外的所有目录,可以防止人们在未登录的情况下访问文件。然后您没有任何松散的$ _GET变量,并且所有帐户信息都是安全的。

答案 1 :(得分:0)

另一种方法是在AccountController或account.php中,

if($userId != $superAdminId || $userId != $_SESSION["userid"]){
    //set error header
    //show error 401
}