所以我知道一些html,css,js,php和mysql,但我对安全问题的了解非常有限 对于一个网站,我建立到现在我只使用css display:none(用js触发)来 显示或不显示用户的某些内容,具体取决于他的类型(客户,员工,老板)。 我已经明白,如果你不想冒某个人看到他应该做的事的风险 不(检查页面或其他方式)你不应该发送该信息(从服务器端= php)。 我不确定我的想法是否正确。
如果我有3种类型的用户1)客户2)员工3)老板 我想展示不同的内容(基本上相同的内容,但更多的信息 对于员工,甚至更多的老板来说,他们每个人对网站中存在的5个页面都会有效 每个页面有3个不同的php文件(每种类型的用户一个),在登录过程中为每个用户存储$ _SESSION ['权限']不同的值,并使用该值来决定他在哪个页面可以访问?
例如,起始页面是index.php,当用户根据他的权限级别(从数据库中检索)登录时,他将是 通过使用标题重定向("位置:name_of_page.php");如果他是客户,则为index.php;如果他是雇员,则为index_employee.php 如果他是老板,还可以到index_boss.php。 并且在每个页面中使用以下内容来阻止具有不同权限的用户进入。
index_boss.php
<?php
session_start();
if($_SESSION['authority'] == 2 && $_SESSION['loggedin'] == true) {
?>
page content
<?php
}
else
{
if( $_SESSION['authority'] == 1 )
{
header("Location: index_employee.php");
}
else
{
header("Location: index.php");
}
}
?>
这是解决此问题的正确方法吗? 有没有办法只为所有用户使用1个php文件,并以其他安全方式隐藏或显示某些内容?
答案 0 :(得分:1)
这里适当的解决方案是基于角色的系统。换句话说,创建3个角色并将用户置于这些角色中。您需要的对象是:
使用这些对象创建基于角色的权限系统。希望有所帮助!
答案 1 :(得分:1)
是的,可以在同一页面中执行此操作!就像这样做山雀: 根据: 1)老板2)员工3)客户 的的index.php 强>
<html>// Start the session here
<?php session_start();?>
<head>
//Your configuration
</head>
<body>
<?php
if($_SESSION['authority'] == 1 && $_SESSION['loggedin'] == true) {
?>
Here the Contents of the boss
<?php
elseif($_SESSION['authority'] == 2 && $_SESSION['loggedin'] == true) {
;?>
Here the contents of employee
<?php }else{ ?>
Here the contents of clients
<?php };?>
</body>
</html>
答案 2 :(得分:1)
对于低级别网站,您的实施似乎是正确的。但是,在扩展时,可能很难跟踪网站的每个部分或子部分。
我建议使用类方法(为每个用户创建一个不同的类并使用对象),或者甚至使用一个框架,该框架通常包含在其自己的结构中使用类,以便从您的方面简化实现和编码的过程
您可能希望实现的框架包括CodeIgniter或Laravel(没有特定的顺序) - 请记住,目前,如果检查每次重新加载,您的代码都会执行这些操作 - 在大多数情况下,正确实现的类或框架会自动执行知道该怎么做,反应时间稍微快一点,但更重要的是,更清晰的代码结构和良好的开发基础。