2012-10-25 18 views
0

用户可以在登录后提交他的数据。在mysql中有两个表:项目,类别。类别有一个字段:user_id,但是在项目表中没有,每个项目都应该属于一个类别。Codeigniter限制插入其他用户的数据

当用户提交一个类别,其罚款,我从会话中获取用户ID,并插入它。 当他提交一个项目时,我为它设置了category_id。

问题是,用户可以简单地重写category_id(javascript,在前端,点击一个类别:设置category_id),并将该项目提交到与他无关的类别。

两个解决方案,我在想什么(但我没有这样做):

当用户插入一个项目,我检查类别关系,如果不是用户的一个,它的退出。

将user_id字段也添加到项目表中(看起来不是一个好选择)。

在这种情况下,什么是好方法或什么是正确/常见的解决方案?

+0

让我得到这一点,你有3个表格,用户,项目和类别。特定用户只能使用特定的类别,并且您希望确保他们不会将项目放入项目表中并且不允许使用他们的类别? –

+0

没错,这就是我想要的!你把它定义得更简单! :) – Iamzozo

+0

那么韦斯利的回答是正确的。 –

回答

1

添加USER_ID栏进入项目表太

如果你已经在分类表user_ID的,你是一定的,每个项目都有一个类别,那么这是不必要的重复,正如你怀疑的那样。

检查类别关系,如果它不是用户的,则退出。

这就是做这件事的方法 - 当你在插入一个项目之前读取类别ID时,请确保该类别属于该用户。简单。我可能只是show_404(),但如果你想显示一个有意义的错误信息,则取决于你。

+0

谢谢!我会继续解决这个问题! – Iamzozo

+0

将user_id添加到项目表现在无论如何,现在我想起它。当你插入一个新的,你仍然需要检查类别ID,看看用户是否有权利。 –

0

为什么不在类别表中创建user_id列。当用户尝试提交条目时,请检查user_id,如果不是该用户将其重定向到任何地方

+0

类别表中有一个user_id列,但用户只能通过category_id将数据插入到项目表中。 – Iamzozo