搜索结果,按访问权限过滤

时间:2011-06-06 19:38:44

标签: php mysql search

我已成功搜索我的客户主数据库,并搜索整个客户主数据。

我有已登录的代理正在进行搜索。客户帐户与代理相关联。我需要将搜索限制为与代理关联的客户(已登录的用户)。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您需要将数据和sql语句的范围限定为当前用户。

例如,假设您有一个表销售和一个表用户。在功能上,每个销售属于用户。因此,sales表上应该有一个外键,例如user_id,它为每个销售行标识该销售所属的users表中的行。

然后,当您搜索销售时,您应该始终添加“where user_id =?”作为你的sql语句的第一个过滤器,在其他动态过滤器之前,替换?使用当前登录用户的id。

以这种方式,搜索销售表时的所有过滤条件将首先限定为当前登录用户。如果过滤条件会以其他方式获取其他人的销售行,则由于user_id过滤器,它将不再这样做。

如果除了特定于代理的代理之外还有与所有代理相关的销售,它们可能会有一些标记,或者agent_id为0或者可能为NULL,或者某些其他字段将它们标识为可由所有人搜索。这可以很容易地用到SQL语句中的第一个WHERE片段,并使用适当的括号将它们保持在一起:

WHERE (agent_id = ? or agent_id IS NULL) AND other dynamic filter etc
WHERE (agent_id = ? or agent_id = 0) AND other dynamic filter etc
WHERE (agent_id = ? or all_agents_flag = 1) AND other dynamic filter etc

答案 1 :(得分:1)

好像你需要LEFT JOIN。为什么不LEFT JOIN表中有问题的表。例如:订单,sales_agents,客户......

可能只是工作。