通过表单发送id


Sending the id via form

我创建了一个论坛,人们可以在这里发送问题并获得答案。因此,当用户以我创建的表单回答问题时,我会将问题的id发送到另一个php文件,以将答案存储在正确的位置,如下所示。

<input type="text" value="<?php echo $id_of_question;?>" style="display:none;"/>

但我认为这不是更安全的方法,或者应该有更好的方法。所以,我的问题是我的方法是好还是安全?我怎样才能做得更好?我认为我上面所做的是懒惰的方式:)感谢

它没有错,但使用hidden

<input type="hidden" name="question_id" value="<?php echo $id_of_question;?>" />

input type="hidden"更有意义,但就安全性而言,这并没有什么实际的区别。

虽然用户可以更改字段的值,但您只需要确保提交的值是合理的。

即在最基本的层面上,它是针对存在的问题。

如果你有更复杂的要求(例如,一些问题可能是封闭的,不接受新的答案),那么你需要改变问题也是开放的。

无法强制浏览器提交特定值。必须在服务器上强制执行所有安全措施。

只要您在另一端检查值,就没有安全问题。我至少会检查另一端的值是否是int,比如is_int($_GET['id']),你也可以进一步检查它是否是一个有效的id,但这对你的DB来说会很昂贵。

这真的不是问题的原因是,无论如何,ID有99%的可能性在你的URL中,所以这不像你泄露任何秘密。

不是text,而是hidden:

<input type="hidden" value="<?php echo $id_of_question;?>" />

我认为使用隐藏属性比使用css更好。

<input type="hidden" value="<?php echo $id_of_question;?>" />

我已经在我的网站上使用这个很长时间了。但是也许还有更好的方法。

您也可以使用

<form name="form" action="formSubmitUrl.php?id=<?php echo $id ;?>">
<input type="hidden" name="id" value="<?php echo $id;" />
</form>

并且u可以检查post并获得表单的值。